整个业务应用划分为:表现层(USI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

数据访问层DAL(DataAccessLayer),主要是访问数据库,对数据库进行一些增删改差的操作


表现层(USI),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层(BLL):对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者

表示层:位于最外层,离用户最近,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作界面。

业务逻辑层:是表示层与数据访问层之间通信的桥梁,主要负责数据的传递和处理,例如数据有效性的检验、业务逻辑描述等相关功能。

数据访问层: 主要实现对数据的保存和读取操作。数据访问,可以访问关系数据库,文本文件或是XML文档等,数据访问层通常成为类库。

经验分享:

1.三层结构中各层之间的依赖关系是表示层依赖业务逻辑层,业务逻辑层依赖于数据访问层。

2.表示层只允许引用业务逻辑层,不允许直接应用数据访问层。

3.各层项目间不允许循环引用。

 

事件委托:

委托能引用函数:
Delegate int SomeDelegate(string s, bool b);
是一个委托申明,在这里,提及的签名,就是说SomeDelegate

当你对委托实例化时,要提供一个引用函数,将其作为它构造函数的参数。这里要注意了:被引用的这个函数必须和委托有相同的签名。
     例:private int SomeFunction(string str, bool bln){...}

可以把这个函数传给SomeDelegate的构造函数,因为他们有相似的签名(他们都有相同的形参类型和个数,并且返回相同的数据类型)。 
SomeDelegate sd = new SomeDelegate(SomeFunction);

sd 引用了 SomeFunction
Delegate int SomeDelegate(string s, bool b);
private int SomeFunction(string str, bool bln){...}
SomeDelegate sd = new SomeDelegate(SomeFunction);

事件是委托类型的变量。用event关键字和要使用的委托类型申明它即可,如下所示:
NumberReachedEventHandle 仅是一个委托
public event NumberReachedEventHandler NumberReached;

 

jimmyzhang
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。