|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2021/1/21 23:23:38 |
标题: |
|
加入我的收藏 |
楼主: |
1、客户端传递sql语句到间层,查询后返回json,客户端再转成数据集? 2、客户端调用服务端方法,并传递查询条件,然后返回数据? 3、想不到其他方法了
1的缺点是sql和服务绑定,程序不好升级,实际上还是2层模式?
2的缺点是每个查询界面都要写个查询方法吗?这样是不是太繁琐了?
望各位大佬指点一下,不胜感激
----------------------------------------------
- |
作者: |
|
2021/1/22 7:54:21 |
1楼: |
你想想B/S模式的,浏览器上的按钮不都是调用后台的服务端的方法吗?
----------------------------------------------
-
|
作者: |
vmao (毛小毛) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2021/1/22 8:34:10 |
2楼: |
既然是Delphi,就不要纠结SQL了,直接前台传过去。你逃不脱SQL的魔掌滴。
----------------------------------------------
-
|
作者: |
cxg417 (cxg417) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2021/1/22 8:37:10 |
3楼: |
混合运用,简单的查询,就传递SQL到后端,SQL语句最好加密,复杂的业务逻辑,就在后台写脚本
----------------------------------------------
-
|
作者: |
|
2021/1/22 9:01:47 |
4楼: |
直接传sql的话,感觉客户端和sql绑定太紧了,如果修改sql的话都要升级客户端了,虽然这样也可以,但是总感觉不太完美。
目前主要做windows桌面端,跨平台fmx好用吗? 或者是Lazacus?Lazacus开发方便吗? 或者干脆搞个web版,linux、mac os、手机都可以用?
----------------------------------------------
-
|
作者: |
|
2021/1/22 10:12:56 |
5楼: |
我觉得怎么方便怎么来,把升级做好就可以。作为一个长期服务的软件,不可能不升级的。当然,如果可以的话,尽量将SQL放服务端。不要为了架构而架构。 如果你实在觉得SQL看着不爽,那用ORM好了,找个现成的框架,SQL语句都不用你写。虽然这样一来就不能享受Delphi的很多福利了。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
|
2021/1/22 12:24:16 |
6楼: |
三层的程序,按照开发的原则,业务逻辑在中间层。前端仅仅是 UI 层。
UI 层有一些简单的限制用户操作的业务逻辑。
业务逻辑的实现,包括 SQL 语句,应该都放在中间层,也就是服务器端。这样的好处是: 1. 安全;业务逻辑在服务器端,别人不可能远程攻击你修改数据。如果在客户端,比如可以从客户端送 SQL 语句过去,那我写个程序送 SQL 语句过去,就可以实现 SQL 攻击。以前在网页里面用户登录的地方直接写 SQL 语句就可以把服务器上的数据库搞坏这种事情时常发生的。
2. 方便升级。你改了业务逻辑只需要升级服务器端,升级一台机器,无需把所有的客户端都升级。当年 BS 之所以流行,理由之一就是改了代码不用逐个客户端去升级,只要升级服务器就行了。反正客户端就是个浏览器。
3. 模块化。业务逻辑封装成模块,修改、替换也容易。但如果放在客户端,替换就不容易了。
----------------------------------------------
-
|
作者: |
iny (盒子) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2021/1/22 14:02:15 |
7楼: |
只有搞Delphi的还在客户端传递SQL!
----------------------------------------------
-
|
作者: |
vmao (毛小毛) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2021/1/23 16:20:27 |
8楼: |
应该说搞C/S模式的还在客户端传递SQL,不光Delphi,C#照样传递SQL,因为这样简单,也没啥毛病。传查询SQL select本身不是什么坏事,坏事是把update,delete,insert写在客户端,这样就把逻辑弄前端来了。 我用C#照样前台SQL查询,后台写方法更新,Delphi就没有必要,DELPHI Provider更新更方便,写起来方便是优点,但也是缺点,逻辑绑定在控件里了。
----------------------------------------------
-
|
作者: |
|
2021/1/24 20:19:59 |
9楼: |
尽量将 SQL语句保存到 数据库了,然后设定一个 ID。
客户端,仅需传递一个 ID号及参数到服务端,然后服务器端做相应处理返回数据集就行了。。。
我就是这样做的。
----------------------------------------------
我是菜鸟,己经搞了十多年了,但是我仍然很菜。
|
作者: |
kwer (★★★★★) |
★☆☆☆☆ |
-
|
普通会员 |
|
2021/1/25 8:42:13 |
10楼: |
是谁告诉你这是二选一的选项呢? 为什么非要搞一个三层十八层,二层难道它不香吗? 看看6楼是怎么说的: 安全性,模块化,服务化。 这跟传不传sql有那么纠结吗?
----------------------------------------------
==========-==========-==========-==========-========== 多隆, 给我备一匹最快的马, 我有事要走先~~~ ==========-==========-==========-==========-==========
|
作者: |
|
2021/1/26 16:11:31 |
11楼: |
1 客户端传sql给服务端,伪三层。
2 客户端传ID给服务端,让服务端去检索对应ID的sql,返回数据集,用sql脚本语言去代替delphi语言,优势全没了,服务端基本是摆设。
3 BS结合,delphi的客户端就一个浏览器,然后服务端业务逻辑,UI生成都在服务端上,那还搞delphi干屁~~~~~~~直接java不香吗
4 还有一种类属性做法,叫什么orm框架N+1层之类,数据库的字段生成类属性,然后进行赋值提交,觉得挺牛逼的,结果用到grid表中操作,简直就是废物。 ========== 最终解答: 用RTC+在线升级。 客户端:不要处理任何sql,多用ClientDataSet和Rtc结合提交数据 服务器端:处理逻辑,不写复杂sql,遇到复杂sql,拆开用程序语言写。 可以返回结构体,返回数据集,返回数据流。 数据库:永远都不要写触发器,存储过程,他就是用来储存数据的
用delphi的人,不要老想去靠组团开发,就一个人玩的东西。
----------------------------------------------
123
|
作者: |
|
2021/2/18 9:25:13 |
12楼: |
@iamdream (银河恒久远,梦想无止境!) 题外话: 老哥的长风文本精灵能改到新版本用就好了,一直在用着这个好东西。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
|