适用于Windows服务的DAL

时间:2011-11-02 07:03:40

标签: c# winforms data-access-layer

我正在编写一个Windows服务,它将读取定期生成的XML文件并更新数据库。我一般在Web应用程序中看到了3层架构(Presentation,BL& DAL作为类库)。我有以下问题

  1. 我们应该对桌面应用/ Windows服务采用相同的方法吗?
  2. 我们是否需要为DAL类创建实例成员,还是应该是静态的?
  3. 是否有任何工具可以快速为映射的数据库生成DAL层?

    任何指导都将不胜感激。

  4. 感谢。

2 个答案:

答案 0 :(得分:1)

n层架构和其他解决方案架构为我们提供了一些想法并依赖于某些项目条件,其中一个条件就是我们的项目类型。

如果您在网络应用中使用3轮胎,并不意味着它不会用于其他类型的项目。

所以作为第一个问题的答案,我说对于在数据库上进行交易的任何项目来说,n层是一个很好的(不是最好的)解决方案。使用3层(甚至是4层)并且不用担心。是开发Windows服务的常用策略

第二个问题:是的,创建它们。使用静态方法不是基于n层架构生成应用程序的方法。

第三个问题:是的。

如果你使用.net framework 2,用NHibernate生成DAL层。 如果使用.net framework 3和3.5,则使用LinQ生成DAL层。 如果使用.net framework 4,则使用ADO.net实体框架建模器生成DAL层。

答案 1 :(得分:-1)

您不必使用LINQ,NHibertate或Entity。 在.NET 4.0上运行的许多项目仍然使用旧式ADO.NET。

LINQ to SQL在您的应用程序中不值得骄傲。 对于Entity Framework或NHibernate,这些是ORM API并且具有非常有用的使用场景,但是也具有陡峭的学习曲线,并且在性能上的效率低于使用内联查询或存储过程(但提供了更好的可扩展性和可维护性) 。使用这些ORM库的另一个好处是,在大多数情况下您不必编写SQL,但如果您有复杂的场景,它可能会给您带来一些麻烦。 您可以将实体框架与.NET 3.5一起使用

如果您对SQL感到满意并且项目没有分配大团队,则使用内联查询或存储过程完全没有错。 或者,如果您愿意,可以使用像MyBatis这样的东西,它使用基于提供的XML文件的反射来对象。 (我认为他们有生成工具)。

所以我认为,如果你有一个大型数据库,但不要指望复杂的查询,学习实体框架的成本是合理的。 但是如果你有一个小型数据库,但是已经在某处编写了复杂的查询,那么使用Entity或NHibernate将是一个巨大的错误......