Partilhar via


Visão geral da integração com aplicativos COM+

O Windows Communication Foundation (WCF) fornece um ambiente avançado para a criação de aplicativos distribuídos. Se você já estiver usando a lógica de aplicativo baseada em componente hospedada em COM+, poderá usar o WCF para estender sua lógica existente em vez de ter que reescrevê-la. Um cenário comum é quando você deseja expor a lógica de negócios COM+ ou Enterprise Services existente por meio de Web Services.

Quando uma interface em um componente COM+ é exposta como um serviço Web, a especificação e o contrato desses serviços são determinados por um mapeamento automático que é executado no momento da inicialização do aplicativo. A lista a seguir mostra o modelo conceitual para esse mapeamento:

  • Um serviço é definido para cada classe COM exposta.

  • O contrato para o serviço é derivado diretamente da definição da interface do componente selecionado com a possibilidade de exclusão do método definido na configuração.

  • As operações nesse contrato derivam diretamente dos métodos na definição da interface do componente.

  • Os parâmetros para essas operações derivam diretamente do tipo de interoperabilidade COM que corresponde aos parâmetros do método do componente.

Os endereços padrão e as associações de transporte para o serviço são fornecidos em um arquivo de configuração de serviço, mas podem ser reconfigurados conforme necessário.

Nota

Os contratos para os serviços Web expostos permanecem constantes, desde que as interfaces COM+ e a configuração permaneçam inalteradas. Uma modificação em várias interfaces não atualiza automaticamente os serviços disponíveis e requer a execução repetida da ferramenta de configuração do modelo de serviço COM+ (ComSvcConfig.exe).

Os requisitos de autenticação e autorização do aplicativo COM+ e seus componentes continuam a ser aplicados quando usados como um serviço Web.

Se o chamador iniciar uma transação de serviço Web, os componentes marcados como transacionais se alistam dentro desse escopo de transação.

As etapas a seguir são necessárias para expor a interface de um componente COM+ como um serviço Web sem modificar o componente:

  1. Determine se a interface do componente COM+ pode ser exposta como um serviço Web.

  2. Selecione um modo de hospedagem apropriado.

  3. Use a ferramenta COM+ Service Model Configuration (ComSvcConfig.exe) para adicionar um serviço Web para a interface. Para obter mais informações sobre como usar ComSvcConfig.exe, consulte Como usar a ferramenta de configuração do modelo de serviço COM+.

  4. Configure quaisquer configurações de serviço adicionais no arquivo de configuração do aplicativo. Para obter mais informações sobre como configurar um componente, consulte Como definir configurações de serviço COM+.

Interfaces suportadas

Existem algumas restrições sobre o tipo de interfaces que podem ser expostas como um serviço Web. Os seguintes tipos de interfaces não são suportados:

  • Interfaces que passam referências de objeto como parâmetros - a seguinte abordagem de referência de objeto limitada é descrita na seção Suporte de referência de objeto limitado.

  • Interfaces que passam tipos que não são compatíveis com as conversões de interoperabilidade COM do .NET Framework.

  • Interfaces para aplicativos que têm o pool de aplicativos habilitado quando hospedado pelo COM+.

  • Interfaces de componentes marcados como privados para o aplicativo.

  • Interfaces de infraestrutura COM+.

  • Interfaces da aplicação do sistema.

  • Interfaces de componentes do Enterprise Services que não foram adicionados ao cache de assembly global.

Suporte limitado a referência de objeto

Como vários componentes COM+ implantados usam objetos por parâmetros de referência, como retornar um objeto Recordset do ADO, a integração COM+ inclui suporte limitado para parâmetros de referência de objeto. O suporte é limitado a objetos que implementam a IPersistStream interface COM. Isso inclui objetos Recordset do ADO e pode ser implementado para objetos COM específicos do aplicativo.

Para habilitar esse suporte, a ferramenta ComSvcConfig.exe fornece a opção allowreferences que desabilita o parâmetro de assinatura do método regular e verifica se a ferramenta é executada para garantir que os parâmetros de referência de objeto não estejam sendo usados. Além disso, os tipos de objeto que você passa como parâmetros devem ser nomeados e identificados dentro do <persistableTypes> elemento de configuração que é filho do <comContract> elemento.

Quando esse recurso é usado, o serviço de integração COM+ usa a IPersistStream interface para serializar ou desserializar a instância do objeto. Se a instância do objeto não oferecer suporte a IPersistStream, uma exceção será lançada.

Dentro de um aplicativo cliente, os métodos no PersistStreamTypeWrapper objeto podem ser usados para passar um objeto para um serviço e, da mesma forma, para recuperar um objeto.

Nota

Devido à natureza personalizada e específica da plataforma da abordagem de serialização, isso é mais adequado para uso entre clientes WCF e serviços WCF.

Selecionando o modo de hospedagem

COM+ expõe serviços da Web em um dos seguintes modos de hospedagem:

  • COM+-hospedado

    O serviço Web é hospedado dentro do processo de servidor COM+ dedicado do aplicativo (Dllhost.exe). Esse modo requer que o aplicativo seja iniciado explicitamente antes de poder receber solicitações de serviço Web. As opções COM+ "Executar como um serviço NT" ou "Deixar em execução quando ocioso" podem ser usadas para evitar o desligamento ocioso do aplicativo e seus serviços. Esse modo fornece acesso DCOM e serviço Web ao aplicativo de servidor.

  • Hospedado na Web

    O serviço Web é hospedado em um processo de trabalho do servidor Web. Este modo não requer que COM+ esteja ativo quando a solicitação inicial é recebida. Se o aplicativo não estiver ativo quando essa solicitação for recebida, ela será ativada automaticamente antes de processá-la. Esse modo também fornece acesso DCOM e serviço Web ao aplicativo de servidor, mas causa um salto de processo para solicitações de serviço Web. Isso normalmente requer que o cliente habilite a representação. No WCF, isso pode ser feito com a AllowedImpersonationLevel WindowsClientCredential propriedade da classe, que é acessada como uma propriedade da classe genérica ChannelFactory<TChannel> , bem como o Impersonation valor de enumeração.

  • Hospedado na Web em processo

    O serviço Web e a lógica do aplicativo COM+ são hospedados no processo de trabalho do servidor Web. Isso fornece ativação automática do modo hospedado na Web sem causar um salto de processo para solicitações de serviço Web. A desvantagem é que o aplicativo de servidor não pode ser acessado através do DCOM.

Considerações de Segurança

Como outros serviços WCF, as configurações de segurança para o serviço exposto são administradas por meio de definições de configuração para o canal WCF. As configurações de segurança DCOM tradicionais, como as configurações de permissões DCOM em toda a máquina, não são impostas. Para impor funções de aplicativo COM+, a autorização de "verificações de acesso no nível do componente" deve ser habilitada para o componente.

A utilização de uma vinculação não segura pode deixar a comunicação aberta a adulterações ou divulgação de informações. Para evitar isso, é recomendável que você use uma ligação segura.

Para os modos hospedado COM+ e hospedado na Web, os aplicativos cliente devem permitir que o processo do servidor represente o usuário cliente. Isso pode ser feito em clientes WCF definindo o nível de representação como Impersonation.

Com os Serviços de Informações da Internet (IIS) ou o Serviço de Ativação de Processos do Windows (WAS) usando o transporte HTTP, a ferramenta Httpcfg.exe pode ser usada para reservar um endereço de ponto de extremidade de transporte. Em outras configurações, é importante proteger contra serviços não autorizados que atuam como o serviço pretendido. Para impedir que um serviço não autorizado comece no ponto de extremidade desejado, o serviço legítimo pode ser configurado para ser executado como um serviço NT. Isso permite que o serviço legítimo reivindique o endereço do ponto final antes de qualquer serviço não autorizado.

Ao expor um aplicativo COM+ com funções COM+ configuradas como um serviço hospedado na Web, a "Iniciar conta de processo do IIS" deve ser adicionada a uma das funções do aplicativo. Essa conta, normalmente com o nome IWAM_machinename, deve ser adicionada para permitir o desligamento limpo de objetos após o uso. A conta não deve receber permissões adicionais.

Os recursos de reciclagem de processo COM+ não podem ser usados em aplicações integradas. Se o aplicativo estiver configurado para usar a reciclagem de processos e os componentes estiverem sendo executados em um processo hospedado COM+, o serviço não será iniciado. Esse requisito não inclui serviços que usam o modo de processo hospedado na Web porque as configurações de reciclagem de processo não são aplicadas.

Consulte também