gpt4 book ai didi

c# - 通过 SOAP 的 MVC 3 存储库模式

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:47 25 4
gpt4 key购买 nike

感谢任何帮助。

我们目前正在努力改造一个遗留项目,该项目现在正朝着难以维护的噩梦迈进。因此,我们决定正确规范数据结构,并在使用存储库模式的 MVC 3 项目中使用 Entity Framework 4 Code First 开发。我们目前面临的问题是,出于安全原因,遗留应用程序托管在我们主要基础设施之外的服务器上 - 因此所有 CRUD 操作都是通过 Web 服务完成的,没有直接连接到 MS SQL 数据库的字符串。

我“提议”的解决方案是定义我的存储库契约(Contract),在开发期间将直接连接到数据库,但一旦部署就不会了(以后可能会有更改的范围)。因此,我提供适用于同一个合约的两个具体版本的存储库是否合理。一个使用 LINQ 执行 CRUD 操作(开发和可能的基础设施,我们可以稍后移动到)和另一个使用 SOAP 传递对象的版本(这意味着我的 POCO 需要被定义为可序列化)并以这种方式执行 CRUD 操作?

这听起来可行还是有更好的实现方法?

谢谢!

最佳答案

如果您同时负责开发客户端和服务部分,您可以使用一些简单的方法:

  • 为存储库和服务客户​​端使用一些共享接口(interface)
  • 在客户端注入(inject)服务客户端时使用远程存储库 - 该服务将直接使用存储库实现
  • 在客户端中使用本地存储库时直接注入(inject)存储库

通过使用这种方法,您将拥有适用于这两种情况的单一存储库实现,并且您的上层逻辑不会改变。远程存储库将只有额外的 Web 服务层。您的存储库将必须封装所有数据访问逻辑和查询 = 存储库外部没有 linq 查询,这不是您的体系结构中的问题,因为如果没有您自己的自定义开发或不使用 WCF 数据服务,linq 查询是不可序列化的(但它会对您的架构的其他影响)。

顺便说一句。将存储库放在 Web 服务后面并不常见。更常见的是将整个服务层/业务逻辑置于 Web 服务之后。

关于c# - 通过 SOAP 的 MVC 3 存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com