2016-04-06 28 views
2

私は問題があり、C#での経験はあまりないので、多くの研究を行いました。2つのC#アプリケーション間の通信

私は2つのアプリケーションC#を作成する必要があります。最初のアプリケーションはWindowsフォームであり、2番目はバックグラウンドで実行されるため、アプリケーションのバックグラウンドと通信する必要がある(POS)タイムアウトなどの問題にWebサービスを使用したくないので、誰でもこのタスクを実行するためのアイディアを手伝ってくれるでしょうか?

バックグラウンドでのアプリケーションはちょうど1つであり、それと通信するPOSアプリケーションは多く(n個のアプリケーション)であることに言及することが重要です。

+0

WCFサービスは、メッセージが迷子にないことを確認するためにMSMQを使用することができます。 Webサービスをあまりにも早く除外しないでください –

答えて

2

プロセス間通信には多種多様な方法があります。質問がとても一般的なので、私はいくつかのより一般的な方法を指摘します。

  • バックグラウンドプロセスは、DBおよびPOSシステムを更新してDBにクエリして、必要なものを取得するWindowsサービスです。バックグラウンド・プロセスが同じDBから読み取る場合でも、POSピースがピックアップできるように「完了」情報を持つ別のテーブルを持つことができます。 DBの代わりにファイルを使用してこの完成した結果も保存できますが、ほとんどの人はDBを好みます。
  • WCFチャネルを使用して、POSピースとバックグラウンドプロセス間の通信を確立することができます。
  • バックグラウンドプロセスをWebサービスに変換して、POS部分をXMLで通信させることができます。タイムアウトの問題は問題ではないと私は考えています。あなたはこのタイムアウトの問題により、このオプションを使用しないようになる原因をよりよく説明しなければなりません。
  • 全体をWebサイトに変換することができます。POSは単にブラウザになります。
  • TibcoやMQなどのバスを使用してデータを渡すことができます。
  • また、旧式のTCPソケットを使用することもできます。

最も好ましい方法は、通常、あなたの制約に応じてウェブサーバーまたはウェブサイトの方法です。

1

通常、このようなメッセージキューを使用します。これらは、懸念の軽減とアプリケーション間の結合の明確な分離を確実にするためのコンポーネントであり、一部の発行者がメッセージを受信する(したがって、発行者はそれ以上の責任を免れます)、メッセージを一部の加入者にプッシュすることを意図しています。 https://www.rabbitmq.com/

(彼らは非常に多くのユースケースを扱うようRabbitMQの(および他の建売フレームワーク)は、時には新しいアプリケーションプログラマのために困難なことができますのでご注意書きのが基本的な考え方:。

RabbitMQのが人気のフレームワークでありますあるアプリケーションからキューに移動し、他のアプリケーションのキューから読み込むことは本当にここの鍵です...あなた自身の小さなユーティリティを学習体験として実装することは自由ですが、そのようなものを使用して快適にしてください)

0

あなたがウェブAPIを使用しようとする可能性があり (SOAPプロトコルに基づいて)ウェブサービスを、使用しない場合。このようにして、残りのベースのインターフェイスをjson(コンピュータ間のjsonストリーミングはxmlストリーミングより速い)でビルドできます。

私は、次のリンクはあなたに役に立つことができると思う:

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/using-web-api-with-aspnet-web-forms

関連する問題