【问题标题】:MVC Web Api as a middle tier serviceMVC Web Api 作为中间层服务
【发布时间】:2014-02-07 16:15:02
【问题描述】:

在我们最近的应用程序中,我们计划使用 MVC Web API 作为中间层服务。这意味着,前端将访问 WebAPI 中间层服务以从 DB 获取所需的所有数据并将数据更新回 DB。除此之外,我们可能还需要许多其他方法。例如检查用户是否已经存在于系统中,验证地址等。现在我发现我的 webapiconfig.cs 路由变得越来越复杂。例如我在 WebApi 项目中的 UserController 将有以下方法。

公共用户获取(int userId) { }

    public bool IsUserExists(string username)
    {
    }

    public bool UpdateUser([FromBody]User user)
    {
    }

    public bool ChangePassword(string username, string password)
    {
    }

要管理所有这些,我可能需要在 webapiconfig.cs 中进行如此多的路由配置。当其他控制器出现时,我不确定如何处理这些问题。我应该使用 AttributeRouting 吗?任何建议高度赞赏。谢谢。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    如果您可以选择使用web api 2,请选择attribute routing。您可以在配置路由时节省大量开发工作。

    还要确保您遵循基于资源的路由设计和 REST 原则,而不是旧的 RPC 样式路由。即对于基本的 CRUD 操作:-

    • 创建 - HTTP POST/user

    • 读取 - HTTP GET/user/user/{id}

    • 更新 - HTTP PUT/user

    • 删除 - HTTP DELETE/user/{id}

    例如更新用户

    而不是路由/user/UpdateUser

    你应该做一个

    HTTPPUT to /user/
    

    有关 REST 的更多提示,请查看this

    【讨论】:

    • 感谢您的回复。因此,只要有可能,我应该使用 RESTful 服务和其他情况下的属性路由(web api 2)。对于像 IsUserExists/ChangePassword 这样的方法,我必须依赖属性路由。与 WCF 相比,尽管它增加了 SOAP 和其他复杂性,但您认为将 WCF 用于中间层是否更好? (单独托管的服务层)
    • 请注意,asp.net web api 是一种有助于以更简单的方式构建 REST 服务的架构。如果您只需要基于 http 的服务,为什么不使用 web api 本身。对于更改密码等方法,您可以创建像 /user/{userid}/password-change 这样的 url
    • 对不起,我没看懂最后一部分。 “密码更改”是 UserController 中的操作方法吗?
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2013-10-03
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2013-04-19
    相关资源
    最近更新 更多