2

注文を配送するための Web ベースのピッキング/梱包ソリューションがあります (asp.net/c#)。注文はブラウザで梱包済みとしてマークされ、すぐにラベル情報がデータベースに追加され、次の部品の準備が整います...

ラベルの印刷は Windows アプリケーション (C# で記述) を介して行われますが、ブラウザーにラベルを自動的に印刷させる方法が見つからなかったため (つまり、ユーザーが印刷/OK などをクリックする必要はありません)、この方法で行われました。 )

問題:

Windows アプリケーションは 10 秒ごとに (変更される可能性があります) ポーリングして、そのピッカー/パッカーに新しいラベルがあるかどうかを確認します。ここで、ブラウザーがラベル アプリケーションと通信できるようになれば、ピッカー/パッカーが [出荷準備完了] をクリックしただけでラベル データが作成されるため、ポーリングは不要になります。

ポーリング プロセスによって取り出されるデータは膨大ではありませんが、ピッカー/パッカー ステーションを追加すると、ポーリング プロセスが Web サーバー/データベースに影響を与えるのではないかと懸念しています (すべてのステーションがポーリング)。また、ピッカー/パッカーはラベルを待つのを待ちたくないので、ポーリング時間を延長することはできません (どちらかといえば、できるだけ早くしたいのですが)

ソリューション?

したがって、理想的には、ブラウザとアプリケーションの間で通信する方法が必要です (可能であれば)。または、ポーリングの必要性をなくす方法。おそらく、新しいラベルが追加されたときにサーバーがアプリケーションにメッセージを送信できるようにする、Comet に似たものです。

理想的には、特定のブラウザーを必要としないソリューションです。しかし、これはあまりにも多くを求めている可能性があります。

長期的な解決策は、Web ベースのピッキング/パッキング ソリューションをラベル アプリケーションに移行することですが、それには多くの作業が必要です。

それが明確で、あまりにも冗長でないことを願っています。ここに他の詳細を追加できるかどうか教えてください。前もって感謝します。

編集

アイデアとして websocket を検討しています。どんなアドバイスでも大歓迎です!

アップデート

すべてのコメントに感謝します。私は今、問題を解決する方法についていくつかのアイデアを持っています:

  1. ウェブソケット。システムに簡単にアクセスできない (地理的な距離) ため、ファイアウォールの問題で問題が発生する可能性があります
  2. アプリケーションからブラウザーの Cookie を読み取ります。可能な解決策http://www.codeproject.com/Articles/330142/Cookie-Quest-A-Quest-to-Read-Cookies-from-Four-Pop。これは、ウェアハウスで使用されているすべてのブラウザーをカバーします。ローカル Cookie の値をポーリングして、新しいラベルが作成されているかどうかを確認し、それらをダウンロードできます。したがって、データベース サーバーでのポーリングはありません。
  3. ActiveX コントロール。IE に限定されており、これを各 PC にインストールすると、セキュリティやセットアップの問題が発生する可能性があります。
  4. コードはそのままにしておきます。データベース サーバーの負荷が大きすぎるか、または適切かを判断します。
4

4 に答える 4

1

C# アプリケーションでローカル WebSocket サーバーを作成し、ブラウザーをそれに接続して、印刷する必要があるデータを送信することができます。

ただし、これが必要かどうかはわかりません。ご覧のとおり、アプリケーションにグラフィック データを渡す必要がありますが、JavaScript だけを使用してこれを行うのは非常に難しい場合があります。

于 2012-07-21T17:52:22.100 に答える
1

Web アプリケーションとデスクトップ アプリケーション間の通信を実現する適切な方法は、両方のアプリケーションが通信するサーバーを経由することです。

任意の Web サーバーを取得して (たとえばnode.js nodejs.org、サーバー上の Web アプリに使用するのと同じ JavaScript を使用できるようにする)、それとやり取りすることができます。デスクトップ アプリからサーバーと通信する方法は、そのテクノロジによって異なります。ただし、すべての言語には、http 通信を行う何らかの方法がありますSOAP

または、作成を試みることができます。
両方のアプリは、を使用してサーバーと通信しますsocket.io次のプロジェクトからコードを借りることができます。

于 2013-06-24T02:57:51.017 に答える
0

MSMQ (または選択したキューの実装) を作成し、MSMQ をポーリングする Windows アプリケーションで WCF サービスをホストします。

ASP.NET アプリケーションに関連情報をこのキューに書き込んでもらい、この情報を取得する Windows アプリの WCF サービスがそれをどう処理してラベルを印刷するかを認識できるようにします。

キューについて言及する理由は、信頼性のためです。Windows アプリが何らかの理由でダウンした場合、キューは少なくとも保持され、Windows アプリケーションが元に戻るのを待ちます。

多少のポーリングが含まれますが、非常に高速でほとんど無視できます。実装は NetMsmqBinding で自動的に行われ、すべて処理されます。構成するだけです。

MSMQ 以外のキューを使用する場合、NetMsmqBinding を引き続き使用できるかどうかはわかりません。独自のキューを作成する必要があるかもしれません。

于 2012-07-21T18:06:14.577 に答える
0

よくわかりませんが、あなたのアプリケーションは、これらの新しいラベルを印刷するためにファイルシステムをポーリングしているようです? アプリケーションでFileSystemWatcherを使用することを検討しましたか? ディレクトリを監視し、何か新しいことが通知されるように設定できます。

于 2012-07-21T18:49:49.253 に答える