Partilhar via


Como: Definir configurações de serviço 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 do 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 na Web, o arquivo Web.config é colocado no diretório vroot especificado.

Nota

A assinatura de mensagens deve ser usada para proteger contra adulterações de mensagens entre um cliente e um servidor. Além disso, a criptografia de camada de mensagem ou transporte 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 WCF (Windows Communication Foundation), você deve usar a limitação para limitar o número de chamadas, conexões, instâncias e operações pendentes simultâneas. Isso ajuda a evitar o consumo excessivo de recursos. O comportamento de limitação é especificado por meio das definições do arquivo de configuração do serviço.

Exemplo

Considere um componente que implemente 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 ao qual os clientes precisariam estar em conformidade será 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);  
}  

Nota

IID faz parte do namespace inicial do contrato.

Os aplicativos cliente que usam esse serviço precisariam estar em conformidade com este contrato, juntamente 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), ele está em conformidade com o esquema de configuração do modelo de serviço padrão e pode ser editado da mesma maneira que outros arquivos de configuração de serviços WCF.

As modificações típicas incluiriam:

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

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

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

    No caso hospedado em COM+, o transporte de pipes nomeados é usado por padrão, mas um transporte fora da máquina como TCP pode ser usado em vez disso.

<?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>  

Consulte também