msdn20_capa.JPG

Clique aqui para ler todos os artigos desta edição

 

Desenvolvimento de Serviços Contract-First

por Aaron Skonnard

Este artigo discute

Este artigo usa as seguintes tecnologias:

·          Visão de contratos de serviços através de Web Services e os padrões utilizados

 

Download:

 

Chapéu

Serviços

 

 

Neste artigo criarei o caso para o desenvolvimento contract-first e discutirei o modelo de programação ASMX. Como prosseguimento, orientarei você através de um processo de desenvolvimento contract-first prático usando as ferramentas de hoje e demonstrarei uma técnica híbrida que poderá lhe dar um bom equilíbrio entre operabilidade e produtividade.

 

Lições Aprendidas do COM

O desvio do desenvolvimento da orientação a objeto para o desenvolvimento de componentes possibilitou criar sistemas flexíveis nos quais os componentes individuais poderiam evoluir de forma independente sem afetar o restante do sistema. A tecnologia de componentes tornou isso possível reforçando limites rígidos e restringindo o acesso aos objetos através de definições de interface explícitas. Uma abordagem de desenvolvimento baseada em interface concentra-se no compartilhamento de definições de interface explícitas, ou "contratos", expressos em uma linguagem facilmente compreendida por outros, removendo as dependências sobre os detalhes de implementação e oferecendo interoperabilidade na linguagem de programação. Existem lições de design valiosas a serem aprendidas da experiência com componentes à medida que o SO evolui. Uma das mais importantes gira em torno do design do contrato.

Para usar uma classe encontrada dentro de um componente COM, você pede ao runtime que ative uma instância através de uma fábrica de classes. O runtime retorna então uma referência de interface para se comunicar com a instância do objeto. Todas as interações posteriores com a instância ocorrem através da referência de interface fornecida. Esse modelo baseado em interface protege o consumidor de todos os detalhes de implementação das classes. A única dependência assumida pelo cliente nesta situação é o vínculo com a definição da interface. Desde que a definição da interface não seja alterada, a implementação poderá ser atualizada com bug fixes ou com outras melhorias necessárias.

O desacoplamento fornecido pelo desenvolvimento baseado em interface também possibilita distribuir componentes entre diferentes contextos sem causar impacto no modelo de programação do consumidor. No que se refere ao modelo de programação, não faz diferença para o consumidor se a instância é local (na mesma máquina) ou remota (em uma máquina separada), embora existam algumas considerações de design óbvias. A infra-estrutura DCOM lida com isso através de uma camada de intercepção que cuida da serialização das chamadas de método nas mensagens de nível de conexão apropriada para a transmissão entre as máquinas. Ela lida com a recriação das pilhas de chamada na máquina remota, invocando a instância e retornando todos os valores. Basicamente, a definição da interface informa à infra-estrutura DCOM o que fazer e, desse modo, guia o contrato no nível de transmissão do sistema. ...

Quer ler esse conteúdo completo? Tenha acesso completo