【问题标题】:ASP.NET MVC Adding a Web Service LayerASP.NET MVC 添加 Web 服务层
【发布时间】:2011-10-10 10:00:17
【问题描述】:

我想听听一些人对添加网络服务层的意见。在我的工作中,我们想开始使用 Web 服务来处理我们的一些操作。

我们为 ASP.NET MVC 应用程序遵循的当前项目结构:

MVC App(视图/控制器/ViewModel/服务层)--> BAL(业务访问层)--> DAL(数据访问层)

MVC 应用、BAL 和 DAL 是单独的程序集。

还有一个域(模型)程序集在 MVC/BAL/DAL 层之间共享。

计划是创建一个可以处理所有安全功能的 Web 服务。此 Web 服务将由多个 Web 应用程序使用。当我们对 Security Web 服务进行更改时,我们只想在一个地方修改代码,而不是每个 Web 应用程序。因此,如果 MVC 项目中没有任何内容与 Web 服务相关联,我会更喜欢。

所以我想在 BAL 和 DAL 层之间添加一个 Web 服务层。

所以是这样的:

MVC 项目(视图/控制器/视图模型/服务层)

来电

BAL 层(处理缓存/数据库事务)

来电

网络服务层

来电

DAL 层

你有什么意见?

【问题讨论】:

    标签: asp.net-mvc web-services asp.net-mvc-2


    【解决方案1】:

    一些想法。

    您将 Web 服务层置于 BAL 和 DAL 之间。这意味着一切都需要通过您的 Web 服务,包括与安全无关的功能。我认为这增加了额外的复杂性。如果多个网站都在使用 Web 服务,请将其创建为应用程序/服务的支持。然后,您可以根据需要服务的层从应用程序的不同层调用服务。通常,您会创建一个具有干净接口的 Web 服务包装器,这样您就可以轻松地从应用程序的任何层调用 Web 服务。

    为了便于讨论,假设您的 Web 服务处理了用户登录名和密码的验证。您可以在 MVC 项目中直接连接到您的 Web 服务包装器,以查看用户数据是否有效,如果有效,您可以将其登录。之后,如果用户执行一个功能,业务层需要检查用户是否有权限,该层可以使用api wrapper调用api查看用户是否有权限,等等。

                                          MVC APP
                                          /    \
                                        BAL --> Web Service Wrapper
                                        /        \
                                      DAL        WCF WEB SERVICE
    

    【讨论】:

    • 感谢您的回复。我想在我的情况下,BAL 将充当 WCF Web 服务的包装器。对于需要 Web 服务的功能,Web 服务层将位于 BAL 和 DAL 之间。 DAL 程序集将存在于 Web 服务部署和 MVC 应用程序部署中,因此不需要一切都需要 Web 服务。这行得通吗?
    • 好吧,什么都行。归结为它有多漂亮,维护、更改和支持有多容易。如果它变得太复杂,就很难让团队成员跟上进度。如果您还没有阅读 fowlers 关于架构的书籍,这可能是开始了解一些非常常见且众所周知的架构和设计模式的好地方。 amazon.com/Patterns-Enterprise-Application-Architecture-Martin/…
    【解决方案2】:

    作为一个支持如此荒谬分层的应用程序的人。

    • 图形界面
    • BAL
    • DAL 到 Web 服务
    • 网络服务
    • WebBAL
    • WebDAL

    我建议将您的 GUI 尽可能靠近您的网络服务。

    【讨论】:

    • 所以您建议类似: GUI(controller/view) --> Web Service --> BAL --> DAL 我对此的担心是在 GUI 程序集中有代理类。如果我必须重新设计 Web 服务,我将不得不为使用它的 wach 应用程序调整 GUI(视图/控制器)层。我是网络服务的新手,所以如果我出去吃午饭,请告诉我。
    • 您不必在每次更改 Web 服务引用时重新生成它。只要您发送所有必需的参数并且不更改返回数据类型上的现有字段,您的网络参考应该仍然能够正常工作。
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2011-09-18
    • 2012-01-10
    相关资源
    最近更新 更多