C# 三层架构项目体会(1)
最近在学习三层架构,有一些东西自己有一些自己的感触,想找个地方记下来,发现博客园中我还没有申请开通博客,后来就只在这里记下一些了,以后有一些感触,也会记下来吧。
首先,最开始学习三层的时候自己感觉不就是将一个应用程序分为三个不同的层次关系进行相互协调进而分工进行应用程序的执行,也许,我这样理解也不算错吧,不过,后来回想在学习C#基础的时候,发现,其实不仅仅只有这样,三层架构固然使这种效果,但是其内在思想是实现了面向对象中的三大特点:封装、继承和多态。
三层中通过使用不同层级将不同的实现与不同功能的分类开来,并且相互之间只有引用的关系,这就是面向对象中的封装的特点:将不同功能和特征的操作进行分们别类式的封装,只能通过一些特定的接口或其他的进行访问,就好像一个公司下面的某一个部门,而部门与部门之间只有在需要合作的时候,有特定的人员进行交互合作。说到这里,就想到了软件工程的一些东西,软件工程中有一个基本的设计理念:高内聚、低耦合和模块化。模块化就是将一个需要实现的某个东西进行分散成一个一个模块,进而由这些模块进行合作式的实现该功能。而高内聚、低耦合就是在模块化的基础之上进行的深入,高内聚就是模块的内部之间要聚合的紧密,低耦合就是模块与模块之间尽量要少一点的交互。而三层架构实现了这种思想,但是不是很完善,虽然在三层在加上了一层MODEL层,但是就是感觉还是有一些不完善,但是自己还是分析不到,当然,我现在接触的只是一些皮毛,以后可能会发现吧。
继承和多态这两个方面,我现在只是在进行参数的传递时使用了接口进行参数传递,而其他的方面,自己尝试了使用一个公有的属性进行参数传递,但是,感觉不怎么好。多态的话,一句话,面向对象中,无处不是多态,对象的本质来源于生活,而类又是将对象中的共同特征进行提取的结果,多态更多是指行为的多态 ,一种操作,不同的子类对象的各自的响应。
再来谈谈我们的三层,其本质操作就是对数据库中的数据进行增删查改。
对数据库中的数据进行的操作本质上就是请求、处理和响应。客户端请求服务器,服务器处理请求并给予响应。但是请求、处理和响应的本质就是调用方法,请求就是调用方法和传递参数,处理就是调用方法的方法体进行执行操作,而响应就是将返回值返回。
在这里我还学习到了,数据库中的操作大多时候都是要小心的,特别是增删改这种能够改变数据库中的数据的操作,一旦修改出错,将不可逆并且造成不可估量的损失,所以在公司中对数据的操作要求每天备份。还有一点就是,数据来之不易,再删除数据的时候最好是使用“软删除”,系在需要执行删除操作的数据进行一个标记,标记数据是否已被删除。
三层主要是讲用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL),当然,一般我们会构建一个实体类(MODEL)【这里的实体类本质上就是将我们所需要的类的成员字段与属性的封装】。通过实体类将类具体化,形成具体的对象,然后再三层中跑动,MODEL就相当于一个跑腿的小伙计,三层都是老板,老板需要他就直接使用【当然,实体类一般都是公共的而且三层都会去引用MODEL,不是公共谁会用他,构建一个实体类干嘛,不是吃饱了没事干嘛?】。一句话:哪里需要,跑哪里。
在学习三层中我们会发现一个这样的问题:当你打开BLL层所处的文件夹时,你会发现这里面竟然有DAL层中的dll文件,而在UI层中会存在BLL层中含有的dll文件。为什么会这样呢?我们会发现UI层引用BLL层,而BLL层引用DAL层,它们三者只有这里有关系,其他方面好像就没有关系了【当然,除了它们都会去引用MODEL】。由此,我们可以发现,引用的本质就是将所需要引用的类或程序所形成的文件复制到本身所处的文件夹下。