2010-12-12 5 views
5

単純なコマンド(再生、一時停止、次のトラックなど)で.netサービスを利用しています。これは、ユーザーのワークステーションに独自の資格情報(FooServiceUserなど)を使用してインストールされます。ユーザーにサービスにコマンドを送信できるアプリを提供したい場合は、これを行うための最も軽い方法は何でしょうか?私は、単一のワークステーションから同じワークステーション上で実行されているプロセスにコマンドを送信することを忘れないでください。コマンドは非常に簡単です。また、アプリはサービスからステータスを受け取る必要があります。一時停止してトラック21を再生します。2つの.netアプリケーションが互いに話すのに最も軽い方法は何ですか?

簡単にすべきでしょうか? WCFは複雑で過度に見えます。 SOの誰もが.netのリモーティングが悪いと言っています。私はMSMQをインストールしたくありません。ソケットのすべての言及は否定的なスコアを取得します。

+1

「軽量」を保つために何が「重量」ですか?デプロイメントペイロードのサイズ? LOC?学習曲線? – AakashM

+0

光は、学びやすく、理解しやすく、間違っていることがほとんどないことを意味します。私はC++ win32から移行しています。名前付きパイプの均等物は私が探していたものです。代わりに、私はおそらく必要のない技術に関する膨大な量の書籍を見ています。 –

+0

申し訳ありませんが、私はメモリフットプリントが足りません。 –

答えて

6

完全で使いやすいソリューションは、WCFをお勧めします。このアプリケーション用のメモリチャネルプロトコル(ICP)をサポートしています。

「軽量」と呼ばれるものが残ります。 WCFのホスティング部分は、約5行のコードで実行できます。すべてのクライアント側コードが生成されます。では、使用するアセンブリの数とサイズ(既にインストールされている)、または無視する機能の量に本当に気をつけますか?

WCFを使用してください。
これにより、必要に応じてソケットやPC間で容易にスケールアウトすることができます。

+2

WCFは、一般に実装するのが非常に簡単です。 – jle

+4

"WCFのホスティング部分は、軽量を変換しない約5行のコードで実現できます。 – Aliostad

+0

@aliosta、多分、何ですか? –

6

私は絶対リモーティングが取って代わられると述べており、結合名前付きパイプでWCFを使用しますが、今はおよそ軽量性を話していることを、私はリモーティングは、軽量であり、2つのAppDomain間で通信するのでどこにも行かれていないと言わなければならないでしょうがリモーティングによって通常、 。実際に有効の選択です。

は、WCFの柔軟性を考慮すると、と言ったので、私はまだお勧めします - それはですが、重く分厚いおよび方法がを煮。

+1

私はRemotingがWCFに同化された(Borgスタイル)と言っていますが、あなたは本当に時代遅れの技術の使用を主張していますか?まさに「軽量」のメリットでしょうか? –

+0

IpcChannelはRemotingの名前付きパイプチャネルです –

+1

WCFに組み込まれている抽象的な要素はあまりにも重く過ぎています。そのチャンネルのスタックは非常に多くのものでいっぱいです。 WCFが裕福であると呼びかける人もいます。 – Aliostad

2

アプリケーションがWindowsサービスと同じマシンにある場合は、ServiceController Classをインスタンス化してそのExecuteCommandメソッドを使用できるため、おそらくリモーティング、Webサービスなどの使用について心配する必要はありません。

+0

興味深い、私はあなたがそれを行うことができたかわからなかった...それは非常に限られているようだ(コマンドに引数を渡す方法、コマンドの数が制限されていない...) –

+0

セキュリティレベル?すべてのユーザーは、「再生」または「一時停止」を送信できますが、サービスを停止または開始したり、他のサービスに影響を与えることはできません。 –

+0

いくつかの状況では、パラメータの欠如とコマンド数の設定が圧倒的であると言われていますが、他の状況にはうまく収まります。 Windowsサービスはアクセス制御リストによって処理され、ファイルとディレクトリも保護されます。サービスを開始および停止できるようにするには、ユーザーは開始および停止権限を持っている必要がありますが、開始、停止、一時停止などのコマンド番号を送信することをお勧めします。コマンドを送信します。 – N0Alias

1

WCFは、コードの行がどのように通信を行う必要があるかという点で軽量です。 実行速度とメモリ消費量の面で軽くない。 WCFは非常に使いやすいです。しかし、その拡張可能なアーキテクチャにより、適切なクラスを見つけるのが少し難しくなることがあります。

プレーンソケット操作は、コーディングの面では軽量ではありませんが、実行時の操作に関しては軽量です。チャンネルを開いたり閉じたりするときに、あらゆるビットを完全に完全に制御できます。

関連する問題