@ServiceHost
Associa la factory utilizzata per creare l'host del servizio al servizio da ospitare e agli altri aspetti di programmazione necessari per accedere al codice host fornito nel file .svc o per compilarlo.
<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"%>
Attributi
Service
Nome del tipo CLR del servizio ospitato. Deve essere un nome completo di un tipo che implementa uno o più dei contatti del servizio.
Factory
Nome del tipo CLR della factory dell'host del servizio utilizzato per creare un'istanza dell'host del servizio. L'attributo è facoltativo. Se non viene specificato, viene utilizzata la factory ServiceHostFactory predefinita, che restituisce un'istanza dell'host ServiceHost.
Debug
Indica se il servizio Windows Communication Foundation (WCF) deve essere compilato con i simboli di debug. true indica che il servizio WCF deve essere compilato con i simboli di debug. In caso contrario, false.
Language
Specifica il linguaggio utilizzato per la compilazione di tutto il codice inline contenuto nel file con estensione svc. I valori possono rappresentare qualsiasi linguaggio supportato da .NET, inclusi C#, VB e JS, che fanno riferimento, rispettivamente, a C#, Visual Basic .NET e JScript .NET. L'attributo è facoltativo.
CodeBehind
Specifica il file di origine per l'implementazione del servizio Web XML, quando la classe di implementazione non si trova nello stesso file e non è stata compilata in un assembly e inserita nella directory \Bin.
Osservazioni
L'host ServiceHost utilizzato per ospitare il servizio è un punto di estensibilità all'interno del modello di programmazione di Windows Communication Foundation (WCF). Poiché un modello di factory può essere un tipo polimorfico di cui l'ambiente host non deve creare un'istanza direttamente, tale modello viene utilizzato per creare un'istanza dell'host ServiceHost.
L'implementazione predefinita utilizza la factory ServiceHostFactory per creare un'istanza dell'host ServiceHost. È tuttavia possibile fornire una factory personalizzata (ovvero una factory che restituisce l'host derivato personalizzato) specificando il nome del tipo CLR dell'implementazione di tale factory nella direttiva @ServiceHost.
Per utilizzare la factory dell'host di servizio personalizzata anziché la factory predefinita è sufficiente fornire il nome del tipo nella direttiva @ServiceHost, come illustrato di seguito:
<% @ServiceHost Factory=”DerivedFactory” Service=”MyService” %>
È consigliabile garantire che le implementazioni presentino la massima semplicità possibile. Se si utilizza un'elevata quantità di logica personalizzata, quest'ultima è più riutilizzabile se inserita nell'host anziché nella factory.
Ad esempio, per attivare un endpoint AJAX per il servizio MyService, specificare la factory WebScriptServiceHostFactory come valore dell'attributo Factory anziché la factory predefinita ServiceHostFactory nella direttiva @ServiceHost, come illustrato nell'esempio seguente.
Esempio
<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>