Когда ServiceHost создается и истекает - PullRequest
0 голосов
/ 12 июля 2010

У меня есть следующий код:

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 Starter kit). спасибо

1 Ответ

1 голос
/ 12 июля 2010

Это зависит! :-) Как всегда .....

Если вы размещаете эту службу в IIS с помощью файла MyService.svc, то IIS будет создавать экземпляр WebServiceHost для каждого входящего запроса и запускать экземпляр класса обслуживания для обработки запроса (хорошо, возможно, он выполняет некоторое кэширование на это - правда, не совсем понятно, как и как долго хозяин будет жить и т. д.). Говорят, что IIS имеет «активацию на основе сообщений» - например, потенциально каждое входящее сообщение / запрос будет активировать WebServiceHost.

Когда вы самостоятельно размещаетесь в службе Windows NT, консольном приложении и т. Д., Это, очевидно, полностью зависит от вас - вы создаете WebServiceHost по своему усмотрению, а затем он запускается и работает до тех пор, пока вы его явно не снесете необработанное исключение сбивает его). Самостоятельный хостинг дает вам немного больше контроля над временем жизни вашего WebServiceHost.

Извлечение Хостинг и использование служб WCF на MSDN - содержит много интересной информации о хостинге и сроке службы хоста службы и т. Д.

...