日期:2014-05-18  浏览次数:20406 次

分享三层(多层)开发中的经验
1.实体类尽量用组合而不是继承,更不要用一个字段表示外键关系,因为这样在数据显示的时候会带来麻烦
2.无论是dal层还是bll层还是其他层都应该用异常处理机制而不是用错误处理,比如返回int,或者一个对象,这样都不好
  因为这样除了增加文档外还要程序员每次去if (返回值==XX)
3.每层都用接口编程,对外只是暴露接口,
4.如果是自己写dal层的话,不要用sql拼接的方式
5.最好不要用存储过程,特别情况例外,因为存储过程影响调试和维护
6.不要指望你的程序员既要熟悉数据库又要熟悉程序,发挥他的优势就好,(主管或者项目经理是追求完美主义的除外)
7.每层命名规范要到位。
8.没有经过需求调研不要编码为好,因为就开始编码了基本上是白做的,因为都是你个人想法而已(但是我却做了,最后等死)
9.不要XX人说这个不好看或者性能不好就改,因为他可能不是决策人,即使是也要写在文档里,待下个版本或其他进度完成的时候分配来做
(我现在就这样,所以经常磕磕碰碰,最后大家都累死)

其他的留给大家发挥了。。。

------解决方案--------------------
sf
------解决方案--------------------
接分.


三层客户/服务器 

一:优点:灵活性和可扩展性。 

应用三层开发技术(分布式)的原因 

(参考书目: Delphi 5.x分布式多层应用系统篇) 

一:解决客户机/服务器结构的维护成本问题,改善客户机/服务器结构延展性问题。 

客户机/服务器结构支持的用户人数有一定限度(200人以下)。则种结构限制了Internet/Intranet及电子商务的发展。三层开发应用Database Pooling, Object pooling,Resource Pooling,线程模式提供了高度延展性。 

二:解决应用逻辑重复使用的问题。 

例如:当企业要在原有的客户机/服务器结构上添加Web浏览服务时,就需要配置Web服务器,重新编写所有应用逻辑,并且更新MIS系统。在三层结构中,用COM/DCOM, CORBA(Common Object Request Broker Architecture)对象,或Enterprise Java Bean等,封装企业的逻辑程序代码(称之为企业对象),可以解决上述问题。大大降低开发和维护的成本。 

三:整合不同系统结构的需要,及时应用新技术的需要。 

二:Microsoft的三层服务模型 

1:结构:是windows DNA(distributed internet applications,分布式内部网)COM(component object model ,构件对象模型)构件作为实现系统及应用程序服务的工具。 

l 用户服务 

l 业务服务 

l 数据服务 

(1)用户服务:windows DNA定义了四种可用于实现用户服务层的客户: 

n 标准浏览客户:依赖于简单,基于页面的HTML来管理数据表示和与用户进行交互.其兼容性 很好,功能不丰富。 

n 增强型浏览器客户:汲取某个特殊浏览器(ex: Dynamic HTML ,脚本及ActiveX控件)的优点来最大化用户接口的丰富性和功能 ,适用于公司intranet . 

n 依赖型Internet客户:能在客户机器上将对Internet的访问和对操作系统的访问集成在一块。 

n 增强型Internet客户:Microsoft Office 97和Microsoft Visual Studio. 



(2)业务服务:通过将基于服务器的Microsoft产品与定制的COM构件运行环境集成在一块来实现。 

n Web服务( Microfsoft Internet Information Server与Active Server Pages ). 

n 事务和构件服务 (Microsoft Transaction server和 COM) . 

n 消息服务(Microsoft消息队列服务器)。 

n 通用数据访问(universal data access)(Microsoft数据访问过件) 

l 大型机环境的互操作(Microsoft SNA服务器). 其详细信息在下面的专题中列出。 



(3)数据服务: 


n Microsoft SQL Server7数据库。 

n Microsoft Exchange server 5.5版本的目录和信息库。 





专题: 

业务服务 

一:Web服务( Microsoft Internet Information Server与Active Server Pages ). 

Web服务对象模型: 

1,server对象:提供对服务器上方法和属性的访问.例:问(universal data access)(Microsoft数据访问构件) setobjmyobject=server.createobject(“businessserver.myruleobject”) 

2:Session对象: 用来存储一个特定用户会话所必须的信息。 

3:Application对象:用来使某个应用程序的所有用户共享息。 

4:Request对象:略。 

5:Response对象:略. 



二:事务和构件服务 (Microsoft Transaction server和 COM)

1:Microsoft事务服务器(MTS)是基于构件的事务处理系统,用来满足复杂事务处理。MTS支 持SQL Server和任 

何基于X/open算法的XA协议的数据库(见注释)。 

MTS提供的服务有: 

n 对分布事务的支持。 

n 用于控制实例化和使用对象安全的服务。 

n 过程和线程的自动管理。 

n 对象实例的管理。 

n 数据库连接管理(连接池)。 

在应用程序中可声明相应的构件完成以上服务。

2:MTS和SQL server事务一样,要求原子执行,或整个成功,整个失败。Transaction Server与Microsoft Distributed Transaction Coordinator(MSDTC)交互确认事务满足ACID(原子性Atomicity,一致性Consistency,分离性Isolatation和耐久性Durability)。 

3:MTS和SQL server事务的区别.MTS可以用visual basic ,visual c++ 等封装的MTS构件实现 , Recordset对 

象的addnew方法添加新行。SQL server事务只能由Transact-SQL代码编写,如 (ADO)