c#三层结构编程可以独立开发吗?

来源:百度知道 编辑:UC知道 时间:2024/07/08 02:58:51
表示层、逻辑层、数据层三层可以独立吗?
很多介绍的文章都说可以独立,但是我有一个问题想不通。
比如有一些用户的数据需要收集,我在表示层表单(WEB编程)列出一些文本框用来收集这些数据,存储到一个专门用来存储这些数据的一个类中。那么我在数据层,不是还要一一的把这些数据写入数据库吗?总不能在数据库直接写入存储这些数据的那个类吧?
如果我需要多收集几个内容,在表示层又增加了一些文本框,那么我在数据层不也是需要相应的修改存储到数据库的程序吗?同时也需要修改数据库的结构。
这样,怎么才能降低层间的耦合度呢?还是紧密耦合的。

所谓的三层架构不过是面向对象概念的一种延伸。精髓在于功能的层次清晰,代码可读性高,复用性高。独立开发是没有问题的,比如分别处于不同的Project中。例如数据访问层专司对数据库的直接操作,但是这个直接操作可能不利于程序中直接调用,因此在业务逻辑层对数据访问层再进行一次封装,为应用程序提供更加简明易用的功能结构,这样表示层的代码逻辑就会更清晰。
这种结构的好处就是修改起来非常方便,不会造成逻辑混乱。
你这个问题出在如何界定“独立”的概念上。完全的独立是不行的,它们功能上必然会有关联。例如你在开发业务逻辑层的时候必然要用到数据访问层的东西,而在做表示层的时候也一定会用到业务逻辑层的东西,如果它们没有任何关系的话如何能组成一个完整的功能整体呢?
像你上面提出的这个问题,如果需求变更,三层都需要改。但是和不分层的时候修改会有很大不同,数据访问层的核心可以是存储过程,我知道添加的参数可以修改存储过程。业务逻辑层在调用存储过程的时候需要更多的参数了,那么修改逻辑,表示层调用的时候发现参数不足,那么添加新的文本框。这样完成一条功能主线。
所谓的独立,我的理解,比如数据访问层是一个dll,业务逻辑层引用它,并且编写逻辑代码,成为第二层的dll,至于数据访问层的存储过程是什么意思,我并不关心;表示层只需要应用业务逻辑层dll中的方法就可以了。同样,业务逻辑层到底干了些什么,我并不关心。

注:数据访问层可以包含基本数据单元的定义。看需求不同而定。例如强类型DataSet,实际上就是一种概念上基本数据单元的集合,它定义了一个特殊的DataTable的集合,并且创建相应的DataAdapter以提供操作接口。

看来你没有明白独立开发是什么意思,这个独立开发是说这个三个层分别在一个解决方案下的3个独立工程,别不是说就分道扬镳了,只是说开饭的模式更清晰而已,明白?