代码之家  ›  专栏  ›  技术社区  ›  rmontgomery429

如何在BizTalk中仍然使用DDD和TDD?

  •  2
  • rmontgomery429  · 技术社区  · 17 年前

    我刚开始在工作中接触BizTalk,希望继续使用我学到的关于DDD、TDD等的所有知识。这是可能的吗?还是我在创建管道和编排时总是要使用类似Visio的编辑器?

    5 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    您可以围绕域对象的概念进行设计和开发(尽管在BizTalk和集成开发中,我经常发现接口对象或契约优先设计是一种更有用的思维方式—在我的接口上传递什么消息)。您还可以遵循TDD的“构建最简单可行的东西”和“只构建使测试通过的东西”理念。

    然而,您的问题听起来像是在问更多关于这些设计和开发方法中以代码为中心的方面。

    您希望能够遵循测试驱动的开发方法,首先编写一个执行某个需求但失败的unti测试,然后编写一个满足该需求并使测试通过的方法,这是对的吗?所有这些都是在传统编程语言(如C#)中实现的?

    不幸的是,答案是否定的。大多数BizTalk构件(管道、映射、编排…)只能使用Visual Studio BizTalk插件真正构建。有很多方法可以查看底层的c#代码,但人们永远不会想尝试直接开发这段代码。

    有两种工具 BizUnit BizUnit Extensions 这使您能够控制BizTalk应用程序的执行并对其进行测试,但这实际上只会让您执行更多受控和测试驱动的集成测试。

    但遗憾的是,代码中TDD和DDD的详细细节无法翻译。

    有关一些可能有用的相关讨论,请参见以下问题:

    Mocking WebService consumed by a Biztalk Request-Response port

        2
  •  1
  •   tomasr    17 年前

    如果您使用这种功能,如果我自己可以这么说的话,它是非常有用的(我在自己的项目中大量使用它)。

    你可以找到图书馆的简介 here github wiki .

        3
  •  1
  •   Santosh Benjamin    17 年前

    我同意卡拉斯的评论。许多人将此作为不喜欢BizUnit框架的理由。但是看看BizUnit3.0。它有一个对象模型,允许您用C#/VB而不是XML编写整个测试步骤。BizUnitExtensions也正在升级到新的对象模型。

    基于XML的系统的优点是更容易生成测试步骤,并且在更新步骤时无需重新编译。在我自己的扩展库中,我发现XmlPokeStep(受NAnt启发)非常有用。我的团队可以动态更新测试步骤xml。例如,假设我们必须调用一个Web服务来创建一个客户记录,然后检查数据库中的同一记录。现在,如果Web服务返回ID(动态生成),我们可以动态更新下一步的测试步骤(当然不是在同一个xml文件中),然后使用该步骤检查数据库。

    从编码的角度来看,intellisense现在应该在BizUnit3.0中解决。过去,缺少XSD确实让事情变得困难。我希望得到一个XSD,这将有助于智能感知。BizUnit的旧版本中也有一些片段,但这些片段尚未更新,如果有时间的话,我可能会尝试一下。

    但回到TDD问题,如果您理解TDD背后的一些意图——规范或行为驱动元素,那么您也可以在一定程度上将其应用于Biztalk开发,因为Biztalk在很大程度上基于契约驱动的开发。因此,您可以首先指定接口并创建存根编排等来处理它们,然后构建核心。您可以在那时编写BizUnit测试。我希望有一些工具可以自动化这个过程,但现在没有。

    只是一些想法。希望这有帮助。我认为更广泛地写博客是值得的。

    Rgds 本吉

        4
  •  0
  •   user352    17 年前

    http://www.codeplex.com/bizunit

    BizTalk Server 2009预计将具有更多集成的IDE可测试性。

    干杯 海米尔。

        5
  •  0
  •   ckarras    17 年前

    BizUnit使用起来确实很麻烦,因为所有的测试都是用XML而不是编程语言编写的。

    另一个有趣的选择,我会考虑未来的项目是 BooUnit