这是一个非常非常基本的问题。
说我想构建 - 今天 - 在.NET中具有n层架构的企业CRUD应用程序。我应该使用什么数据访问方法?我想要互操作性,所以DataSet已经出局了(我想它不再是2003了)。同样,.NET RIA Services通过附加服务向非Silverlight客户端公开其功能的广告方法对于更新操作似乎不是convincing。我有点能够用Entity Framework拼凑一些东西,它没有n层支持OOB,所以需要很多奇怪的反射类型的东西来模拟乐观并发的外观( MSDN杂志中的example看起来并不像它支持乐观并发。我hear这在EF4中有所改进,但我有点怀疑,除了在CTP之外它还没有真正可用)。
那么,人们用他们的企业CRUD项目实际上可以做什么来进行更新检查的乐观并发?数据集? DIY与DTO和主知道涉及多少工作?这对绑定数据有何影响?假设我有一个绑定到DataGrid的集合,我是否需要收听CollectionChanged以进行更改?我是否需要保留一堆更改,以便在有撤消时比较PK?这似乎是噩梦。
其次,如果对乐观并发的更新检查不是一个硬性要求呢?那么呢?
答案 0 :(得分:3)
首先,如果您计划将来迁移到VS2010和.NET 4.0,我强烈建议您查看EF v4.0。自从EF v1.0发布以来,它已经改进了DRAMATICALLY,在我看来,它是对nHibernate和朋友这样的强有力的竞争者。 EF也是许多微软未来数据计划的核心参与者,所以它不能像过去那样容易被忽视。它或任何依赖它的.NET 4.0更高级别框架都应该很好地满足您的CRUD需求。
除此之外,我会确保从业务角度确保简单的CRUD方法最合适。从技术角度来看,CRUD很有意义,而在较小的应用中,它通常是正确的选择。但是你使用了“企业”一词,所以我很好奇你的应用程序的范围是否比简单的CRUD更好。
除了小型公司之外的任何东西,总共有20-50左右的员工,我会研究领域驱动设计(DDD)和SOA。如果您需要诸如并发管理之类的东西,那么驱动DDD的主体应该为您提供良好的服务。 SOA通常适用于非常大的项目,在这些项目中,您有许多开发团队同时处理需要相互交互的多个项目。对你的需求来说可能有些过分,但有些好的校长可能仍然有帮助。