Jak wygląda cykl życia:

  1. Usługa sieci Web WCF (http)

Jeśli się zgadzam, usługa będzie tworzona dla każdego połączenia?

  1. WCF netTCP (również hostowany w IIS) jako singleton

Czy to prawda, że ​​usługa WCF zostanie utworzona przy pierwszym wywołaniu, a potem nigdy nie zostanie wyłączona? A może spadnie, gdy przez jakiś czas nie będzie połączeń? A jeśli tak, gdzie ustawić ten limit czasu? Usługa w moim przypadku utrzymuje stan klienta, więc co się stanie, jeśli klient połączy się, ale będzie bezczynny tak długo, że przekroczy limit czasu?

2
Banshee 17 czerwiec 2011, 17:15

2 odpowiedzi

Najlepsza odpowiedź

Dla 1) usługa będzie tworzona przy każdym połączeniu klienta

2) Usługa Singleton Usługa singleton jest najlepszą usługą współdzielenia. Gdy konfigurujesz usługę jako singleton, wszyscy klienci są niezależnie podłączani do tego samego jednego dobrze znanego kontekst instancji i niejawnie do tej samej instancji wewnątrz, niezależnie od punktu końcowego usługi, z którą się łączą. Singleton jest tworzony dokładnie raz, kiedy host jest tworzony i żyje wiecznie:jest usuwany tylko po wyłączeniu hosta.

Ze swej natury singleton jest współdzielony i każdy klient powinien po prostu utworzyć dla niego własne proxy lub proxy.

3
Tomasz Jaskuλa 17 czerwiec 2011, 17:24

1) Jeśli używasz wsHttpBinding, domyślnie otrzymasz instancję PerSession i otrzymasz jedną instancję na serwer proxy. Jeśli używasz BasicHttpBinding, domyślnie otrzymasz wystąpienie PerCall — jedno wystąpienie na żądanie.

2) Jak mówi Thomas, singletony są tworzone po otwarciu ServiceHost (lub możesz je utworzyć samodzielnie. Singleton będzie działał tak długo, jak IIS będzie utrzymywać przy życiu proces AppDomain / proces roboczy. Możesz skonfigurować limity czasu, które wpływają na to w różnym stopniu, w zależności od jakiej wersji usług IIS używasz http://www.iis.net /ConfigReference/system.applicationHost/applicationPools/add/recycling

1
Richard Blewett 17 czerwiec 2011, 17:31