2010-02-15 59 views
7

我们现在的架构-UI,BusinessLayer,DAL(生成的linq-to-sql)。在DAL层,我们添加了验证逻辑对于部分类中的实体。 我们直接在businesslayer中使用由linq-to-sql生成的实体(这是一堆类 - 类\ form)。同样,在这些bll类中,我们创建了linq-to-sql查询。使用linq-to-sql的2层(客户端 - 服务器)桌面应用程序的良好体系结构

我觉得我们可以根据MVP模式对应用程序进行更好的分层,并且有使用linq-to-sql提供数据的服务类 。您怎么看?我应该考虑存储库模式吗?这会是一个矫枉过正的问题吗?

回答

1

这是一个好主意!

您的choise取决于你的应用程序,但这些都是很多问题:

1)对象数据库模型和对象模型的应用程序之间的转换可以变得更加困难。在这种情况下,不可能在应用程序的模型上实现过滤器,以便将生成的查询传送到SQL中。

2)通常,作为采样必须获得(从一个表

3)JOIN)多个表,并不仅数据的连接的结果的结果并不是所有的SQL的操作和功能有其等效在LINQ

实体框架呢?请不要触摸实体框架。这是沉重而缓慢的事情! :)

我更喜欢通过存储过程的经典数据访问和数据访问从MS企业库。我可以使用SQL的强大功能和我自己的业务实体的灵活性。当然 - 表现!奖牌的反面是更多的工作。我使用了一些工具来自动生成数据访问对象,然后根据需要修复它们。

好运!

1

所有好东西都需要思考,但是当你开始沿着这条道路前进时,我相信你会有更多的问题而不是回答很多时间!

当您提到桌面和Linq-To-SQL时,我会假定您使用的是Windows窗体,这会给您在实现诸如MVP模式之类的东西时带来一些挑战。

虽然有针对WinForms(MVC#)的预先定制的MVP框架,但如果您不开发大型应用程序,那么您可能需要轻松地开始并使用自己的代码实现一些概念。

杰里米·米勒的出色Build Your Own CAB系列文章是一个很好的资源在这里,你可以采取一些前几个想法离开那里,并得到您的形式(演讲)和业务逻辑(主持人和服务类之间的一些涉及分离)。我们喜欢在工作中主要使用监督控制器设计,但是它的价值在于看待其他模式,比如被动视图和Model-View-ViewModel(它被烘焙成WPF工作方式,非常值得了解),看看你觉得最舒服。

至于你对服务类或存储库的问题,我认为你想要的主要两个逻辑级别是Presenter或ViewModel实体,然后是服务实体,它下面可以包含像Linq-To- SQL查询。所以,你可能已经有很多为您服务层有逻辑的,但它更重构它变成一个一致的形式的情况。

+0

是的,我正在寻找一致性。尤其是,要获得linq-to-sql代码到服务类(linq代码遍布整个) – 2010-02-16 04:07:12

+0

我已经重构了MVP风格的几个表单。 – 2010-02-16 04:08:40

0

这听起来像你在正确的轨道上。如果你有一个WCF服务层您可以在过程中或通过HTTP,这意味着你可以支持客户端服务器类型的应用程序,而不是从前端击中DB运行它,但它确实取决于你的应用。

1

MVP可能很难理解开发者,但你可以给它一个去。

+0

你为什么说“很难理解”? – 2010-02-17 10:25:12

相关问题