2011-11-02 74 views
1

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

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

    任何指导将不胜感激。

谢谢。

+1

实体框架 - http://msdn.microsoft.com/en -us/library/bb399572.aspx(我不是NHibernate的粉丝,因为我发现它是英国媒体报道) – Lloyd

回答

-1

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

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

如果您习惯使用SQL和项目没有一个大的团队分配的,没有什么错,在所有使用内联查询或存储过程。 或者,如果你喜欢,你可以使用类似MyBatis的东西,它使用基于提供的XML文件的反射来生成对象。 (我认为他们有生成工具)。

所以我的意见是,如果你有一个大的数据库,但不期望复杂的查询,学习Entity Framework的成本是合理的。 但是,如果你有一个小的数据库,但复杂的查询,这是已经写在某个地方,这将是一个巨大的错误使用实体或NHibernate ...

1

n层架构和其他解决方案架构给了我们一些想法,并取决于一些项目条件,只是其中一个条件就是我们的项目。

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

作为第一个问题的答案,我说n层对于任何在数据库上有事务的项目都是一个好的(不是最好的)解决方案。使用三层(甚至是四层),不用担心。它是开发Windows服务的常用策略

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

第三个问题:是的。

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

+0

LinQ是否为DAL生成存储过程和c#代码?我发现这个http://code.google.com/p/crudgeneratoraspnetwinform/wiki/CRUDGenerator,是一个有用的工具吗?由于我是C#初学者,我只是想用什么框架。 – Jeeva

+0

Yes.it的确如此,不过只是使用LinQ或实体框架。这些工具都很完美,如果你没有使用它们,你却无法理解它们的力量。 在Visual Studio 2010中使用dot.net framework 4。 –