Pergunta

Eu só comecei a entrar em BizTalk no trabalho e gostariam de continuar usando tudo o que eu aprendi sobre DDD, TDD, etc. isso é possível ou estou sempre vai ter que usar o Visio como editores ao criar coisas como pipelines e orquestrações?

Foi útil?

Solução

Você pode certamente aplicar um monte dos conceitos de TDD e DDD para o desenvolvimento BizTalk.

Você pode projetar e desenvolver em torno do conceito de objetos de domínio (embora em BizTalk e desenvolvimento integração muitas vezes eu achar objetos de interface ou contrato primeiro projeto a ser uma maneira mais útil de pensar - o que as mensagens são passadas para os meus as interfaces). E você também pode seguir o 'Construir o mais simples possível coisa que irá trabalhar' e 'só construir as coisas que os testes de make passar' filosofias de TDD.

No entanto, os seus sons pergunta como você está pedindo mais sobre os lados de código-centric destes projeto e desenvolvimento se aproxima.

Am I certo de que você gostaria de ser capaz de seguir a abordagem de desenvolvimento orientado a testes de primeira escrita um teste unti que exerce uma exigência e falhar, em seguida, escrever um método que cumpre a exigência e faz com que o teste para passar - tudo dentro uma linguagem de programação tradicionais, como C #?

Para que, infelizmente, a resposta é não. A maioria dos BizTalk artefatos (oleodutos, mapas, orquestrações ...) só pode ser realmente construído usando os plugins o Visual Studio BizTalk. Existem maneiras de ver o código subjacente c #, mas nunca iria querer experimentar e desenvolver directamente esse código.

Existem duas ferramentas BizUnit e BizUnit extensões que dar alguma capacidade de controlar a execução de aplicações BizTalk e testá-los, mas isso realmente só recebe-lo ao ponto de realizar mais testes de integração impulsionado teste mais controlada e .

As formas que você arrastar para superfície de design do Orchestration será em grande parte apenas fazer a sua coisa como uma unidade opaca de execução. E orquestrações, oleodutos, mapas etc ... todas estas coisas são em grande parte destinado a ser executado (e testado) dentro de uma solução BizTalk inteira.

práticas de design bom (tomando ponteiros de abordagens como TDD) vai levar a quebrar soluções BizTalk em pedaços menores, mais modulares e testáveis, e estão lá são maneiras de testar coisas como dutos em isolamento.

Mas os detalhes específicos de TDD e DDD em código, infelizmente, não se traduzem.

Para alguns discussão relacionada que pode ser útil ver esta pergunta:

Mocking WebService consumida por um Request-Response Biztalk port

Outras dicas

Se você costuma fazer uso de dutos e componentes de pipeline personalizado no BizTalk, você pode encontrar a minha própria biblioteca PipelineTesting útil. Ele permite que você usar NUnit (ou qualquer outro framework de testes que você preferir) para criar testes automatizados para condutas completas, componentes de pipeline específicas nem esquemas (tais como esquemas de arquivo simples).

É muito útil se você usar esse tipo de funcionalidade, se assim posso dizer a mim mesmo (I fazem uso pesado dele em meus próprios projetos).

Você pode encontrar uma introdução à biblioteca aqui , eo código completo sobre github . Há também alguma documentação mais detalhada sobre a sua wiki .

Eu concordo com os comentários por CKarras. Muitas pessoas têm citado que, como sua razão para não gostar do quadro BizUnit. Mas dê uma olhada BizUnit 3.0. Ele tem um modelo de objeto que permite que você escreva a etapa de teste inteiro em C # / VB em vez de XML. BizUnitExtensions está sendo atualizado para o novo modelo de objeto também.

As vantagens do sistema baseado em XML é que é mais fácil de gerar etapas do teste e não há necessidade de recompilar quando você atualizar os passos. Na minha própria biblioteca de extensões, achei o XmlPokeStep (inspirado NAnt) para ser muito útil. Minha equipe pode atualizar teste passo xml na mosca. Por exemplo, vamos dizer que nós tivemos que chamar um webservice que criou um registro de cliente e então verificado um banco de dados para esse mesmo registro. Agora, se o webservice devolveu o ID (gerado dinamicamente), poderíamos atualizar a etapa de teste para o próximo passo na mosca (não no mesmo arquivo xml é claro) e depois usar isso para verificar o banco de dados.

Do ponto de vista de codificação, o intellisense devem ser abordados agora na BizUnit 3.0. A falta de um XSD fez tornar as coisas difíceis no passado. Estou esperando para obter um XSD fora, que vai ajudar no intellisense. Havia alguns trechos, bem como para uma versão antiga do BizUnit mas aqueles não reembolsaram foi atualizado, talvez se há tempo que eu vou dar um que vá.

Mas voltando à questão TDD, se você tirar um pouco da intenção por trás TDD - a especificação ou comportamento dirigido elemento, então você pode aplicá-lo em certa medida para o desenvolvimento Biztalk, mas também porque BizTalk é baseada fortemente em desenvolvimento orientado contrato . Então você pode especificar suas interfaces de primeira e criar orquestrações stub etc para lidar com eles e, em seguida, construir o núcleo. Você poderia escrever os testes BizUnit naquela época. Eu gostaria que houvesse algumas ferramentas que podem automatizar esse processo, mas agora há Arent.

Usando estruturas tais como a orientação ESB também pode ajudar a dar uma plataforma de base para trabalhar fora para que você possa implementar os principais casos de uso através de seu sistema de forma iterativa.

Apenas alguns pensamentos. Espero que isto ajude. Eu acho que vale a blogar sobre mais extensivamente. Este é um bom tema para discuss.Do de ping-me se você tiver alguma dúvida ou sempre podemos discutir mais aqui.

Rgds Benjy

Você pode usar BizUnit para criar e reutilizar casos de testes genéricos, tanto no código e Excel (para cenários funcionais)

http://www.codeplex.com/bizunit

é esperado BizTalk Server 2009 para ter mais IDE testability integrada.

Felicidades Hemil.

BizUnit é realmente uma dor de usar, porque todos os testes são escritos em XML em vez de uma linguagem de programação.

Em nossos projetos, temos "portado" partes do BizUnit para um quadro antigo simples teste C #. Isso nos permite usar a biblioteca de passos de BizUnit diretamente no código C # NUnit / MSTest. Isso faz com que os testes que são mais fáceis de gravação (usando VS Intellisense), mais flexível, e mais importante, mais fácil de depurar no caso de uma falha no teste. A principal desvantagem dessa abordagem é que temos bifurcada da principal fonte BizUnit.

Outra opção interessante eu consideraria para projetos futuros é BooUnit , que é um wrapper Boo no topo de BizUnit. Tem vantagens semelhantes ao nosso BizUnit "port", mas também tem a vantagem de ainda usando BizUnit vez de bifurcar dela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top