我需要在本地公开一些逻辑作为服务......
向/从逻辑发送/接收的对象非常大,信息敏感,逻辑永远不需要从外部公开,只能在本地服务器上使用。
一些MVC开发人员认为它应该使用WEB Api服务公开 - 是否值得实现?
他们的论点是,使用Web API,它更加集成到MVC中,使显示结果更容易(我对这方面的事情一无所知),我担心我们必须实现复杂的授权并牺牲性能。 / p>
是否没有更适合这种情况的轻量级服务层? WCF命名管道对我来说似乎合乎逻辑,或者只是将它作为类库引用 - 是配置文件是一个痛苦但不是世界末日。基本上我们只想在本地提供一些逻辑。
答案 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这是我工作的开源项目。