O Christian Weyer da Thinktecture, anunciou o lançamento do WSCF.blue, um Add-in para o Visual Studio que permite desenvolver web services que utilizam WCF começando do contrato.
Já faz um tempo desde que eu desenvolvi a ferramenta Web Services Contract First...
Esta ferramenta – também chamada de WSCF – (disponível tanto como uma aplicação de linha de comando quanto como um add-in para o Visual Studio) mirava na plataforma ASMX.
A ideia por trás do desenvolvimento via contrato já existe há algum tempo. A necessidade de se desenvolver com base no contrato vem da necessidade de se ter uma representação canônica da mensagem que flui para o serviço em forma de requisições de web service. O fato de que as linguagens mais populares suportam ferramentas baseadas em WSDL e XSD e representações baseadas em Schema e WSDL desses “contratos” das mensagens como ponto inicial para o desenvolvimento é sem dúvida uma boa abordagem para se ter soluções inter-operáveis.
O desenvolvimento através de contratos resolve o conflito de impedância entre objetos e XML. Uma vez que a linguagem Xml Schema é um formato de representação mais rico é fácil modelar os contratos levando-se em consideração as diferenças ao se aparar os problemas de serialização e interoperabilidade, a saber:
- Impossibilidade de se mapear certas construções da linguagem schema para, por exemplo, extensões e restrições de tipos XSD.
- Impossibilidade de se mapear ou ao menos de se mapear eficientemente certos tipos de objetos para tipos schema, como por exemplo listas genéricas, HashMaps etc.
- Impossibilidade de se representar gráficos de objetos eficientemente em XML com relações pai/filho onde o pai possui referência para o filho e o filho possui referência de volta para o objeto pai.
Algumas vantagens de se usar esta abordagem são
- Definir contratos independentes de linguagem promove interoperabilidade, contanto que os projetistas dos serviços se mantenham aderentes aos padrões de interoperabilidade WS-I
- Proporciona reuso da definição de contrato nas organizações, isto é, XSD e WSDL
- Permite versionamento controlado de serviços e presta-se eventualmente a uma melhor governança.
O WCSF.blue é um add-in para o Visual Studio 2008 e é um projeto open-source hospedado no CodePlex. As funcionalidades da ferramenta incluem:
- Um assistente para WSDL que permite que o desenvolvedor crie WSDL a partir de um ou mais XSDs.
- Um gerador de DataContract (similar ao XSD.exe, XSDObjectGen.exe e Svcutil.exe) que gera os tipos .NET equivalente aos tipos XSD.
- Um gerador de stub de service/endpoint (SVC) e
- Um gerador para o proxy cliente.
A ferramenta ainda tem uma lista de problemas conhecidos, que espera-se que serão eliminados assim que o produto sair da versão beta. A ferramenta também tem um passo-a-passo da versão 0.7 do add-in WSCF.classic que em sua maioria ainda se aplica. Dado que o Microsoft WCF suporta contratos em código, sem precisar de qualquer sinais maior (>) e menor (<), XSD ou WSDL, quão importante é ter ferramentas focadas em modelar contratos de mensagens e serviços usando WSDL e XSD?