2

私はこのデザインにアプローチするための最良の方法を見つけようとしています...これが私がやろうとしていることの背景です:

イーサネット経由でコンピューターにデータを送信するシンプルなデジタルI/Oコントローラーがあります。このデータをイーサネット経由で受信できるプログラムがあります。このデータをGUIで表示する別のフロントエンドアプリケーションが必要です。イーサネット経由でI/Oデータを取得するプログラムと、これをフロントエンドとして表示するプログラムをインターフェイスするための最良の方法を見つけようとしています。このインターフェイスは、コンピューターが起動するたびに実行され、バックグラウンドでI/Oを常にポーリングする必要があります。

Windows Communication Foundation(WCF)について読んだことがありますが、これはこれを行うための良い方法のようです。Windowsサービスは静かにI/Oをポーリングし続けるため、WCFインターフェイスに接続するクライアントはこのデータをGUIに表示できます。

私はこれについてすべて間違っていますか?これは物事を行うための良い方法のように見えますか?フロントエンドクライアントはどのようにしてWCFサービスからデータを取得しますか?

前もって感謝します。

4

1 に答える 1

4

これはまさに私が行った方法です。WindowsサービスでWCFサービスをホストしています。Windowsサービスがプロセスです。WCFサービスは、作業が行われる場所です。

私の場合、WCFベースのCollectionServiceはほとんどの時間スタンバイ状態です。WCFプログラミングモデルを使用するとコレクターを簡単に開始および停止できるため、WCFを使用してコレクターを開始および停止します。ただし、コレクターからUIにデータを取得するには、WCFではなくTCPソケットを使用します。WCFにはストリーミングモードがあることは知っていますが、(1)使用したことがなく、(2)この方法でWCFを使用するとある程度のオーバーヘッドがあると思います。ソケットは私にとっては単に快適なフォールバックですが、WCFを機能させることができると思います。

始めたばかりの場合は、C#を使用してWindowsサービスを起動して実行するために、これら2つの回答を参照できます。そこから、Windowsサービスのとコールバックでそれぞれを作成しServiceHostて閉じる必要があります。OnStart()OnStop()

WCFを初めて使用する場合は、このSOの質問をご覧ください。

WCFの最新情報を学ぶための優れた簡単な本/チュートリアル

もう一つ。これに関する作業の過程で、特定のことが発生したときにWCFサービスがUIにイベントを提供するようにしたい場合があります。たとえば、受信したバイト数をUIに定期的に通知するイベントを提供できます。このために、WCFの神の1人であるJuvalLowyによるこの記事を強くお勧めします。

一方向のコール、コールバック、およびイベントについて知っておくべきこと

彼のPublish-SubscribeFrameworkは、彼のWebサイトIDesign.netで、他のいくつかの実用的なWCFの例とともに無料で入手できます。

お役に立てれば。

于 2011-03-12T05:12:22.633 に答える