4

そのため、セルフホスト(WindowsService内)のWebServiceHost(ServiceHostでHTTP GET / POSTを処理する方法がわからない)を介していくつかの関数を提供します。そのうちの1つは、かなりの時間呼び出される可能性があります。この関数は、appdomain内の接続にも依存します(WindowsServiceによってホストされるため、複数の要求にわたって存続できます)。

私は次の懸念を持っており、入力/考え/コメントにとても感謝しています:

  • 同時アクセス-WebServiceHostは一連の同時要求をどのように処理しますか。それらはキューに入れられて順番に処理されますか、それともコントラクトの新しいインスタンスが自動的に作成されますか?
  • WebServiceHost-> WindowsService通信-新しいセッションが存在しない場合にそれを要求するなどのために、WebServiceHostからホスティングWindowsServiceへの何らかの形式の通信が必要です。おそらく、WindowsServiceがサブスクライブするイベントでWebServiceHostを拡張するクラスを実装しています...(要求が行われたときにWindowsServiceでイベントを開始できる別の方法がない限り...)
  • 複数のWebServiceHostsまたはコントラクト-異なるスレッドで複数のWebServiceHostインスタンスを実行することで実際のパフォーマンスが向上しますか(エンドポイントごとに1つ)-最初のポイントをよりよく理解すると、おそらくここで役立ちます。
  • WSDL-理由はわかりませんが(おそらくもっと読む必要があるだけです)、WebServiceHostベースエンドポイントが利用可能なコントラクトを説明するWDSLドキュメントで応答するようにする方法はわかりません。すべての操作はGETリクエストを介して行われるため、必須ではありませんが、変更される可能性は低いですが、...

それは今のところそれについてです;)私はWCFについてたくさん読んでいて、ずっと前にそれに夢中になったらいいのにと思いますが、間違いなくまだ学んでいます。

4

1 に答える 1

5

同時アクセス-これは、ServiceBehaviorAttributeを使用して設定できるものです。いくつかのオプションがあります。WCFに着信リクエストごとにサービスクラスの新しいインスタンスを作成させることも、単一のインスタンスにすべてのリクエストを処理させることもできます。さらに、リクエストをシリアルに渡すか同時に渡すかをWCFに指示できます。

WebServiceHost->WindowsService通信。2つのアプローチが思い浮かびます。WCFは、Typeを渡してWCFにインスタンス化させる代わりに、サービスのインスタンスをServiceHostコンストラクターに渡す「既知のインスタンス」と呼ばれるモードをサポートします。このモードでは、ホスティングコードへの参照を使用してサービスインスタンスを事前構成できます(または、イベントを使用することもできます)。インスタンス化の柔軟性を維持したい場合の代替手段は、WCFサービスがコールバックできるホスティングコードに静的メソッドを含めることです。

複数のWebServiceHostsまたはコントラクト-複数のServiceHostインスタンスを持つことに実際には利点はありません。このSOスレッドも参照してください:いくつかのサービスホストにとっての利点は何ですか?1つのServiceHostは、1つのエンドポイントで複数の同時接続をサポートしますか?

WSDL-メタデータ発行( http://msdn.microsoft.com/en-us/library/ms788760.aspx )をオンにすることでWSDLを有効にできますが、WSDLサポートは純粋なHTTP GET / POSTではなく、SOAPベースのサービスを対象としています。 。サービス用に自動生成されるWSDLは、あまり役に立たない可能性があります。

于 2010-05-13T00:10:06.543 に答える