简单的轻量级服务层

时间:2012-04-13 11:11:00

标签: .net wcf web-services asp.net-web-api service-layer

我需要在本地公开一些逻辑作为服务......

向/从逻辑发送/接收的对象非常大,信息敏感,逻辑永远不需要从外部公开,只能在本地服务器上使用。

一些MVC开发人员认为它应该使用WEB Api服务公开 - 是否值得实现?

他们的论点是,使用Web API,它更加集成到MVC中,使显示结果更容易(我对这方面的事情一无所知),我担心我们必须实现复杂的授权并牺牲性能。 / p>

是否没有更适合这种情况的轻量级服务层? WCF命名管道对我来说似乎合乎逻辑,或者只是将它作为类库引用 - 是配置文件是一个痛苦但不是世界末日。基本上我们只想在本地提供一些逻辑。

4 个答案:

答案 0 :(得分:4)

Web API是Microsoft'到目前为止,最佳高级HTTP实施。因此,它像以前一样包含HTTP,并且允许在普通MVC下不可能实现的许多灵活性。

内容协商等功能对于任何内部或外部服务都非常重要。

然而,我还会看到WCF提供了更好的凝聚力,因为它是一个纯粹的RPC框架。但它绝对不是轻量级的。我有一个博客here,它讨论了这个问题并做了一些比较(无耻的插件!)。

如果您只关心在私有环境中调用方法,那么WCF就可以了。但请记住,命名管道/ TCP在某些防火墙条件下可能无效。

Web API失去的另一件事是合同。 Web API领域中没有WSDL - 根据您的看法,这可能是好的也可能是坏的。如果贵公司对服务合同非常严格,那么WCF是一个更好的选择。

答案 1 :(得分:1)

Aliostad有一些非常好的观点。除了个人经验之外,我没有更多的东西可以添加。我最近使用mvc启动了一个Web服务,因为在WCF遇到了一些严重的配置问题之后它非常简单。您的问题要求轻量级,简单的实现 - 答案肯定是在这些方面通过WCF的MVC Web API。

答案 2 :(得分:1)

如果您的服务图层将面向休息,您可以查看servicestack

这个实现起来非常简单,不会牺牲性能,并且允许您通过使用属性(如ASP.NET mvc中的动作过滤器)或继承来轻松实现安全性。

答案 3 :(得分:0)

MVC或Web API是不错的选择。如果你想要更轻量级的东西,看看http://www.nuget.org/packages/DuoVia.Net这是我工作的开源项目。