Architecture in a Box: WCF – Windows Communication Foundation
Mais uma sessão do Architecture in a Box, hoje falando sobre WCF – Windows Communication Foundation. Existem muitas questões envolvidas na construção de interfaces de serviços e o WCF é a base para isso sobre a plataforma Microsoft.
A sessão de hoje apresenta uma visão geral sobre os fundamentos do WCF, seus bindings e cenários comuns no mercado, preparando o caminho para uma sessão futura sobre SOA – Service Oriented Architecture.
View more documents from Waldemir Cambiucci .
Continue acompanhando o Architecture in a Box e aproveite o material. Em breve, teremos mais novidades, aguarde!
Por enquanto é só! Até o próximo post :)
…e aprovete bem o feriado!!!
Waldemir.
Comments
- Anonymous
December 09, 2009
Olá! Ótimo post!!! Mas, será que você poderia esclarecer 2 dúvidas? Fizeram algumas afirmações e não sei se procedem:
- Binding TCP apenas com o IIS7, no IIS6 não funciona.
- O legado (VB6) não pode consumir serviços WCF com Binding TCP. Muito obrigado!
- Anonymous
December 09, 2009
Olá Flavio, tudo certo? Obrigado pelos comentários aqui no blog. Vamos lá...
- Binding TCP apenas com o IIS7, no IIS6 não funciona. Resp curta: correto, no IIS6 só usamos HTTP com serviços WCF. No IIS7 podemos usar HTTP e ainda TCP, MSMQ e NamedPipe como bindings de serviços WCF. Resp longa: quando hospedamos serviços WCF no IIS, estamos aproveitando o listener de HTTP do IIS, via o processo HTTP.SYS. A partir da requisição HTTP que é recebida no IIS6, é repassado o controle para o ASPNET_ISAPI.DLL, que dispara o HTTPHANDLER, que efetivamente trata o serviço WCF. No IIS7 continua existindo o HTTP.SYS para o atendimento da Thread de IIS/IO, repassando o controle para o Worker Process w3wp.exe. Nesse processo, também encontramos o HTTPHANDLET para o tratamento do serviço WCF. Veja, em ambos os casos o IIS tem nativamente handlers de HTTP apenas. Sobre o Windows Server 2008 temos um componente de extensão do IIS7 chamado WAS - Windows Activation Service, que adiciona alguns novos handlers de chamadas, como o TCPPROCESS ProtocolHandler, o MSMQPROCESS ProtocoloHandler e o NamedPipePROCESS ProtocolHandler. Com esses handlers, o IIS7/WAS pode tratar requisições para serviços com Binding TCP. Não temos um WAS disponível para o IIS6. Sobre Windows Server 2003, o atendimento de serviços com Binding TCP deve ser feito apenas com o hosting sobre um Windows Service ou através de um Managed Host, dentro de uma aplicação. Veja este artigo: How to: Host a WCF Service in a Managed Windows Service Ref.: http://msdn.microsoft.com/en-us/library/ms733069.aspx Veja esse trecho: Note that IIS-hosted services can only use the HTTP transport. Its implementation in IIS 5.1 has introduced some limitations in Windows XP. The message-based activation provided for an WCF service by IIS 5.1 on Windows XP blocks any other self-hosted WCF service on the same computer from using port 80 to communicate. WCF services can run in the same AppDomain/Application Pool/Worker Process as other applications when hosted by IIS 6.0 on Windows Server 2003. But because WCF and IIS 6.0 both use the kernel-mode HTTP stack (HTTP.sys), IIS 6.0 can share port 80 with other self-hosted WCF services running on the same machine, unlike IIS 5.1. Um artigo bem legal sobre WAS e serviços WCF você encontra aqui: Hosting in Windows Process Activation Service Ref.: http://msdn.microsoft.com/en-us/library/ms734677.aspx
- O legado (VB6) não pode consumir serviços WCF com Binding TCP. Resp: sim, havendo um cliente TCP, podemos conectar com um serviço WCF e binding TCP. Mas para maior interoperabilidade, sugiro o uso de binding basicHttpBinding com SOAP/HTTP para essa integração. Veja esse artigo se ajuda: Integrating WCF Services with COM+ http://msdn.microsoft.com/en-us/library/bb735856.aspx Boas perguntas! :) Um abraço! Waldemir.