Share via


Como: definir configurações de serviço de COM+

Quando uma interface de aplicativo é adicionada ou removida usando a ferramenta de Configuração de serviço COM+, a configuração do serviço Web é atualizada dentro do arquivo de configuração de aplicativo. No modo hospedado COM+, o arquivo Application.config é colocado no Diretório Raiz do Aplicativo (%PROGRAMFILES%\ComPlus Applications\{appid} é o padrão). Em qualquer um dos modos hospedados pela Web, o arquivo Web.config é colocado no diretório vroot especificado.

Observação

A assinatura de mensagem deve ser usada para proteger contra adulteração de mensagens entre um cliente e um servidor. Além disso, a criptografia de camada de transporte ou mensagem deve ser usada para proteger contra a divulgação de informações de mensagens entre um cliente e um servidor. Assim como acontece com os serviços do Windows Communication Foundation (WCF), você deve usar a limitação para limitar o número de chamadas simultâneas, conexões, instâncias e operações pendentes. Isso ajuda a evitar o consumo excessivo de recursos. O comportamento de limitação é especificado através das configurações do arquivo de configuração de serviço.

Exemplo

Considere um componente que implementa a seguinte interface:

[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")]  
public interface IFinances  
{  
    string Debit(string accountNo, double amount);  
    string Credit(string accountNo, double amount);  
}  

Se o componente for exposto como um serviço Web, o contrato de serviço correspondente exposto e que os clientes precisarão estar em conformidade é o seguinte:

[ServiceContract(Session = true,  
Namespace = "http://tempuri.org/C551FBA9-E3AA-4272-8C2A-84BD8D290AC7",  
Name = "IFinances")]  
public interface IFinancesContract : IDisposable  
{  
    [OperationContract]  
    string Debit(string accountNo, double amount);  
    [OperationContract]  
    string Credit(string accountNo, double amount);  
}  

Observação

O IID faz parte do namespace inicial do contrato.

Os aplicativos cliente que usam esse serviço precisariam estar em conformidade com esse contrato, junto com o uso de uma associação compatível com a especificada na configuração do aplicativo.

O exemplo de código a seguir mostra um arquivo de configuração padrão. Sendo um serviço Web do Windows Communication Foundation (WCF), isso está em conformidade com o esquema de configuração do modelo de serviço padrão e pode ser editado da mesma forma que outros arquivos de configuração de serviços WCF.

As modificações típicas incluem:

  • Alterando o endereço do ponto de extremidade do formulário ApplicationName/ComponentName/InterfaceName padrão para um formulário mais utilizável.

  • Modificando o namespace do serviço do formulário http://tempuri.org/InterfaceID padrão para um formulário mais relevante.

  • Alterando o ponto de extremidade para usar uma associação de transporte diferente.

    No caso hospedado no COM+, o transporte de pipes nomeados é usado por padrão, mas um transporte fora do computador, como o TCP, pode ser usado.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <system.serviceModel>  
        <bindings>  
            <netNamedPipeBinding>  
                <binding name="comNonTransactionalBinding" />  
                <binding name="comTransactionalBinding" transactionFlow="true" />  
            </netNamedPipeBinding>  
        </bindings>  
        <comContracts>  
            <comContract contract="{C551FBA9-E3AA-4272-8C2A-84BD8D290AC7}"  
                name="IFinances" namespace="http://tempuri.org/C551FBA9-E3AA-4272-8C2A-84BD8D290AC7"  
                requiresSession="true">  
                <exposedMethods>  
                    <add exposedMethod="Debit" />  
                    <add exposedMethod="Credit" />  
                </exposedMethods>  
            </comContract>  
        </comContracts>  
        <services>  
            <service name="{DCDB24CC-0B19-4534-95CD-FBBFF4D67DD9},{C942B840-AD54-4A44-B5F7-928130980AB9}">  
                <endpoint address="IFinances" binding="netNamedPipeBinding" bindingConfiguration="comNonTransactionalBinding"  
                    contract="{C551FBA9-E3AA-4272-8C2A-84BD8D290AC7}" />  
                <host>  
                    <baseAddresses>  
                        <add baseAddress="net.pipe://localhost/ServiceModelDocSampleApp/ServiceModelDocSample.esFinance" />  
                    </baseAddresses>  
                </host>  
            </service>  
        </services>  
    </system.serviceModel>  
</configuration>  

Confira também