Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O modelo de aplicativo WCF (Windows Communication Foundation) foi projetado para resolver a maior parte dos requisitos de comunicação de qualquer aplicativo distribuído. Mas sempre há cenários que o modelo de aplicativo padrão e as implementações fornecidas pelo sistema não dão suporte. O modelo de extensibilidade do WCF destina-se a dar suporte a cenários personalizados, permitindo que você modifique o comportamento do sistema em todos os níveis, até mesmo ao ponto de substituir todo o modelo de aplicativo. Este tópico descreve as várias áreas de extensão e aponta para mais informações sobre cada uma.
Áreas a serem estendidas
Você pode estender:
O runtime do aplicativo. Isso estende a expedição e o processamento de mensagens do aplicativo. Essa área também inclui a extensão do sistema de segurança, o sistema de metadados, o sistema de serialização e as associações e os elementos de associação que conectam o aplicativo ao sistema de canal subjacente.
O canal e o runtime do canal. Isso estende o sistema que funciona no nível da mensagem, fornecendo suporte a protocolo, transporte e codificação.
O ambiente de execução do host. Isso amplia a relação do domínio do aplicativo de hospedagem com o canal e o tempo de execução do aplicativo.
Estendendo o Runtime do Aplicativo
Em aplicativos WCF, há uma distinção entre mensagens destinadas a um canal correspondente e mensagens destinadas ao próprio aplicativo. As mensagens de canal dão suporte a algumas funcionalidades relacionadas ao canal, como estabelecer uma conversa segura ou estabelecer uma sessão confiável. Essas mensagens não estão disponíveis para o runtime do aplicativo; eles são processados antes que a camada do aplicativo esteja envolvida.
As mensagens de aplicativo contêm dados destinados a uma operação de cliente ou serviço que você ou seu cliente criou. Essas mensagens estão disponíveis para o sistema de extensão no nível do aplicativo no formato de mensagem ou objeto, dependendo de suas necessidades.
Todas as mensagens passam pelo sistema de canais; somente as mensagens do aplicativo são passadas do sistema de canal para o aplicativo. Para criar uma nova funcionalidade no nível do canal, você deve estender o sistema de canais. Para criar uma funcionalidade no nível do aplicativo, você precisa estender o serviço ou o runtime do cliente (dispatchers e fábricas de canais, respectivamente). Para obter mais informações sobre como estender o runtime do aplicativo, consulte Extending ServiceHost and the Service Model Layer.
Estendendo a segurança
Para criar mecanismos de segurança personalizados, como tokens e credenciais, você deve estender o sistema de segurança. Para obter mais informações, consulte Estendendo a segurança.
Estendendo metadados
Para expor os metadados de forma diferente do padrão, você deve estender o sistema de metadados. Para obter mais informações, consulte Estendendo o sistema de metadados.
Estendendo a serialização
Para criar codificadores personalizados, fornecer substitutos de dados ou outro trabalho que envolva a personalização de dados transferidos, você deve estender o sistema de serialização. Para obter mais informações, consulte Estendendo codificadores e serializadores.
Estendendo associações
Para associar canais de transporte ou protocolo à camada de aplicativo, você deve estender o sistema de associação. Para obter mais informações, confira Como estender associações.
Estendendo o sistema de canais
Para criar canais que dão suporte a transportes personalizados ou funcionalidade de protocolo, consulte Estendendo a camada de canal.
Estendendo o sistema de hospedagem de serviço
Para modificar o modelo de aplicativo em todo o serviço, você deve estender a classe System.ServiceModel.ServiceHostBase. Para obter mais informações, consulte Estendendo o ServiceHost e a camada de modelo de serviço.
Para modificar a relação entre o domínio do aplicativo de hospedagem e o host de serviço, você deve estender a System.ServiceModel.Activation.ServiceHostFactory classe. Para obter mais informações, consulte Estendendo a hospedagem usando ServiceHostFactory.