Using Existing Web Service within MVC 3

本文关键字:MVC within Service Existing Web Using | 更新日期: 2023-09-27 18:27:18

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

我有问题的部分是,从web服务检索和创建/更新数据的最佳方式是什么。也许我太复杂了,但似乎我错过了什么。

我需要创建一个映射到从web服务检索到的数据的"域模型",然后创建映射到域模型的"视图模型",再在MVC 3应用程序中使用视图模型吗?

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

Using Existing Web Service within MVC 3

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

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

总是有一种简单地从控制器访问服务的诱惑,但问题的分离可能表明这是一种构建代码的糟糕方式。您应该将服务封装为应用程序的域/业务层服务。

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

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

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

如果它的只读

,您可能需要缓存它