1

リモートファイル/フォルダーブラウザーとして機能するWCFサービスがあります。また、3つの機能として機能するWindowsサービスを用意する予定です。

  1. WindowsサービスはWCFサービスを開始して、そのジョブを実行できるようにします(同じプロジェクトの一部)
  2. Windowsサービスは、タイマーとこのような他の多くの方法に基づいて、数分ごとにSQLサーバーにデータをアップロードします
  3. WCFは、asp.netクライアントからの要求に応じてWCFを介してメソッドを実行する要求を受信し、Windowsサービスにメソッドを実行して結果をWCFに返し、結果をASP.netに返すように要求します。

項目3が問題です。Windowsサービスは、同じマシン上で実行され、基本的に1つのマシンとして実行されている同じアプリケーションであるWCFサービス(およびその逆)サービスとどのように通信することになっていますか。再びWCFを超えていますか?

おそらく私はこれについてすべて間違っていると思います。うまくいけば、誰かが助けることができるかもしれません

ありがとうダモ

4

2 に答える 2

2

WCFサービスは、Windowsサービス内でホストされる場合があります。http://msdn.microsoft.com/en-us/library/ms750530.aspxを参照してください。それらが示す特定の例はコンソールアプリケーション用ですが、同じ概念が適用されます。

セルフホスティングの場合、クライアントがサービスに接続したときにインスタンス化されるタイプを指定するか、クライアントがサービスにアクセスしたときに使用するインスタンスを渡すことができます。いずれの場合も、同じクラスをインスタンス化するか、ServiceHostに渡されたインスタンスにアクセスして、サービスのメソッドを呼び出すことができますが、WCFパイプラインは通過しません。WCFサービスクラスは、Windowsサービスクラスへの参照とそのクラスへのアクセスメソッドを取得して、WCFスタックを再度通過することなくコールバックを実行できるようにすることができます。

または、セルフホストを希望しない場合、またはアプリケーションでサービスでWCF固有の呼び出しを使用する場合は、デスクトップアプリケーションの場合と同じ方法で、サービスにwcfクライアントを作成できます。通常どおりサービス参照を追加し、コールバックを使用してWindowsサービスコードに戻るだけです。

于 2012-08-20T21:41:51.063 に答える
0

最初の答えは正しいです。次のことも検討することをお勧めします。そのwcfサービスをホストするWindowsサービスがない場合は、そこで新しいサービスを公開します。他のオプションもありますが、それらは低レベルになっているため、WCFが最も簡単で安全なオプションです。同時に-その非常にエレガントなソリューション。

于 2012-08-20T22:11:06.183 に答える