1

我正在构建一个后端应用程序,该应用程序需要从 50 多个第 3 方 Web 服务中获取各种时间表的数据,并且这个数字将继续增长。这些服务的数据目前可以分为 3 种类型,因此每个响应需要映射到 3 个已知模式中的 1 个。

编写自定义 C# 来访问每个 Web 服务似乎是一场管理噩梦,更不用说在代码中拥有所有数据映射了。

目前的想法是在 BizTalk 2009 的基础上构建它,仍然需要大量维护,但至少是一个具有映射/转换功能的明确定义的平台。

我正在寻找任何可能以前做过这件事的人的建议,这真的能给我们带来什么吗?我知道 BTS 中缺乏轮询功能,但是有足够的变通方法可以让您对解决方案感到满意。

谢谢!

4

2 回答 2

3

听到有人考虑 BizTalk 而不是 C# 令人耳目一新!

我推荐 BizTalk 方法,利用 ESB Toolkit 2.0 和 UDDI Services v3(在 BizTalk Server 2009 中找到)的功能,原因如下:

  • 可以在 UDDI 注册中心维护 50 个 Web 服务端点——这是一个可以添加和维护未来端点的公共管理门户;
  • 每个 Web 服务调用都会被轮询,并将生成的消息带到总线上,映射到三个消息之一并传递到特定的端点;

关于映射,需要为三种常见消息类型和每个 Web 服务响应定义模式;然后需要创建映射以将响应消息映射到适当的公共模式。

在这种情况下使用 ESB 功能的美妙之处在于解决方案的任何方面都不会紧密耦合:当接收到 Web 服务响应时,会从响应消息的属性中解析(在运行时)正确的映射。一旦消息被映射到它的通用模式格式,它就可以被相应地路由。

于 2010-05-05T08:17:55.830 回答
2

在之前实施过这样的解决方案之后,确定工具集的一个重要因素将是您需要调用的 Web 服务的复杂性。使用 BizTalk,您将为每个第 3 方 Web 服务开发转换。大多数情况下这是一项简单的任务,但您很可能会遇到映射变得不平凡的情况 - 在这些情况下,实现映射所需的时间迅速超过直接在 C# 中编写映射所需的等效时间。

是否有任何 Web 服务需要多次调用?例如,在轮询之前获取身份验证令牌?此类服务将需要更复杂的编排才能通过 BizTalk 调用。

一般来说,我认为您会发现开发和维护针对该问题的有针对性的 C# 解决方案比使用 BizTalk 之类的企业系统更容易。根据我实施 BizTalk 解决方案的经验,所需的维护量和解决问题的难度大大超过了平台提供的任何好处。但是,我的经验是 BizTalk 2006 R2 - 2009 可能已经解决了我们遇到的问题。

于 2010-05-05T08:52:38.140 回答