基于SOAP的MVC 3存储库模式
本文关键字:存储 模式 MVC SOAP 基于 | 更新日期: 2023-09-27 18:15:28
感谢您的帮助。
我们目前正在重建一个遗留项目,该项目现在正朝着难以维护的噩梦方向发展。因此,我们决定适当地规范数据结构,并在MVC 3项目中使用存储库模式使用实体框架4代码优先开发。我们目前面临的问题是,出于安全原因,遗留应用程序托管在我们主要基础设施之外的服务器上——因此,所有CRUD操作都是通过web服务完成的,没有直接连接到MS SQL数据库的字符串。
我的"建议"解决方案是定义我的存储库契约,在开发期间将有一个直接连接到数据库,但一旦部署,就没有了(以后可能会有改变的余地)。那么,我是否可以提供两个具体版本的存储库来使用相同的合约呢?一个使用LINQ执行CRUD操作(开发和可能的基础设施,我们可以稍后移动),另一个使用SOAP传递对象的版本(这意味着我的poco需要被定义为Serializable),并以这种方式执行CRUD操作?
这听起来可行吗?还是有更好的方法来实现?
谢谢!
如果你同时负责开发客户端和服务部分,你可以使用一些简单的方法:
- 为存储库和服务客户端使用一些共享接口
- 当在客户端注入服务客户端中使用远程存储库时,服务将直接使用存储库实现
- 当在客户端使用本地存储库时直接注入存储库
通过使用这种方法,您将拥有两个场景的单个存储库实现,并且您的上层逻辑将不会更改。只有额外的web服务层用于远程存储库。你的存储库必须封装所有的数据访问逻辑和查询=在存储库之外没有linq查询,这不是你的架构中的问题,因为如果没有你自己的自定义开发或不使用WCF数据服务,linq查询是不可序列化的(但它会对你的架构有其他影响)。
顺便说一句。将存储库放在web服务后面并不常见。更常见的是将整个服务层/业务逻辑置于web服务之后。