Jak wygląda cykl życia:
- Usługa sieci Web WCF (http)
Jeśli się zgadzam, usługa będzie tworzona dla każdego połączenia?
- 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 odpowiedzi
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.
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
Podobne pytania
Nowe pytania
wcf
Windows Communication Foundation jest częścią platformy .NET Framework, która zapewnia ujednolicony model programowania do szybkiego tworzenia aplikacji zorientowanych na usługi.