0

私は次のようなコードを持っています:

Public Class xxxSvcHostFactory
    Inherits ServiceHostFactory

    Protected Overrides Function CreateServiceHost(ByVal serviceType As Type, ByVal baseAddresses As Uri()) As ServiceHost
        Dim result As New WebServiceHost2(serviceType, True, baseAddresses)
        Return result
    End Function

End Class

サービス契約は以下のように定義されています。

<ServiceContract()>
Public Interface IxxxSvc

    <Description("")>
    <OperationContract()>
    <WebGet(ResponseFormat:=WebMessageFormat.Json,
            UriTemplate:="CustomerDetails?id={CustomerId}")>
    Function GetCustomerDetails(ByVal CustomerId As String) As Customer


End Interface

Public Class MySvc
    Implements IxxxSvc

    Public Function GetCustomerDetails(ByVal CustomerId As String) As Customer Implements IxxxSvc.GetCustomerDetails
.
.
.
    End Function

End Class

CreateServiceHost はいつ実行されますか?

呼び出しごとですか、トランスポート セッションごとですか、それともアプリケーションの起動時ですか?

ServiceHost の有効期限はいつですか?

静的変数を実装すると、複数のセッション (IE や Firefox など) で使用できます。特定のセッションの静的変数を維持するにはどうすればよいですか (たとえば、IE からアクセスする場合、FF からアクセスするときに同じセッションを共有すべきではありません)。

アプリケーションで WCF REST 機能を使用しています (コア REST であり、REST スターター キットではありません)。ありがとう

4

1 に答える 1

1

場合によります!:-) いつものように.....

MyService.svcファイルを使用して IIS でこのサービスをホストする場合、IIS はWebServiceHost着信要求ごとにインスタンスを作成し、要求を処理するためにサービス クラス インスタンスをスピンアップします (OK、おそらくこれで何らかのキャッシュを実行していますが、その方法と方法は明確ではありません)。ホストの寿命など)。IIS は「メッセージベースのアクティベーション」を備えていると言われています。たとえば、受信メッセージ/要求ごとにWebServiceHost.

Windows NT サービス、コンソール アプリなどで自己ホストする場合、それは明らかに完全にあなた次第です。WebServiceHostあなたの裁量で作成し、明示的に破棄するまで (または未処理の例外によってダウンさせるまで) 実行します。 )。セルフホスティングを使用すると、WebServiceHost.

MSDN のHosting And Consuming WCF Servicesを確認してください。ホスティングやサービス ホストの有効期間などに関する興味深い情報がたくさんあります。

于 2010-07-12T16:29:56.047 に答える