【问题标题】:Is WCF good option to expose services to Oracle Service BusWCF 是向 Oracle Service Bus 公开服务的好选择吗
【发布时间】:2011-08-04 05:31:04
【问题描述】:

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

【问题讨论】:

  • 我的经验表明,在自定义消息总线的情况下,WCF 开始增加不必要的复杂性和开销,并且使用供应商的 API 更快、更方便。抱歉,我不能具体说明 WCF 和 Oracle Service Bus。
  • 根据您的经验,您是否建议使用基于 http 的 .Net 网络服务更好?如果已经放置了 OSB 架构,wcf 会不会增加任何价值?
  • 如果您想使用 OSB,请查看 Oracle 为 .net 提供的内容。如果您不想使用 OSB,请使用 WCF。

标签: .net sql-server wcf soa osb


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 2011-06-18
      • 2016-09-07
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多