【发布时间】:2011-01-19 23:53:30
【问题描述】:
我想问一个关于在 .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,但我想知道 peaple 是赞成还是反对他们。对我来说,不将逻辑放入数据库似乎更容易(更可测试,更可验证)。业务规则将放置在业务层中 - 可能在某种“框架”中。
2) 这是数据库访问层。
3) DTO - 简单的 POCO。他们需要吗?
4) DTO 和 BM 之间的映射。手工编码、AutoMapper 还是继承?或者也许是 DAO - 用于访问从 BM 返回对象的数据库的抽象对象?
5) 构建业务模型的业务对象。我会把所有的业务规则和验证放在这里。但是需要这一层吗?或者你会把所有的业务都放在第 3 层吗?
6) 和 7) 使用 BM 构建 UI。
【问题讨论】:
-
为什么不使用 SQL Server express?它具有服务器的所有功能。
-
易于部署,无需完整的 DBMS。
标签: .net database architecture