質問: C#でネットワーク上の別のPCのサービスの状態を取得する事は可能でしょうか? お手数ですが、ご教授頂ければと思います。 それでは、宜しくお願い致します。
回答: 可能/不可能は、操作する側の問題よりも、操作される側のプログラム(すなわち、質問で言われている「別のPCのサービス」)の問題です。 [他プログラムの操作] ネットワークごしで無い場合も含めて、人の作ったプログラムを自分で作るプログラムで操作するのは無理です。基本的には。 なお、条件によっては可能な場合もありますが、道徳的にやってはいけない行為です。 「えっ! Webサイトなら可能でしょう」と思われるかも知れませんが、それは、ユーザー操作による物で、プログラムからの操作では無いです。 人の作ったプログラムを操作すると、クレジットカードの暗証番号を盗むなど、悪用に使われるからです。 しかし、逆に外部から操作されることをあえて望んでいるプログラムもあります。 すなわち、アプリケーション自身が持つ機能をAPI(外部公開機能)として公開しているプログラムです。 [Webサービス] そこで、インターネット上で、プログラムの機能を外部公開する仕様が作られました。 そのために作られたプロトコル(通信の規約)が、SOAPです。 そして、そのSOAPを使って、機能を外部公開するための実際の機能がWebサービスです。 Webサービス [クラウドコンピューティング] 上記参照先の通り、2002年(以降)の際に、Webサービスは、環境が調っていないかったため、普及と言う意味では失敗しています。 問題点と対策は、以下を参照。 しかし、今は64ビット機も増えて環境に恵まれ、また、付属の技術(セキュリティ機能、トランザクション機能等)も調って来たので、ここ最近(2010年後半から)リベンジの雰囲気が高まっています。 参照先の通り、まだクラウドは、仮想化技術と呼ばれる技術で、サーバーの貸し出しをするレベルの物が大半です。 しかし、本来の目的は、ネット経由で様々なサービスをエクスポート(外部公開)するものです。 よって、第2幕、第3幕が始まれば、質問で言われている状態の取得が可能なサービスも増えてくると思います。 [WCF] C# と言う言語は、Webサービスの誕生に伴い誕生した言語のような物で、本来は一番の目玉の機能です(前述の理由で、忘れられている傾向ですが---)。 しかし、.NET Framework 3.0以降に加わったWCFと言う機能で、Webサービスを作る環境が、前よりも恵まれています(WCF は、Webサービス以外も含めた.NET系サーバー機能の総合機能)。 以下を参照して下さい。 あと、単純に通信機能の質問でしたら、上記のTCP/IP での通信も良いと思います。