存储过程和触发器的必要性,以及ERP系统模块化问题(300分)

  • 主题发起人 左轻侯
  • 开始时间
谢谢大家的发言。
zhangkan兄说得很对,我必须对使用和不使用带来的利弊进行综合考虑和计算,才能决定。
但问题在于这里:
由于条件的限制,现在的版本还限制于asp+sql server平台上,使用delphi组件的可能性
都很小(公司的技术力量几乎都在asp这一块),也就是说,目前只能使用纯粹的asp脚本
+sql server来开发。
如果不使用存储过程之类的话,那么只能把业务逻辑封装到asp脚本写成的class里面。
我没有过这方面的经验,而且在我见过的asp脚本代码里,极少有将asp写成class的,即使
是asp的高级编程资料,也少有涉及,虽然我知道能够这么写。
而且,在建立的这种class的时候,免不了要将比较大的recordset在模块之间传递,这种
方式是否合适?会不会导致严重的效率损失?
我想知道的是,如果用纯粹的asp脚本构建一个class library,效率如何?是否能够承担
一个复杂的企业型管理系统?哪位有构建这种class library的经验,或至少接触以这种
方式实现的系统?谢谢。
如果是用java,我就不用考虑这些了,sigh
 
建议使用Asp + COM组件方式进行开发,将业务逻辑放在Com组件中,
如果肯定是Asp + SQL Server,那就用存储过程。
 
否在就用.Net吧,挺好的,完全没有你的烦恼
 
我一向反对用触发器, 存储过程也是尽量少用. 如果从复用的角度来考虑, 尽量把
业务逻辑独立出来, 全部采用用存储过程未尝不可. 但是, 软件的接口一定要规划
好, 这样才能在以后重用.
 
帅哥的话不无道理,虽然我做过一些个asp+sqlserver的,各种处理还是有一些,不过现也在考虑
用com封装一些常用的业务逻辑,并且做一些工具向导,根据需求自动产生相应的asp语句。
我到认为com的方式可以封装一些数据库的操作逻辑,这样相对来讲效率高,而业务逻辑可以在
自动生成程序中封装,便于扩展和修改,类似模版一样,应用起来可能会好一些。
 
提前...正是我想 知道的
 
用ASP+COM对象模组确实可以实现系统的三层结构,
而且COM对象可以使用Delphi开发,开发后的DLL注册后,可以在ASP中象使用ADO一样使用它
还有一个好处是,将商业逻辑封闭在COM对象中,简化了ASP的代码,
比如说,要新增一用户,可以调用USER.New(一些用户参数)。
查询用户的分数(假设情景),可以调用User.Score得到他的分数,而不必理会
这分数是怎么算出来的,当计算分数的方法须要改变的时候,只需要将USER这个
对象用Delphi重新设计计算分数那部份的代码,重新编译后将DLL覆盖就可以了,
当然前提是调用的参数没有改变。
 
我还是赞同用存储器和触发器,尤其你是在asp+Ms sql server环境下,如果在asp里封装业务
逻辑,那写起代码来太累了,而且以后不好维护,还是要把业务逻辑放在服务端,我觉得你如
果规划好一点,可以把一些业务逻辑定义在数据库服务器上,充分利用数据库服务器的速度
和执行存储器的效率高于写在客户端的sql语句。如果考虑移植性的问题,我想你就不要考虑
太多,不同的数据库其sql的语法就不一样,所以移植话还是要大量改代码。当然如果你采用
jsp+javaBean+tomcat(或resin或weblogic6)+Apache这样的环境开发,你可能更容易移植些。
不过你最主要的是要规范好你的开发文档。
 
至于使用触发器和存贮过程,对于这两个东西,我有如下看法:
触发器有维护数据完整性方面用得比较多,比如删除主细表,检测输入数据的数值范围等。
而存贮过程也有以上的做用,但它的使用更多的是在完成一定部份的系统模块,
一些功能用存贮过程去完成有比用在程序里完成的速度快,用资源少等优势。
我个人的使用倾向是,对数据的正确性检验方面,在写中间层的时候就可以对数据的正确与否
做检验:比如接上面我的话题,User.Add(一些参数)中,在写ADD过程的时候,我们就可以做
一些检验,比如用户名是否重复,MAIL地址对否,一些资料有没有填等。这样就不用写触发器去做了,
而且使整修系统看起来比较清晰,其它人在看你如何ADD用户的时候就知道你都做了哪些工作,
如果使用触发器,那么知道你的完整做法就比较烦事了。
  而一些功能可以用存贮过程实现。比如我这前做一个会计系统。其中计算每个月出货的成本就是用
存贮过程做的,好处一是快,再就是避免在程序建立一个诸如TABLE等控件的资源,要知道
它可以涉及多个表,而这些方面交给DB去做,DB在做SQL方面是强项。

  还有,使用了中间层对系统的扩展和移植方法也有不少好处。
比如,WEB服务器要增加了,如果使用W2K的COM+,只需要将应用程序导出,在新的服务器上运行,
就可以了。还可以增加中间层的服务器做负载平衡。
 
ERP可以做在WEB上吗?能不能访问到?地址是什么?参考一步。
 
谢谢
公司过几天将开会讨论此事
我看了一下asp.net,很感兴趣
MS的.net framework现在已经有正式版了吗?
能否胜任项目开发?有没有人在这方面有经验?
 
一切随缘!需要用时,不能强求不用,不要用时,不能刻意去用!
 
该用就用,各种数据库本来就不太相同,要考虑移植性,恐怕很累。
比如你在M$ SQL中用:
select top 10 * from tablename
在Oracle里就绝对不可能写成上面的东西了。
 
net framework 不错,效率和性能还好,我们早在用。
不过MTS和net framework联编会有小问题
 
俺已经用.net做个一个项目了,强烈推荐使用
.net已经有内部使用版了,马上就推正式版。
 
多人接受答案了。
 
顶部