Windows 服务的 DAL

发布于 2024-12-13 14:33:38 字数 281 浏览 0 评论 0原文

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

  1. 我们是否应该对桌面应用/Windows 服务采用相同的方法?

  2. 我们需要为 DAL 类创建实例成员还是应该是静态的?

  3. 有没有什么工具可以快速生成映射DB的DAL层?

    任何指导将不胜感激。

谢谢。

I am in a process of writing a windows service which will read an XML file generated periodically and update a DB. I have generally seen a 3 tier architecture in web apps (Presentation, BL & DAL as class library). I have the following questions

  1. Should we follow the same approach for the desktop app/windows service?

  2. Do we need to create instance members for DAL class or should it be static?

  3. Is there any tool that can quickly generate the DAL layer for the mapped DB?

    Any guidance will be greatly appreciated.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灼痛 2024-12-20 14:33:38

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

如果您在 Web 应用程序中使用 3-tire,并不意味着它不会在其他类型的项目中使用。

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

:是的,您可以创建它们。使用静态方法不是生成基于 n 层体系结构的应用程序的方法。

对于你的第三个问题:是的。

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

n-tier architecture and other solution architecture give us some ideas and depend on some project condition and just one of these condition is the kind of our projects.

if you use 3-tire in a web app it does not mean it is not used in other type of projects.

so as an answer for first question i say that n-tier is a good(not best) solution for any project that has transactions on a database.use 3-tier (even 4-tier) and do not worry.it is common strategy for developing windows services

for your second question : yes you do , create them.using static method is not a way to generating a application based-on n-tier architecture.

for your third question: yes there is.

if you use .net framework 2 ,generate the DAL layer with NHibernate.
if you use .net framework 3 and 3.5 ,generate the DAL layer with LinQ.
and if you use .net framework 4 ,generate the DAL layer with ADO.net entity Framework modeler.

-小熊_ 2024-12-20 14:33:38

您不必使用 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 将是一个巨大的错误......

You don't have to use LINQ, NHibertate or Entity.
A lot of projects running on .NET 4.0 still use old fashioned ADO.NET.

LINQ to SQL is not something to be proud of in your application.
As for Entity Framework or NHibernate, those are ORM APIs and have their highly beneficial usage scenarios, but also have a steep learning curve, and are less efficient in performance than using inline queries or Stored Procedure (But offer a lot better extensibility and maintainability). Another benefit in using those ORM libraries is that you don't have to write SQL in most cases, but it can give you some headaches if you have complex scenarios.
And you can use Entity Framework with .NET 3.5

If you are comfortable with SQL and the project has not a big team allocated, there's nothing wrong at all with using inline queries or stored procedures.
Or, if you like, you can use something like MyBatis, which puplates objects using reflection based on a provided XML file. (I think they have generation tools).

So my opinion, if you have a big database, but don't expect complex queries, the cost of learning Entity Framework is justified.
But if you have a small database but with complex queries, which are already written somewhere, it would be a huge mistake to use Entity or NHibernate...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文