Compartilhar via


@ServiceHost

Associa o alocador usado para produzir o host de serviço com o serviço a ser hospedado e outros aspectos de programação necessários para acessar ou compilar o código de hospedagem fornecido no arquivo .svc.

Syntax

<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>

Atributos

Serviço

O nome do tipo CLR do serviço hospedado. Esse deve ser um nome qualificado de um tipo que implementa um ou mais contratos de serviço.

Factory

O nome do tipo CLR do alocador de host de serviço usado para instanciar o host de serviço. Esse atributo é opcional. Se não for especificado, o padrão ServiceHostFactory será usado, o que retornará uma instância de ServiceHost.

Depurar

Indica se o serviço WCF (Windows Communication Foundation) deve ser compilado com símbolos de depuração. true se o serviço WCF tiver de ser compilado com símbolos de depuração; caso contrário, false.

Linguagem

Especifica a linguagem usada ao compilar todo o código embutido no arquivo (.svc). Os valores podem representar qualquer linguagem com suporte do .NET, incluindo C#, VBe JS, que se referem a C#, Visual Basic e JScript .NET, respectivamente. Esse atributo é opcional.

CodeBehind

Especifica o arquivo de origem que implementa o serviço Web XML, quando a classe que implementa o serviço Web XML não reside no mesmo arquivo e não foi compilada em um assembly e colocada no diretório \Bin.

Comentários

O ServiceHost usado para hospedar o serviço é um ponto de extensibilidade dentro do modelo de programação do WCF (Windows Communication Foundation). Um padrão de fábrica é usado para instanciar o ServiceHost porque é, potencialmente, um tipo polimórfico que o ambiente de hospedagem não deve instanciar de forma direta.

A implementação padrão usa ServiceHostFactory para criar uma instância de ServiceHost. Mas você pode fornecer seu próprio alocador (uma que retorna seu host derivado) ao especificar o nome do tipo CLR da implementação de alocador na diretiva @ServiceHost.

Para usar seu próprio alocador de host de serviço personalizado em vez do alocador padrão, basta fornecer o nome do tipo na diretiva @ServiceHost da maneira a seguir.

<% @ServiceHost Factory="DerivedFactory" Service="MyService" %>

Mantenha as implementações de alocador as mais leves possíveis. Se você tiver muita lógica personalizada, seu código será mais reutilizável se você colocar essa lógica dentro do host em vez de dentro do alocador.

Por exemplo, para habilitar um ponto de extremidade habilitado para AJAX para MyService, especifique o WebScriptServiceHostFactory para o valor do atributo Factory, em vez do padrão ServiceHostFactory, na diretiva @ServiceHost, conforme mostrado no exemplo a seguir:

<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>

Confira também