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>