【问题标题】:Using Existing Web Service within MVC 3在 MVC 3 中使用现有的 Web 服务
【发布时间】:2012-03-11 00:03:11
【问题描述】:

仅供参考,我正在使用 MVC 3 和带有 C# 的 Razor 和 .NET3.5/4.0 开发我的第一个 MVC Web 应用程序,我正在寻找“最佳实践”方法用于在 MVC 3 应用程序中使用现有的 Web 服务。从我到目前为止所知道的情况来看,我需要做的就是以下几点。在 MVC 项目中包含对现有 Web 服务的引用,为我希望在应用程序中使用的数据创建一个模型,创建一个控制器来进行 Web 服务调用,然后填充从模型创建的对象(阅读 AutoMapper 看看这对这个过程有什么帮助),然后创建一个视图来显示已转换为 MVC 视图模型的数据。

我有疑问的部分是从 Web 服务检索和创建/更新数据的最佳方式是什么。也许我过于复杂了,但似乎我错过了一些东西。

我是否需要创建映射到从 Web 服务检索的数据的“域模型”,然后创建映射到域模型的“视图模型”,然后在 MVC 3 应用程序中使用视图模型?

基本上,我正在寻找有关如何最好地使用现有 Web 服务作为我的数据访问层的意见。

【问题讨论】:

  • 只调用服务有什么问题?

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


【解决方案1】:

在您的数据访问层上,您将打开连接,获取原始数据,然后将其关闭。与从数据库中获取数据的方式相同。然后,您将通过数据适配器将此原始数据转换为您的业务层(域模型)。然后,任何顶级应用程序,例如您的 MVC3 网站,都会将此域模型转换为适当的视图模型,以及任何其他用于渲染的数据,再次通过数据适配器。

这样做的主要论据是,现在任何需要它的顶级应用程序都可以访问该服务。将任何类型的数据检索方法放在数据访问层中也是合乎逻辑的,因为这在逻辑上就是数据访问层的设计目的。

总是很容易从控制器中简单地访问服务,但关注点分离可能表明这是构建代码的一种不好的方式。您应该将该服务封装为应用程序的域/业务层服务。

简而言之,您不需要这样做,但最佳实践建议您应该这样做。当层之间的转换很少或没有转换时,有时会感到乏味,但通常有助于保持一致。

【讨论】:

    【解决方案2】:

    要遵守 MVC 模式及其关注点分离,调用数据库必须在模型中。如果这个 Web 服务以某种方式调用数据库,它应该在模型级别。

    让 UI 直接与模型对话,以防以后您需要 Web 服务与另一个系统集成,您可以创建一个调用该模型的服务

    如果它是只读的,你可能想要缓存它

    【讨论】:

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