gpt4 book ai didi

.NET 基于数据的应用架构建议、意见、良好实践

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:21 29 4
gpt4 key购买 nike

我想问一个关于在 .NET 中构建使用数据库数据的应用程序的问题。有许多技术和模式,我正在尝试将它们联系起来。

我正在构建一个带有本地数据库的桌面应用程序,因此我选择了 SQLServer CE + WinForms,但我希望它尽可能通用。我对其他技术(Java 等)不感兴趣,但如果那里有一些好的解决方案,那么欢迎您写下它们。

我想征求您在构建应用程序时使用的建议、意见和良好做法。您会添加或删除任何列出的图层吗?您更喜欢哪些技术?

下面是应用程序的基本层:

1) SQLServer CE/SQLServer/Oracle/IBM DB2
--------------------------------------------------
2) LINQ to SQL/Entity Framework/NHibernate/ADO.NET
--------------------------------------------------
3) Data Transfer Objects
--------------------------------------------------
4) DTO-to-BM/Data Access Objects
--------------------------------------------------
5) Business Model
--------------------------------------------------
6) MVP/MVC/MVVM/PM
--------------------------------------------------
7) WinForms/WPF/ASP.NET

1) 这是经典的关系数据库。那么第一个问题就是要不要使用存储过程和触发器?我将使用 SQLServer CE,所以我没有 SP,但我想知道人们是赞成还是反对他们。对我来说,不将逻辑放入数据库似乎更容易(更可测试,更可验证)。业务规则将放置在业务层中 - 可能在某种“框架”中。

2) 这是数据库访问层。

3) DTO - 简单的 POCO。他们需要吗?

4) DTO 和 BM 之间的映射。手工编码、AutoMapper 还是继承?或者可能是 DAO - 用于访问从 BM 返回对象的数据库的抽象对象?

5) 构建业务模型的业务对象。我会把所有的业务规则和验证放在这里。但是需要这一层吗?或者您会将所有业务内容放入第 3 层?

6) 和 7) 使用 BM 构建 UI。

最佳答案

如果你想使用一些嵌入式 sql 数据库,你应该看看 SQLite .它比 SQL CE 具有更多有用的功能,并且运行速度更快且没有问题。甚至更多,我建议您使用一些文档或对象数据库(例如 db4o)。 IMO,它会简化你的 DAO 和代码。

1,我更喜欢使用 ORM,我很少使用存储过程和触发器,而且只在遗留应用程序中使用。处理 C# 代码并将所有内容集中在一个地方要容易得多。而且您的逻辑和业务规则是正确的。

2、我更喜欢使用NHibernate作为最成熟、最强大和可定制的框架。我也推荐你看看NhProf (顺便说一下,L2S 和 EF 存在相同的分析器)。

3&4,把它去掉,不必要的噪音和猴子的工作。

2&5,将您的数据库模型用作 BusinessModel(使用 NHibernate 非常容易)。检查thisthis文章。

6&7,对于 web,我选择 MVC 和 asp.net mvc,对于 WPF - MVVM。根据我的经验,当您没有像遗留代码这样的限制时,不要使用 WinForms 和 Asp.Net。使用 Asp.Net Mvc 和 WPF 进行开发更加容易和有趣。并且有很多很酷且省时的框架 - MvcTurbine , MVC Contrib , SharpArchitecture对于 asp.net mvc 和 Caliburn , WPF Toolkit , Cinch , MVVM Light toolkit和许多其他人。

此外,我还建议您查看以下文章和示例,它们可以帮助您更好地设计应用:
http://nhforge.org/blogs/nhibernate/archive/2009/08/27/nhibernate-and-wpf-validations.aspx
http://nhforge.org/blogs/nhibernate/archive/2009/11/07/nhibernate-and-wpf-the-guywire.aspx
http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
http://code.google.com/p/unhaddins/source/browse/#svn/trunk/Examples/uNHAddIns.Examples.WPF

关于.NET 基于数据的应用架构建议、意见、良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317020/

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