2

我们公司拥有 Oracle 服务总线架构 (OSB)。我的部门需要向这个 OSB 公开一些服务,这些服务稍后将被不同部门和技术的不同应用程序使用。我有 7-8 个应用程序,并且都是基于 Microsoft 的(VB6、C#、SQL Server)。我的问题是 WCF 是否是开发我们基于数据的服务的好选择?它是否与 OSB 很好地集成在一起?有没有集成问题?在这种情况下,最佳实践是什么以及应该使用哪种 wcf 传输协议?

4

2 回答 2

4

我参与了成功的项目,这些项目将 WCF 与 OSB 集成在一起,使用 SOAP/HTTP 作为传输协议。

根据以往的经验,要避免两个主要风险:

  1. 架构描述——你需要弄清楚编排的位置,因为这两个框架都支持它,而且 WCF 有各种奇怪和古怪的特性,可以提供性能优势。
  2. 安全集成——虽然这两个框架都提供了通用安全标准的实现,但我几年前的经验是它们不能很好地协同工作。

如果方法是 WCF 来提供数据集成,而 OSB 来提供访问和执行的中心点(以及可能的集成),那就太棒了。这是一条清晰的界限。

于 2011-04-13T04:20:55.573 回答
1

我同意凯文的回答。据我所见,WCF 与 Microsoft 产品配合得很好,但与其他产品配合得不是很好。如果您保持您的 WCF 服务实现相当普通,并将所有繁重的工作留给 OSB(例如安全性、策略、寻址),那么您可能会没事。

另一个需要注意的陷阱是 WCF 似乎将 XML 类型绑定到本机 .NET 类型。虽然这对于大多数类型来说都可以,但让我们头疼的一件事是日期。在 XML 中,您可以有一个空日期,但在 .NET 中,日期是一个原始类型而不是一个对象,因此当您尝试将其设为空时就会消失。您可以通过将它们作为字符串(yuk)处理并在应用程序中转换为/从来解决这个问题,或者我相信您也可以创建一个自定义绑定,您可以将日期类型包装在 DateWrapper 对象中,以满足空值.

就我个人而言,我喜欢服务总线模型只是托管在其他地方的实现的外观,所以从这个角度来看,我认为在 OSB 公开服务的封面后面使用什么技术并不重要。

  • 如果您想使用 WCF,因为您喜欢它的功能并且它与您的应用程序很好地集成,那就去吧。
  • 如果您只是因为它与服务有关并且它似乎很适合 OSB 而选择它,那么也许看看是否有其他替代方案对您和您的开发团队来说开销更低。

在传输方面,如果您的数据服务是以非事务性方式访问数据(例如检索客户详细信息),那么 SOAP/HTTP 就可以了。如果您正在处理事务数据,则可以考虑使用基于消息传递的传输,如 JMS 或 MQ,因为根据经验,对 WS-ReliableMessaging 的支持还不是无处不在,也不是一致的。

希望有帮助。

于 2011-04-14T05:07:45.123 回答