2

シンプルなファイル監視ユーティリティを実装する必要があります。FileSystemWatcher を内部的に使用する単純な Windows サービスにこれを実装することにしました。目的は、指定されたディレクトリ パス (または ftp) を監視し、定義済みのロジックを確認した後、新しいファイルが入ってくる場所にファイルを他のサーバーにコピーすることです。

私は.net 3.5を使用しています。クライアントから、WCF を使用するよう提案されました。私はWCFの経験がほとんどありません。

WindowsService のように機能し、Windows サーバー上のサービスに展開できる WCF サービスを作成する方法がわかりません。

未来的であるためには、Windows サービスの代わりに WCF サービスを作成することをお勧めします。または、ウィンドウ サービスを主張する必要があります。

4

5 に答える 5

1

Windows サービス != WCF

Windows サービスのように機能する WCF サービスを作成することはできません。WCF サービスはサード パーティからのメッセージを待機し、それらに基づいて動作します。Windows サービスは常にバックグラウンドで実行されているプロセスです。WCF は、通信メカニズム (Tcp、Http、名前付きパイプなどのトランスポート プロトコル) をサービス インターフェイスから分離するという問題を解決しようとします。

ファイル監視ユーティリティ

理論的には、WCF で新しいフラット ファイル バインディングを作成して、そのアドレスをファイル システムの場所に設定することは可能ですが、.NET フレームワークには直接存在しません。MSDN のCustom Bindingsの記事を見ると、ファイル システム バインディングを構築する方法がすぐにはわかりません。これらは、利用可能な定義済みのトランスポート オプションです。

  1. TCP
  2. HTTP
  3. HTTPS
  4. 名前付きパイプ (IPC)
  5. ピアツーピア (P2P)
  6. メッセージ キュー (MSMQ)
  7. カスタム

ファイル ドロップを介して通信を行う必要がある場合、WCF では問題は解決されません。

WCF が機能する場所

クライアントが意図していたのはcopy the file to some other server wherever new file comes in after checking some predefined logicFileWatcher.

同じロジックを実行し、その出力を他のサーバーに送信できる必要があるクライアントが複数ある場合は、WCF サービスを作成するのが理にかなっている可能性があります。

于 2012-10-12T14:00:00.750 に答える
0

変更が必要になるまでは、最も単純なオプションを選択する必要があります。最も単純なオプションは Windows サービスです。

ほとんどの場合、WCF サービスで何かをラップするだけでは何もせず、不要な複雑さが追加されるため、この場合に適用される YAGNI というコーディング原則 (必要ありません) があります。簡単に言えば、実行可能な最小限のソリューションを実行し、必要な場合にのみ拡張します。

PS。ネットワーク共有を介して FileSystemWatcher を使用している場合は、文書化された問題があることに注意してください。ポーリングと FileSystemWatcher の組み合わせを使用する必要があります。それについては、Stack Overflow に多くの説明があります。

于 2012-10-12T13:45:06.097 に答える
0

あなたのユースケースでは、Windows サービスの方がはるかに理にかなっており、それがより適切なソリューションであると思います。ディレクトリを常に実行および監視するものが必要であり、それはまさにWindowsサービスが非常に得意とするユースケースです。

クライアントと話し、Windows サービスがこの種のユース ケースに適したソリューションであると説明することを検討します。また、Windows サービスは古いものではありません。これらの種類のユース ケースを正確に解決するために存在し、WCF と Windows サービスは相互に補完します。

于 2012-10-12T13:45:35.520 に答える
0

どちらの機能も、実質的に共通点がないため、名前にServiceが含まれています。

Windows サービスは、1 台のマシンで常に実行されます。

WCF サービスは、他のマシンからリモートで呼び出すことができるコードです。

于 2012-10-12T13:50:39.020 に答える
0

それは単にあなたが何をする必要があるかによって異なります。Windows サービスと "WCF サービス" にはほとんど共通点がありません。

ここでの問題は、HTTP エンドポイントが必要かどうかです。その場合、Windows サービスで WCF サービスをホストして、それを提供することもできます。WCF は、アプリケーション間の通信手段としてのみ使用されることに注意してください。

しかし、あなたの説明を読むと、それは必要ないようです。

マネージド Windows サービスの WCF サービス

于 2012-10-12T13:59:25.173 に答える