【问题标题】:Can an asp.net mvc application also have a web service?asp.net mvc 应用程序也可以有 Web 服务吗?
【发布时间】:2009-04-25 02:36:30
【问题描述】:

我有一个 asp.net mvc 应用程序,现在我需要添加一个 Web 服务来配合它。什么是最好的解决方案?只需创建一个新的 Web 服务项目并将其添加到我的解决方案中,然后使用不同的 url 将其部署到同一个 Web 服务器?我希望它成为 mvc 应用程序的一部分,只是因为我有我所有的数据库代码。

任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc web-services


    【解决方案1】:

    没有理由不添加 Web 服务项目。

    您声明所有数据库代码都在您的 MVC 项目中。我强烈建议您将其从那里删除到一个单独的类库项目中。这第三个项目将被 Web 服务和 MVC 应用程序使用。

    我还强烈建议您不要将 ASMX Web 服务用于任何新开发。

    仅使用 WCF,除非您别无选择。有一种误解认为 WCF 服务不执行 SOAP - 他们执行,并且 WCF 已经取代了 ASMX。

    【讨论】:

    • 我们的客户已经为我们的网络服务提供了一个客户端。客户端是一个 .net 2.0 应用程序。目标是,一旦我完成了,他们只需要更新他们对我的新 Web 服务的引用并且不进行任何代码更改。 .net 2.0 应用程序能否像 asmx Web 服务一样设置对 wcf 的引用?
    • 是的,可以。只要让 WCF 服务使用“basicHttpBinding”,.NET 2.0 客户端就不会知道其中的区别。
    • 只是好奇...您为什么强烈推荐反对 ASMX?只需几个链接来说明为什么它不好。
    【解决方案2】:

    Web 服务可能意味着基于肥皂的 Web 服务或 RESTful Web 服务。我想不出您为什么不能简单地将 asmx 文件添加到您的项目并开展业务的任何原因。那是基于肥皂的路线。如果您想变得很酷,尽管您可以从控制器操作中简单地返回 xml,并在 MVC 框架上实现一个 RESTful 解决方案。

    【讨论】:

    • 要求是基于肥皂的。我们有一个现有的服务,需要基本上让它在我拥有的新应用程序中工作。
    • 如果我做一个基于soap的服务,每次我更改和部署我的mvc应用程序或者只有当我更改asmx页面时,我的所有客户都必须更新他们的参考。以前从未这样做过,这就是我问的原因。谢谢。
    • 仅当您更改 *.asmx 或其 URL 公开的接口时,客户端才需要更新引用。您可以安全地更改服务的实现以及随意重新编译和重新部署您的网站。
    【解决方案3】:

    如果您想使用常规的 ASP.NET asmx Web 服务,那当然是可能的。这是一个 example from Scott Hanselman,它可以满足您的要求,它还引入了一些其他 ASP.NET 技术。

    您所要做的就是文件 -> 新项目 -> Web 服务,它应该像 Mvc 项目中的常规 ASP.NET 应用程序一样工作。

    【讨论】:

      【解决方案4】:

      我认为这里有几件事。

      您确实可以将 Web 服务添加到 MVC 应用程序。您甚至可以考虑将 Web 服务标识为脚本服务,以使类似 REST 的操作更容易通过 javascript 执行。根据您的情况,这可能不是必需的。

      我认为对于底层架构存在更强烈的问题。如果您将 Web 服务与您的 mvc 应用程序一起放置,因为您的数据库代码已经存在......应该是吗?现在可能是稍微抽象一下数据层的好时机。但是,如果您正在处理一个相对较小的项目并且不需要灵活性,那么当然可以直接添加一个 Web 服务。我想它真正归结为解决您的应用程序的真正需求。

      【讨论】:

        【解决方案5】:

        MVC 建立在 asp.net 框架之上。您应该能够在同一个项目中包含 Web 服务。我还没有这样做,但我知道您可以在同一个项目中将 asp.net 表单应用程序与 MVC 应用程序结合起来。 Web 服务也应该如此。

        【讨论】:

          【解决方案6】:

          除非您的应用程序非常小,否则我建议您为应用程序的每个逻辑部分创建不同的项目。一个很好的起点是为每个项目创建一个项目:

          • 域对象
          • 数据访问
          • 网络服务
          • UI(您的 ASP.NET MVC 应用)

          这提供了与您的架构相对应的清晰分离并支持重用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-30
            相关资源
            最近更新 更多