a)升两星:按规矩散分,谢谢各位同仁的支持,请大家继续支持CSDN;b)给大家个承诺:以后决不up、顶自己不懂的问题(当然散分帖例外,呵呵),不管给分多少,认真回复每个帖子,如觉得本人有能力解决的问题可直接短消息通知,请大家监督;
顺便告诉大家,本人一直专注于服务器控件及ADO.NET这两部分的开发,应该还算知道点东西,希望跟大家交流,我晚上QQ(37559811)一般在线,加我时请注明:CSDN,我的BLOG:http://www.cnblogs.com/hedonister,有问题可以在上面留言,尽最大努力帮您解决问题;c)问大家个技术问题,希望大家知道的认真回答:
最近一直在研究系统架构,而且也考虑过几个系统的架构,可是看书上网上介绍所谓的三层架构,有的说数据处理层采用存储过程比较好,还有的使用自己或微软提供的数据处理类实现,请问:你或你所在的团队是如何做的,你觉得哪种更好,其利弊?希望探讨一下d)本帖拒绝up,jf,gz之类的回复,决不给分,请至少发表一点意见,谢谢支持……
顺便告诉大家,本人一直专注于服务器控件及ADO.NET这两部分的开发,应该还算知道点东西,希望跟大家交流,我晚上QQ(37559811)一般在线,加我时请注明:CSDN,我的BLOG:http://www.cnblogs.com/hedonister,有问题可以在上面留言,尽最大努力帮您解决问题;c)问大家个技术问题,希望大家知道的认真回答:
最近一直在研究系统架构,而且也考虑过几个系统的架构,可是看书上网上介绍所谓的三层架构,有的说数据处理层采用存储过程比较好,还有的使用自己或微软提供的数据处理类实现,请问:你或你所在的团队是如何做的,你觉得哪种更好,其利弊?希望探讨一下d)本帖拒绝up,jf,gz之类的回复,决不给分,请至少发表一点意见,谢谢支持……
你的问题:在我们公司的web因为是分布式的(remoting和webservice都用),所以逻辑层和表现层分开的,数据访问层用微软的,微软现在出Enterprise Library Block了,应该更不错吧,没有用过,我们现在用微软以前的daab 2.0作为数据访问层的。
1、可以接受输入参数,并以输出参数的形式将多个值返回至调用过程或批处理;
2、可以向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因); 3、允许模块化程序设计。只需要创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改; 4、减少网络流量。存储过程的主体存储在数据库服务器端,程序中调用时只需要传递存储过程的名称即可。SQL语句需要将语句主体传递到数据库服务器端,在数据库与程序执行端分别是两台主机的情况下,SQL语句方式会占用更大的网络流量;
5、使用存储过程还可以有效的防止SQL注入式攻击;
6、存储过程存储在数据库系统端,创建时在数据库服务器端被编译,其执行速度比SQL语句快。
至于数据访问层,一般采用微软的 SqlHelper.cs ,只是略加改造而已!原因是:这是微软自己写的东东,是非常成熟的,而自己写的肯定或多或少的存在这样或那样的 Bug,故而很少自己写这方面的代码,把主要精力放在了业务逻辑层的实现上!只是个人见解而已! 呵呵
数据层方法采用了工厂模式,接口,而目前采用的数据库有sqlserver和orcle,这两种数据库都支持存贮过程,所以我们一般将一些业务放在存贮过程里头来实现。因为用到工厂和接口,因而不存在换数据库而带来升级的麻烦。个人觉得这种架构还是蛮有错的。。
一向都讨厌将sql语句直接写在代码里头。
1、易更新。(不用改程序)
2、能有效防止SQL注入攻击。
3、效率更高。(因为在服务器端执行,执行更快,且可以有效减少网络传送量。当然,如果你有上千个人同时更新时我不知道服务器能不能承受得了,想有这样的峰值却还没有遇到过。)
4、代码书写简单。(因为我做成了公用的存储过程调用类,所以只要给我的类传送几个参数即可)
只知道尽量把复杂的数据处理用存储过程来写,这样可以有效的保证数据的正确行。虽然.net里也提供了事务的功能,但是个人觉得还是数据库里的用的爽
还有什么秘诀和哥们说说啊!??
--------------------------------------------当然了,我承认有很多分是up来的,但是谈到秘诀我有一点可以告诉你,那就是针对某个自己会的问题,要力争帮问题者解决,不厌其烦的回复,实在不行还可以叫他传工程过来帮他找问题,对于自己懂但是不知道原理的要想法搞懂,比如问同事网友查资料,自己也学到东西了不说,难道楼主不会感动?我就有很多次这样的;
你觉得你能做到吗?要是你觉得可以,你很快要升n星了
1.可以批量执行sql语句,根据返回值来判断运行期的错误
2.sql语句不需要预编译,执行效率高
3.只需要传递参数,防止sql攻击,安全性高我们这里底端数据访问层使用改造后的Microsoft Data Access Application Block,效率挺高,数据逻辑层全部使用接口来实现,这样以来,如果只是数据库变化,只需要重新设计变化后数据库的存储过程,其他上层逻辑都不需要变化,还是比较合理的
它本身和数据库类型偶合高,必须为不同数据库写一个,维护整个访问框架很不方便.
在业务逻辑直接调用Data Access,数据库访问代码(访问具体表的操作)很难得到重用,
如果把这些访问代码单独抽到一个层里(访问层),访问层再通过Data Access操作数据这时就出现问题,
业务逻辑灵活地调用各个访问类时事务需求很不灵活,事务对每个业务逻辑操作都非常重要的.
我不喜欢用存储过程,感觉代码重用性低,可能我不太会用.
现在尝试用NHibernate
不过,俺公司用的是BEA的tuxedo,总觉得到其他地方就无用武之地了
你说的这个SqlHelper.cs
--------------------------
我找不到,请问在哪可以找到
谢谢
----------------------------------------
好