将域对象放在3层c#winforms应用程序中的位置

问题描述 投票:1回答:2

我正在编写一个C#应用程序,我想遵循3层编程架构。我一直在编写基于this article的应用程序。

我有一些问题,希望有人可以帮助我:

  • 我在哪里放置域对象(例如Person类,我放置getter和setter以及构造函数,以及它的所有属性(age,name,..)。我将这些放在BLL文件夹中还是其他地方?
  • 我应该将我的DAL层中调用函数的所有BLL函数放在一个控制器中,还是分散在所有特定业务类中(例如person,order,..)?
  • 在调用DAL函数之前,是否需要在每个BLL函数中创建DAL对象,或者我是否使用单一模式,我一次只创建一个DAL类对象?

我的类的截图(Program.cs是主类):

class structure

c# winforms 3-tier
2个回答
0
投票
  1. 我会说域对象会进入DAL文件夹,因为这些对象将数据存储在对象的实例中。
  2. 我不建议将所有BLL功能放在一个控制器下。即使对于“单机,单个项目”,3层架构的原因之一是进行代码隔离,以便易于理解和维护。
  3. 单例模式意味着将与所有BLL函数共享相同的对象。如果DAL的主要目标是具有单个存储交互(例如,数据库),那么具有多个DAL对象将意味着多个数据库连接,这意味着资源利用问题。即使在多线程情况下,您也可以将数据库连接池大小增加到一个常数,并确保与线程共享池。重要的是,您不要从数据库请求不必要的资源。

0
投票

有各种解决方案是可能的,例如,核心平台表明“对抽象之神的更多抽象”是一种趋势。我想因为他们发现在他们的开发过程(跨平台,开源)中更容易管理它。

所以尽量抽象,并检查它是否适合你。

我在一个程序集中有实体,服务接口。我在实体中存储的“业务”代码(可能在实例方法中,可能在静态方法中,可能在静态扩展中 - 它们之间没有太大区别)。 POCO并不意味着“不能包含方法”。

© www.soinside.com 2019 - 2024. All rights reserved.