我们有一个ASP.Net C#应用程序,它需要某种形式的Web服务实现来与其他应用程序集成。目前我们一直在寻找servicestack并使用ESB,例如骡。
我正在尝试找出将Mule(如Mule)集成到ASP.Net应用程序中的最佳方法。
我们是否需要在ASP.Net应用程序中构建Web服务,以便ESB可以与它集成?
如果是,那么选择与ASP.Net应用程序和Mule兼容的Web服务类型(例如REST,WCF,SOAP,Servicestack)的好方法是什么?
答案 0 :(得分:2)
我们是否需要在我们的ASP.Net应用程序中构建一个Web服务 ESB可以与它集成吗?
通常情况恰恰相反。像Mule这样的集成中间件只是为了能够连接到现有系统而不改变它们而说出大量协议。
如果是,那么选择Web服务类型的好方法是什么 (例如,REST,WCF,SOAP,Servicestack)将与一个兼容 ASP.Net应用程序和Mule?
如果您的应用程序确实没有预先存在的通道,您可以使用它来集成(甚至不是简单的Web表单HTTP POST?真的吗?)并且您希望公开API以便集成中间件可以连接到它,选择映射到您正在创建的API样式的体系结构/技术(面向资源的API的REST,面向RPC的API的SOAP)。
答案 1 :(得分:2)
这听起来倒退了。您需要集成什么,以及您尝试提供哪些功能?
Web服务与其实现分离,如果您尝试以可互操作的方式公开系统功能,则可以选择使用Web服务,以便广泛的客户端可以访问它。
您在Web服务中执行的操作取决于您,即您可以连接到ESB。没有什么能阻止你这样做。 ServiceStack还支持从现有的ASP.NET(或MVC应用程序)中进行托管,请参阅Hello World example以了解配置ServiceStack的不同方法。
REST / RPC与Web服务的设计有关,ServiceStack支持这两种模型。如果要在使用不同的HTTP谓词调用服务时提供不同的实现,则从 RestServiceBase 继承。如果您希望使用相同的实现,无论如何调用它,都可以继承 ServiceBase 。 This article显示了REST与RPC / SOAP之间的区别 - 以及如何在ServiceStack中同时支持这两者。
因此,如果您公开单个操作(或者想要支持SOAP),请使用 ServiceBase ,如果您希望使用不同的HTTP动词来管理“资源”,则使用 > RestServiceBase 强>