我们公司拥有Oracle服务总线架构(OSB)。我的部门需要向此OSB公开很少的服务,这些服务稍后将被不同部门和技术的不同应用程序使用。 我有7-8个应用程序,都是基于Microsoft的(VB6,C#,SQL Server)。 我的问题是WCF是否是开发基于数据的服务的好选择?它是否与OSB很好地集成?有任何集成问题吗? 在这种情况下,应该使用什么是最佳实践和wcf的传输协议?
答案 0 :(得分:4)
我参与了使用SOAP / HTTP作为传输协议将WCF与OSB集成的成功项目。
根据以往的经验,要避免两个主要风险:
如果方法是WCF提供数据集成,而OSB提供访问和执行的中心点(以及可能的集成)那么太棒了。这是沙滩上的明确界限。
答案 1 :(得分:1)
我同意凯文的回应。从我所看到的情况来看,WCF与微软产品相当不错,但与其他产品不太相配。如果你保持你的WCF服务实现相当普遍,并将所有繁重的工作留给OSB(例如安全性,策略,寻址),那么你可能没问题。
要注意的另一个陷阱是WCF似乎将XML类型绑定到本机.NET类型。虽然这对大多数类型都是好的,但是让我们感到头疼的一件事是日期。在XML中,您可以使用null日期,但在.NET中,日期是基本类型而不是对象,因此当您尝试将其设置为null时,日期就会消失。您可以通过将它们作为字符串(yuk)处理并在应用程序中转换为/来解决此问题,或者我相信您也可以创建自定义绑定,您可以将日期类型包装在DateWrapper对象中,以满足空值
我个人认为服务总线的模型只是其他地方托管的实现的外观,所以从这个角度来看,我认为在OSB暴露的服务的封面后使用什么技术并不重要。
在传输方面,如果您的数据服务是以非事务方式访问数据(例如检索客户详细信息),那么SOAP / HTTP就可以了。如果您正在处理事务数据,可以考虑使用基于消息传递的传输,如JMS或MQ,从经验来看,WS-ReliableMessaging的支持尚未到处或一致。
希望有所帮助。