了解 BizTalk 开发

Understanding BizTalk Development

从 .net 开发人员的角度来看,我最近被介绍到 BizTalk。我期待的是一系列服务参考、自动映射 类 和工作流。我真的没想到会有大量 XSD 使用,而且我对编排图感到惊讶。

我只是不明白为什么它不像一堆建立在 WCF 基础上的企业功能。

任何人都可以帮助我理解 BizTalk 的设计背后的想法吗?

BizTalk 可以与 WCF 服务一起使用,但对于一些简单的场景则不需要。它还可以在需要自定义非 WCF 适配器的情况下工作 - 它包括许多开箱即用的有用适配器,例如 FTP、SFTP、文件系统访问、POP3、Sharepoint、Azure ServiceBus 、MSMQ 和 MQSeries。可以为不公开 WCF 端点的遗留系统和服务编写自定义适配器。对于 WCF 有用的情况,有许多 WCF 适配器,与从头开始制定 WCF 服务相比,使用和配置这些适配器更容易一些。 BizTalk 还可以将其服务公开为 WCF 端点。

BizTalk 的真正强大之处在于它的服务器架构,它允许高可用性、持久的消息传递、暂停和恢复消息、高级调试选项以及工件的快速开发(如映射和编排)。它还为 EDI、HL7 和 WCF LoB 集成工作提供了一些开箱即用的强大支持。

XML 是 BizTalk 消息传递引擎的核心和灵魂。这很好,因为 XML 标准化且功能强大;这很糟糕,因为 XML 有时很笨拙,尤其是在处理较大的消息和 BLOB 时。

ReceivePorts 将数据导入 BizTalk 的消息传递引擎(使用适配器和接收位置)。发送端口使用上述适配器发送 XML(或其他)数据。

Maps 在幕后使用 XSLT 来转换 XML 消息;可以指示地图使用自定义 XSLT,或者也可以使用 C#、VB 或 JScript。然而,对于大多数琐碎的映射任务,可视化映射界面允许快速开发和测试不同消息类型之间的映射。它们可以从接收端口、发送端口或编排调用。

Orchestrations 或多或少是使用 XLANGs 语言的服务。如果设计得当,它们可以提供非常强大的业务逻辑处理和应用程序处理,所有这些都具有 BizTalk 提供的上述体系结构功能(持久消息传递、高可用性)。

我换个角度看。 BizTalk 比 WCF 更符合 Web/SOAP 和跨平台标准,Xml 和现在的 JSON。 BizTalk 还支持比 WCF 更多的协议。 BizTalk 支持 WCF,而不是相反。

WCF 堆栈可以在 serialize/deserialize .Net 类 上构建合同是自定义方法。请记住,WCF 只是对您隐藏了所有 Xml/Xsd,它仍然存在并且与 BizTalk 使用的相同。

BizTalk 是在 WCF 之前设计和交付的,是一种可靠的跨平台多协议集成引擎。就能力而言,BizTalk 堆栈作为一个整体比 WCF 高出几个数量级。实际上,我们在 BizTalk 应用程序中花费了大量时间来解决 WCF 的局限性。*

*为清楚起见,我主要指的是 OOB 绑定元素及其在实际实现中的应用。 WCF 作为一个框架是完全可用的。

我的研究表明 BizTalk 自 2004 年以来基本保持不变,因此不会经历在 Microsoft 堆栈的其他领域看到的那种技术融合。其原因似乎是从 BizTalk 2002 到 2004 的痛苦迁移,没有人愿意复制。让我想起 Entity Framework.

的许多版本

在 2010-2011 年,出现了 "BizTalk is dead" 运动,承诺结合使用 WCF、Workflow Foundation 和 Azure 上的 AppFabric 将成为替代工具。自 2012 年以来,几乎没有人谈论它——看起来这两种技术都有其独特的优点和缺点,但两者永远不会竞争。

BizTalk 具有开箱即用的节流和磁盘持久性以及其他地方未标准化(企业级)的各种适配器的优势。就好像它的姿态是在驯服一头笨重的野兽。它似乎仍然因利用过去 10 年出现的可扩展性选项而受到影响。另一个堆栈更符合我最初的预期,但缺乏企业精神。

我不太清楚 BizTalk 被描述为 publish/subscribe 模型与...其他模型。需要更多地研究这一点。

总而言之,我不喜欢任何一种技术,我认为它们都需要改进。

感谢所有阅读此问题的人和回答此问题的人。我知道主观答案对堆栈溢出来说不是什么大事。