4

この質問をする方法さえわかりませんが、試してみます。

製造ラインのセンサーからラインの状態を示す値を読み取る c# のプログラムがあります。これらの値は 500 ミリ秒ごとに更新されます。これが行われる4つの行があります。ネットワーク経由でこれらの値にアクセスできる「概要」プログラムを書きたいと思います。これにより、工場がどのように機能しているかを簡単に要約できます。私の質問は、ライン上の c# プログラムからリアルタイムで c# 概要プログラムに値を取得するにはどうすればよいですか?

私の質問があまり意味をなさない場合は、お知らせください。言い換えてみます。

ありがとう!

4

4 に答える 4

3

いくつかのオプションがあります:

  • MSMQ

メッセージを MSMQ ( Microsoft Message Queuing ) に書き込みます。これは、(オプションで) マシン間でメッセージを転送するための永続的で高速なストアです。ほぼリアルタイムで他のアプリのメッセージが必要だと言うので、大量の受信メッセージを処理するためにそのアプリにロジックを記述したくないため、MSMQ を使用することは理にかなっています。MSMQ を真ん中に置いて、必要なもの、そして最も重要なことはできるときに取り出してください。

  • WCF

他のアプリは、データが利用可能になるたびにリアルタイム アプリから呼び出すことができる WCF サービスを公開できます。エンドポイントは net.tcp 経由である可能性があります。つまり、特に小さなメッセージを送信する場合は、オーバーヘッドが低くなります。

他のオプションには、前に述べたものが含まれます: データベース、ファイルなど。したがって、さまざまなオプションから選択できます。

于 2012-06-17T16:52:26.697 に答える
2

データベース。値をデータベースに入れると、他のアプリがそれらを同じデータベースから引き出します。これは、この問題に対する非常に一般的な解決策であり、新しいシナリオの世界を切り開きます。

参照:関係データベース

于 2012-06-17T16:58:43.593 に答える
2

名前付きパイプ ( http://msdn.microsoft.com/en-us/library/bb546085.aspxを参照) を使用して、2 つのプロセス間で高速に通信することができます。

于 2012-06-17T16:53:27.310 に答える
2

それは多くのことに依存します、と私は言います。まず第一に、「概要」アプリケーションにとって興味深いのは各行の最後の値ですか、それとも行の状態を判断するために複数の値が必要ですか、それとも値の履歴が必要ですか?

最後の値のみに関心がある場合は、この値を概要アプリに直接伝えます。他の人が示唆しているように、ここには多くの可能性があります。

  • TcpClientを使用した生の TCP (少し低レベルかもしれません)。
  • 概要アプリケーション (おそらく Web アプリケーション) で http エンドポイントを公開し、このエンドポイントに新しい値を投稿します。
  • WCFを使用して、オーバービュー アプリケーションでいくつかのエンドポイント(名前 付きパイプnet.tcphttpなど) を公開し、各クライアント アプリケーションからこのエンドポイントを呼び出します。
  • MSMQ を使用して、各クライアントがメッセージをエンキューし、概要アプリによって取得されます (WCF でも直接サポートされます)。

値の履歴が必要な場合、または回線の状態を判断するために複数の値が必要な場合は、データベース ソリューションを使用します。次に、もう一度選択する必要があります。各クライアントがデータベースに書き込むか、各クライアントが概要アプリに投稿し (上記の通信手段のいずれかを使用)、概要アプリがデータベースに書き込むかです。

状況に対する制約がこれ以上わからない場合、これらのいずれかを決定するのは困難です。

于 2012-06-17T17:03:36.900 に答える