2012-01-23 31 views
5

私はC#を使用して作成した2つのWindowsサービスを持っています。Windowsサービス間の通信方法

2番目のWindowsサービスで関数の1つを呼び出すサービスが必要です。

私はそれをどのようにすればよいですか?

EDIT:

問題がある私は(私はむしろサービスのプロセスがあまりにも良いですようにそれらを必要としません)実行中のアプリケーションに持っているが、私は、この2アプリケーションを通信するために、この2アプリケーション必要こと同じサーバーにあります。

+0

アプリ間通信については[関連記事](http://stackoverflow.com/a/86286/175679)を参照してください。 – SliverNinja

+1

どのような種類のデータですか?メッセージ数平均メッセージサイズとは何ですか? – sll

答えて

3

あなたが使用できるIPCメカニズムの束があります。リモーティング、TCP/HTTPリスナーなど

いずれかのサービスは他のサービスの外で役立つ機能を提供していますか?

は、より多くのアイデアのために、このスレッドを参照してください。 IPC Mechanisms in C# - Usage and Best Practices

EDIT:ダヴィデPirasのが指摘したように、WCFが利用可能である場合に使用するため 、それを使用することを検討してください。人生を簡素化します。 WCFの設定ファイルは時には苦痛になることもありますが、それに素晴らしいツールがあります。 http://msdn.microsoft.com/en-us/library/ms732009.aspx

+2

可能な限り、リモートとHTTPはWCFのために避けるべきです –

2

サービスは同じ箱にありますか? .NET 4をお持ちですか?可能な限り速いモードのmemory-mapped filesを強くお勧めします。

同じボックスにあるが、.NET 4を使用していないか、同種のMicrosoft Windowsネットワークにある場合は、named pipesが動作する可能性があります。もっと重要な点は、WCF over a named pipeです。

4

私は他のすべての答えが正しいが、少し複雑すぎる(WCFは大したことである)スケーラビリティがないことを発見した(メモリと名前付きパイプは同じサーバー上でのみ機能する)。私はDotNetMQメッセージングシステムをお勧めします。使いやすく、配備が簡単で、異なるサーバー上で実行されているプロセス間でも通信できます。

関連する問題