@Servicehost
Kojarzy fabrykę używaną do tworzenia hosta usługi z usługą do hostowania i innych aspektów programowania wymaganych do uzyskania dostępu do lub skompilowania kodu hostingu podanego w pliku svc.
Składnia
<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>
Atrybuty
Usługa
Nazwa typu CLR hostowanej usługi. Powinna to być kwalifikowana nazwa typu, który implementuje co najmniej jeden kontrakt usługi.
Fabryka
Nazwa typu CLR fabryki hostów usługi używana do utworzenia wystąpienia hosta usługi. Ten atrybut jest opcjonalny. Jeśli nie zostanie określona, zostanie użyta wartość domyślna ServiceHostFactory , która zwraca wystąpienie klasy ServiceHost.
Debugowanie
Wskazuje, czy należy skompilować usługę Windows Communication Foundation (WCF) z symbolami debugowania. true
jeśli usługa WCF powinna zostać skompilowana z symbolami debugowania; w przeciwnym razie , false
.
Język
Określa język używany podczas kompilowania całego kodu wbudowanego w pliku (.svc). Wartości mogą reprezentować dowolny element . Obsługiwany przez platformę NET język, w tym C#
, VB
i JS
, odwołujący się odpowiednio do języków C#, Visual Basic i JScript .NET. Ten atrybut jest opcjonalny.
KodBehind
Określa plik źródłowy, który implementuje usługę sieci Web XML, gdy klasa implementujący usługę sieci Web XML nie znajduje się w tym samym pliku i nie została skompilowana do zestawu i umieszczona w katalogu \Bin .
Uwagi
Używany ServiceHost do hostowania usługi jest punktem rozszerzalności w modelu programowania Windows Communication Foundation (WCF). Wzorzec fabryki jest używany do tworzenia wystąpienia ServiceHost , ponieważ jest to potencjalnie typ polimorficzny, którego wystąpienie środowiska hostingu nie powinno być tworzone bezpośrednio.
Domyślna implementacja używa metody ServiceHostFactory do utworzenia wystąpienia klasy ServiceHost. Możesz jednak podać własną fabrykę (taką, która zwraca hosta pochodnego), określając nazwę typu CLR implementacji fabryki w @ServiceHost
dyrektywie.
Aby użyć własnej fabryki hostów usług niestandardowych zamiast domyślnej fabryki, wystarczy podać nazwę typu w dyrektywie w @ServiceHost
następujący sposób.
<% @ServiceHost Factory="DerivedFactory" Service="MyService" %>
Zachowaj możliwie lekkie implementacje fabryki. Jeśli masz wiele logiki niestandardowej, kod jest bardziej wielokrotnego użytku, jeśli umieścisz logikę wewnątrz hosta zamiast wewnątrz fabryki.
Aby na przykład włączyć punkt końcowy z obsługą AJAX dla MyService
elementu , określ WebScriptServiceHostFactory wartość Factory
atrybutu zamiast domyślnej ServiceHostFactory, w dyrektywie, jak pokazano w @ServiceHost
poniższym przykładzie:
<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>