【问题标题】:Simple lightweight service layer简单的轻量级服务层
【发布时间】:2012-04-25 18:03:30
【问题描述】:

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

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

一些 MVC 开发人员争辩说应该使用 WEB Api 服务来公开它——这样做是否值得?

他们的论点是,使用 Web API,它可以更多地集成到 MVC 中,并且更容易显示结果(我对这方面的事情一无所知),我担心我们将不得不实现复杂的授权并牺牲性能。

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

【问题讨论】:

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


    【解决方案1】:

    MVC 或 Web API 是不错的选择。如果您想要更轻量级的东西,请查看http://www.nuget.org/packages/DuoVia.Net,这是我从事的一个开源项目。

    【讨论】:

      【解决方案2】:

      如果你的服务层是面向rest的,你可以看看servicestack

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

      【讨论】:

        【解决方案3】:

        Aliostad 有一些非常好的观点。除了个人经验,我没有太多要补充的。在 WCF 遇到一些严重的配置问题后,我最近使用 mvc 启动了一个 Web 服务,这非常容易。您的问题要求轻量级、简单的实现——在这些方面,答案肯定是 MVC Web API over WCF。

        【讨论】:

          【解决方案4】:

          Web API 是 Microsoft 迄今为止的最佳高级 HTTP 实现。因此,它以前所未有的方式包含 HTTP,并提供了许多在普通 MVC 下无法实现的灵活性。

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

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

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

          您使用 Web API 丢失的另一件事是合同。 Web API 领域中没有 WSDL - 这可能是好是坏取决于您如何看待它。如果您的公司对服务合同非常严格,WCF 是更好的选择。

          【讨论】:

          • 感谢您的信息,但如果我让您将颜色别在桅杆上,您会选择哪一种?
          • 个人选择 Web API,因为它更好地拥抱变化,而且我个人对 HTTP/REST 充满热情。
          • @baileyswalk 为其他人等待更多的 cmets。我希望其他人也做出贡献。
          • 授权怎么样 - 服务不需要暴露给外界。
          • @baileyswalk 你可以使用基于令牌的、OAuth、windows 身份验证……非常灵活。
          猜你喜欢
          • 2014-06-07
          • 2011-05-02
          • 1970-01-01
          • 1970-01-01
          • 2010-09-09
          • 1970-01-01
          • 2010-10-02
          • 2022-01-19
          • 1970-01-01
          相关资源
          最近更新 更多