比我的.net程序集解决方案更好的数据库访问层解决方案

本文关键字:解决方案 数据库 访问 更好 net 程序集 我的 | 更新日期: 2023-09-27 18:08:35

对于即将到来的工作,我将着眼于对现有系统的部分重写。其中一部分是DAL,它是作为。net程序集实现的,由一些应用程序引用,并提供将内容推送到底层DB和从该DB检索数据的方法。从本质上讲,我为DLL的用户提供了一种连接到某些数据库并对其进行有限调用的方法。而不是用户自己编写SQL,他们使用我定义的接口。

现在已经有关于使用一些数据访问服务层来代替现有DLL的讨论,这种方法的支持者引用的好处是它是"可维护的","可测试的","可扩展的"——所有标准的流行语。也有人声称,这种方法在某种程度上最小化了对使用该层的应用程序的影响,因为它隔离了更改,尽管我不相信这是事实。在我看来,底层数据库和应用程序之间的任何一层都将有一个定义良好的接口,因此在任何一方所做的更改,如果不涉及接口的另一方,将是不可见的,也没有真正的影响。同样,任何产生影响的更改也可能需要对中间层进行更改。我不明白为什么它不会。

预计需要对DAL进行早期更改,因为,嗯,东西会发生变化。方法参数发生变化,导致我当前重新编译DAL程序集并将其分发给DAL的用户。这种情况并不经常发生,但确实发生了。我在这方面可能有点幼稚,但我不知道还有什么比我目前拥有的更好的方法来让应用程序脱离数据库接口业务。有人对提供更好的模块化的DAL解决方案有具体的了解吗?我在这里和网上其他地方读过一些帖子,但没有一个真正谈论这个。如果有一个问题已经解决了这个问题,我很有兴趣看到这个链接,并很乐意关闭这个问题。


附加信息:

我上面的长问题的一个简短版本是"使用我目前使用的DLL方法的优势是什么?"我目前使用的模型具有以下特征:

  • 一些抽象底层DB模型的POCO类(这些类目前不是自动生成的,而是手工构建的,尽管我猜它们可以通过EF或类似的东西自动生成,尽管我不确定这真的很重要)
  • 一系列可调用的公共方法,如GetOrderDetails(int orderID)SubmitOrder(Order newOrder)
  • 它通过应用程序使用DLL提供的输入来处理DB连接字符串

比我的.net程序集解决方案更好的数据库访问层解决方案

我的意见不知道任何细节,假设较小的项目没有太多的客户端,我会说坚持使用dll,并确保最新版本是在文件共享或url上,可以通过脚本下载,最好是自动构建过程。

啊,我不太确定你说的数据访问服务层是什么意思。
我认为在这方面给出良好的反馈,我们需要知道有多少客户端,客户端类型,其中有什么样的方法(我认为复杂对象的巨大选择查询将不适合WCF或类似的)。此外,由于WCF是如此通用,这将是在同一台机器上,通过局域网,通过互联网吗?

我稍微使用了一下WCF,但不是在那个上下文中。

它可能比你的DLL稍微模块化,只要你所做的所有改变都不破坏契约(只添加新方法),但我想说,如果你需要从不同的平台访问它,或者有足够的客户端数据库连接将会紧张,那么最大的好处将会到来。WCF的一些错误可能很难调试。如果你真的要撕毁合同你需要给他们发送一个新的serviceconcontract。cs文件来保存

根据我对您的问题和客户需求的理解,我相信他们在谈论SOA或面向服务的体系结构。根据SOA原则,它确实允许模块化和松散耦合的方法。这可以简化维护,因为可以更改、更新和/或维护数据访问例程的逻辑,而不会影响客户端。同样,假设您有二十个使用"服务"的客户端,那么就不需要为使用"服务"或DAL的所有客户端更新和部署新的dll。

就用于实现SOA系统的平台或技术而言,您可以选择任何平台或技术。或者更准确地说,任何适合这项工作的工具。你可以使用你自己的,你可以使用WCF或者你也可以使用WebAPI…等等…

以下是有关该主题的一些链接:

SOA简介- JavaWorld

基于。net的面向服务架构

面向服务的体系结构和Microsoft .NET

MS Architecture Journal #21 - SOA的今天和过去

理解面向服务的体系结构