网上选课系统心得

没什么可说的,代码觉得也都是老一套,标准的COM+三层结构,只说说做后的感想:

1.传统和三层结构方案差别:

传统方法: 客户--ADO.NET--数据库
用户通过浏览器来访问WEB站点,利用ADO.NET实现对数据库的连接和操作,此时每个用户保持着一个对数据库的连接。这样的方案存在明显的不足,由于打开一个连接所消耗的资源是相当昂贵的,所以一旦当用户人数大量增加时,WEB服务器的吞吐量会受到严重影响,其性能会大大降低。

三层结构: 客户端--Web服务器--COM+应用层--数据库
在上面的基础上,再增加一层COM+应用,把对数据库的所有直接操作封装成一个组件类,用COM+的核心服务(对象池、即时激活等)来包装,从而把对数据库的连接、操作等活动都交给了COM+应用层。

对象池:利用对象池的目的是对象共享,创建新对象的第一个客户会降低性能(因为他要进行打开数据库操作),但只要客户释放对象,对象就返回到对象池中。由于不必等待对象的创建,需要对象实例的下一个客户就得到第一个客户创建的实例。有了COM+的对象池服务,可以实现对象的共享,通过在用户人数大量增加时增加最大和最小共享容量就可以有管理地添加组件(也就是资源)。容许添加在共享的组件越多,能够服务的客户就越多。

即时激活:JITA对可共享对象的可伸缩性具有重要的效果。JITA容许在方法调用后使对象马上钝化,而在下一个方法调用时,再将其激活。由于客户再方法调用之间不能正确控制组件,组件就被释放回对象池中。一旦组件回到共享池,它就变得被其他客户可用。


2.COM+组件的一般三步声明法:
 [Transaction(TransactionOption.RequiresNew)]
 [ObjectPooling(true, 5, 100)]
 [JustInTimeActivation(true)]
同时,要用SN生成强名并引用。
方法之前的[AutoComplete]用于声明方法级别的事务。


3.逻辑层类的方法的调用和返回类型都是要根据程序中的具体而定,千万不要有一个标准。


4.如果有DataSet,不管是查询还是筛选,都要尽量使用对DATASET的操作,不要操作数据库,这不仅能大大提高性能,而且也使逻辑层的代码更加简洁(不用实现很多细微的数据库操作功能)。
比如查询:
DataRow[] rows = ds.Tables[0].Select("cname='" + this.ListBox1.SelectedItem.Text + "'");

你可能感兴趣的:(系统)