【发布时间】:2009-04-25 02:36:30
【问题描述】:
我有一个 asp.net mvc 应用程序,现在我需要添加一个 Web 服务来配合它。什么是最好的解决方案?只需创建一个新的 Web 服务项目并将其添加到我的解决方案中,然后使用不同的 url 将其部署到同一个 Web 服务器?我希望它成为 mvc 应用程序的一部分,只是因为我有我所有的数据库代码。
任何建议将不胜感激。谢谢。
【问题讨论】:
标签: c# asp.net asp.net-mvc web-services
我有一个 asp.net mvc 应用程序,现在我需要添加一个 Web 服务来配合它。什么是最好的解决方案?只需创建一个新的 Web 服务项目并将其添加到我的解决方案中,然后使用不同的 url 将其部署到同一个 Web 服务器?我希望它成为 mvc 应用程序的一部分,只是因为我有我所有的数据库代码。
任何建议将不胜感激。谢谢。
【问题讨论】:
标签: c# asp.net asp.net-mvc web-services
没有理由不添加 Web 服务项目。
您声明所有数据库代码都在您的 MVC 项目中。我强烈建议您将其从那里删除到一个单独的类库项目中。这第三个项目将被 Web 服务和 MVC 应用程序使用。
我还强烈建议您不要将 ASMX Web 服务用于任何新开发。
仅使用 WCF,除非您别无选择。有一种误解认为 WCF 服务不执行 SOAP - 他们执行,并且 WCF 已经取代了 ASMX。
【讨论】:
Web 服务可能意味着基于肥皂的 Web 服务或 RESTful Web 服务。我想不出您为什么不能简单地将 asmx 文件添加到您的项目并开展业务的任何原因。那是基于肥皂的路线。如果您想变得很酷,尽管您可以从控制器操作中简单地返回 xml,并在 MVC 框架上实现一个 RESTful 解决方案。
【讨论】:
如果您想使用常规的 ASP.NET asmx Web 服务,那当然是可能的。这是一个 example from Scott Hanselman,它可以满足您的要求,它还引入了一些其他 ASP.NET 技术。
您所要做的就是文件 -> 新项目 -> Web 服务,它应该像 Mvc 项目中的常规 ASP.NET 应用程序一样工作。
【讨论】:
我认为这里有几件事。
您确实可以将 Web 服务添加到 MVC 应用程序。您甚至可以考虑将 Web 服务标识为脚本服务,以使类似 REST 的操作更容易通过 javascript 执行。根据您的情况,这可能不是必需的。
我认为对于底层架构存在更强烈的问题。如果您将 Web 服务与您的 mvc 应用程序一起放置,因为您的数据库代码已经存在......应该是吗?现在可能是稍微抽象一下数据层的好时机。但是,如果您正在处理一个相对较小的项目并且不需要灵活性,那么当然可以直接添加一个 Web 服务。我想它真正归结为解决您的应用程序的真正需求。
【讨论】:
MVC 建立在 asp.net 框架之上。您应该能够在同一个项目中包含 Web 服务。我还没有这样做,但我知道您可以在同一个项目中将 asp.net 表单应用程序与 MVC 应用程序结合起来。 Web 服务也应该如此。
【讨论】:
除非您的应用程序非常小,否则我建议您为应用程序的每个逻辑部分创建不同的项目。一个很好的起点是为每个项目创建一个项目:
这提供了与您的架构相对应的清晰分离并支持重用。
【讨论】: