2

パフォーマンス、ディスク、およびメモリ情報を収集して EventLog に書き込む Windows サービスを C# で作成しました。ネットワークサービスとして有効です。私がやりたいことは、この情報を遠隔地から収集できるようにすることです。このサービスはさまざまなクライアント マシンで実行されます。この情報を定期的に (1 日に 1 回) 取得し、データベース テーブルに格納したいと考えています。ネットワーク経由で Wi​​ndows サービスを照会する方法について混乱しています。言い換えれば、サービスを「ネットワークサービス」にする正確な理由は何ですか?

サービスがデータベースに直接接続してこの情報を書き込むことは望ましくありません。しかし、リモート マシンから開始し、情報を取得して、その情報をデータベース テーブルに書き込みたいと考えています。

ネットワーク化された Windows サービスを説明するチュートリアルは見つかりませんでした。それらのほとんどは、イベント ログへの書き込みについて説明していましたが、私はそこに行き詰まっています。

これは実行可能ですか、この種の作業がどのように行われるかについて何か提案はありますか?

4

3 に答える 3

2

WCF Web サービスに移行する他の提案がオプションでない場合は、リモート処理に頼ることなく、Windows サービスでカスタム コマンドを使用して割り当てることができます。

事実上、128 と 256 の間の整数を送信し、データベースや Web サービスにすべての情報を送信するなど、コマンドを受信したときに必要なコードをサービスに実行させることができます。

サービスがクライアント マシン上でうまく処理されている間、必要なときに必要なときに自分の側から開始することができます。

例については、このコード プロジェクトの記事をご覧ください: C# での基本的な Windows サービスの作成

OnCustomCammandメソッドを見てください。

Microsoft の別の記事の例を次に示します。Windows サービスとの通信

于 2009-05-14T09:01:18.770 に答える
1

WCFを使用して、何らかの形式のRESTful Web サービスを有効にします。

MSDNの wcf-getting-startedを参照してください。特に、 A Guide to Designing and Building RESTful Web Services with WCF を参照してください。

于 2009-05-14T07:27:14.473 に答える
1

私の知る限り、「ネットワークサービス」は、「ローカルサービス」または「システム」アカウントとは異なる権限セットを持つ「ネットワークサービス」アカウントで実行されていることを意味します。

ただし、サービスをネットワーク上の別のマシンに公開するには (サービス スナップイン - services.mscを介して取得する標準の STOP、START、RESTART 機能は別として)、Remoting、Webservices、またはGimel がWCFに言及したように、最も理想的です。

于 2009-05-14T08:24:36.393 に答える