SOA样式架构与ASP.NET Web Api建议

时间:2014-01-28 06:16:36

标签: .net architecture asp.net-web-api soa

您能给我一些Web Api内置的面向服务系统的例子吗? 目前我正在考虑两种方法:

  • 首先是简单明了 - 将每个服务放在自己的Web应用程序中,彼此独立地在IIS中托管。我不喜欢它有一些原因:每个开发人员都必须自己创建Web Api项目并在IIS上部署,没有集中的Api Discovery,没有集中的安全机制等......

  • 我认为第二个更好,但也很复杂 - 只有1个服务端点,我称之为网关,所有服务调用都通过此端点,并且特定文件夹中有“插件”样式系统调用此“插件文件夹”,每个新服务将在此文件夹中部署为一堆 dll -s(无自有服务端点),最后读取所有控制器(针对不同服务/项目当然)来自此文件夹中的Web Api IAssemblyResolver

如果我选择第二种方法,我有以下优点: 我的团队中的每个开发人员都可以“发布”自己的服务而无需触及WebApi,只能在“插件文件夹”中复制项目的 dll -s。 在这种情况下,路由和Api发现也很容易,样本路由 - {Application/ServiceName}/{version}/{controller}/{action}/{id}。我对系统等进行了集中安全控制。

任何建议或样本和教程将不胜感激。

我知道SOA与平台和技术无关,但我认为不是更好的标题。

2 个答案:

答案 0 :(得分:1)

作为单独的Web应用程序托管服务的优点是它们可以独立扩展并处于不同的发布周期。 如果您向服务发出ajax请求,则其他注意事项是跨域问题。如果它们是单独托管的,它们将位于不同的域上,这意味着您必须执行类似CORS,JSONP或反向代理的操作以允许来自浏览器的Ajax请求。

答案 1 :(得分:0)

您不会在Web上找到太多使用ASP.NET Web API描述SOA的文章,我喜欢使用它。不要陷入Web API和WCF之间的比较(可能的例外是WCF的REST方面,但为什么还要麻烦,在这种情况下使用Web API)。关于WCF,https://github.com/dotnet/wcf/issues/1200在ASP.NET Core上进行了很好的讨论。密切关注未来的.NET版本和WCF实现的功能,无论它是如何上市的。

我认为您应该问自己是否需要/需要在SOA环境中托管服务。保险公司等大型公司,如果共享API并在防火墙后面这样做,通常会使用SOA。如果您不需要代理来调用应用程序服务器上存在的服务,则可能不需要复杂的体系结构。在这种情况下,ASP.NET Web API可能是一个完美的解决方案。如果您将在典型的SOA环境中进行开发,我现在推荐使用WCF和.NET 4.6.2,以及将来的.NET版本以支持WCF。