锁定老帖子 主题:讨论:在浏览器上生成SQL语句可行吗?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-31
最后修改:2009-08-26
http://www.iteye.com/topic/398794
论坛访问地址: 前言: 虽然本贴有很大的可能变成新手贴与隐藏贴,但我还是想贴出来看看. -------------------------------------------------------------------------- 现在的Web开发,尤其是流行的SSH组合,已经变得越来越复杂,这是不争的事实. 这种开发上的复杂性,在我看来就是前台程序,与后台的数据库,不断封装而加剧了隔离造成的. 如果在程序的前端,能够提供一个javascript的调用接口,可以直接编写SQL命令来操作后台的数据库.(select,update,delete,commit,rollback etc.) 那么数据库就可以直接暴露在用户前端,只要加上一定的用户界面,完全可以将现在后台做的工作移植到前台来做. 这样的话程序结构就简化很多了,而且可以直接抛开Stucts,Spring,Hibernate这些东西配置,管理的复杂性. 当然问题也很多了,安全性,权限,交互等等. 大家说说还有啥局限性,或者说有啥致命的缺陷,使得这种方案是行不通的. -------------------------------------------------------------------------- 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-31
一个最直接的问题就是你无法重用业务逻辑了。任何页面操作都需要你从头开始写SQL语句,一旦表结构发生微小的变动,你的整个web应用全部需要重写一遍。
|
|
返回顶楼 | |
发表时间:2009-05-31
两个问题:
1.UI与业务逻辑的耦合度增大 2.严重的安全隐患 |
|
返回顶楼 | |
发表时间:2009-05-31
操作难度大、安全隐患严重。动态处理SQL尝试一下我的“仓库猫”框架如何?
|
|
返回顶楼 | |
发表时间:2009-05-31
可以看一下FQL,开源的可以去看源代码。
http://wiki.developers.facebook.com/index.php/FQL 至于是分析内容判断权限,还是直接屏蔽语句执行权限就看需要了。 我曾尝试着使用类似方案解决内容聚合调用时灵活度的问题,不需要给一大堆参数了。 不过只给了select的权限。 |
|
返回顶楼 | |
发表时间:2009-05-31
robbin 写道 一个最直接的问题就是你无法重用业务逻辑了。任何页面操作都需要你从头开始写SQL语句,一旦表结构发生微小的变动,你的整个web应用全部需要重写一遍。
关于业务逻辑重用的问题,我是这么看的. 首先,在一个应用中,能够重用的业务逻辑,在整个系统的所有业务逻辑中,其实比例不大,不会超过10%.对于这10%,可以考虑把逻辑放到后台来实现,以实现重用;其余90%,就直接在前台用SQL来搞定. 第二,在现在的设计中,为了业务逻辑的重用,经常会在各个类之间调用来调用去,一个数据转换来转换去,最后在看程序的时候,很难搞清楚这个业务过程到底访问了那些表,进行了那些实际操作,这种复杂性是否值得,我觉得很多时候需要具体分析才能确定. 对于表结构变化引起的SQL变化,以及页面的重写,我认为这在目前的情况下是无法避免的,无论SQL在那里生成,都是需要改写,并且调试才行的. 但对于在界面上直接写SQL的,可以只修改一个页面就直接看到修改后的效果,而采用SSH及类似方式,数据表修改以后需要修改一大堆东西而能真实看到实际修改修改.效率并不高. |
|
返回顶楼 | |
发表时间:2009-05-31
那我可以随意改数据库了?
|
|
返回顶楼 | |
发表时间:2009-05-31
laiseeme 写道 那我可以随意改数据库了?
数据库和信息安全确实是一个问题. 在采用SSH开发的时候,这种权限的控制是通过javascript和后台的java代码分两个层次来控制的. 对于这个问题,有两个途径来解决数据访问的权限问题. 1. 把原来在后台用java代码实现的权限控制功能,移植到前台采用javascript来实现,或者采用dwr等方法,在前台调用后台的业务逻辑类来进行判断. 2. 在后台接收SQL语句的地方,编写一个SQL语句的验证类,符合验证规则的通过,发送给数据库;不符合验证规则的,直接退回. 通过这种组合方式来防止对数据库的篡改.具体的实现强度可以根据项目的实际情况来选择. |
|
返回顶楼 | |
发表时间:2009-05-31
flyspider 写道 两个问题:
1.UI与业务逻辑的耦合度增大 2.严重的安全隐患 重申一下我的思路,UI现在和业务逻辑不仅仅是耦合了,而是直接采用Javascript来编写业务逻辑,业务逻辑大部分在javascript里面调用实现,少部分在后台java实现,通过DWR等方式来调用. 具体到安全隐患,需要细化说明,究竟可能存在那种安全隐患,然后再来讨论究竟有没有解决方案. |
|
返回顶楼 | |
发表时间:2009-05-31
那你直接考虑下flex吧
|
|
返回顶楼 | |