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>