返回信息流一个C/S架构+MySQL系统,MySQL放在服务端。客户端和服务端之间使用TCP协议。
是不是应该这样设计啊?
定义好客户端发到服务端的数据格式。
比如:struct SendData{
char* ptrSQL;//客户端要执行的sql语句
int iLen; //客户端发送数据的长度
}
然后服务端接收到包后,执行结构体中的ptrSQL语句,然后得到结果,再传回客户端。
我认为:是不是相当于客户端只是发送sql的语句给服务端,服务器中进行sql语句的执行。那么这样的话,客户端机器上不需要做任何和数据库相关的配置吧?
是这样设计么?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #35386同步于 2009/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
C_S中sql语句执行问题
youziboy
2009/8/12镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
如果是C/S架构,一般应该是在Client安装MySQL的客户端软件,然后程序直接调用MySQL的API来执行SQL语句就行了。自己定义一个Client到Server的数据包格式是多此一举。
C/S架构一向就是这样啊,以前很常见的就是Server端装一个数据库,Client端用PowerBuilder做一个应用程序。Server端要做什么?就是这个应用数据库的设计呗。难道非要自己开发一套TCP通信程序才叫做有事可做吗?
还有,您怎么知道MySQL客户端的安全性比不上您自己开发的TCP通信程序?
您要传SQL,中间传输准备用什么加密和认证的方法?您的程序考虑怎样抵御SQL注入攻击、数据重传攻击、中间人攻击、网络窃听、数据篡改、身份伪造?MySQL的客户端已经有这么多年的历史,至少这些方面做得比较完善吧。您的程序刚做出来会有多少漏洞,有没有预计过?打算怎样测试,有准备好了吗?
【 在 reeze 的大作中提到: 】
: 为什么要让客户端执行sql。根据需求暴露接口就好了。传sql。。那服务器不成了一个数据库了。。。那你所谓的服务端有什么好做的。、
谁要觉得C/S的server端没什么好做的,最好可以有机会去设计一下银行或电信的业务数据库。几百张表,各种数据关联和约束关系,事务处理的方案,触发器的设计,各种帐号和权限的配置,索引的使用,查询优化,多级备份的策略和恢复机制,性能监控,存储容量的增长预测和扩容规划……哦没错,人家只是装了个数据库而已。
其实即使是外层应用调用核心银行的数据库我们也是禁止直接写sql语句的...
所以如果对安全要求较高,即使是c/s系统,最好也还是提供封装的接口给客户端用,具体为什么以前安全培训时有听过,不过忘记了。。。(说到这动态sql也是禁止使用的)
当然小型个人系统客户端装个数据库客户端更方便
【 在 dragon2000 的大作中提到: 】
: 谁要觉得C/S的server端没什么好做的,最好可以有机会去设计一下银行或电信的业务数据库。几百张表,各种数据关联和约束关系,事务处理的方案,触发器的设计,各种帐号和权限的配置,索引的使用,查询优化,多级备份的策略和恢复机制,性能监控,存储容量的增长预测和扩容规划……哦没错,人家只是装了个数据库而已。
用存储过程或者中间件。中间件不用自己开发,存储过程可能是由自己设计。
【 在 uriel 的大作中提到: 】
: 其实即使是外层应用调用核心银行的数据库我们也是禁止直接写sql语句的...
: 所以如果对安全要求较高,即使是c/s系统,最好也还是提供封装的接口给客户端用,具体为什么以前安全培训时有听过,不过忘记了。。。(说到这动态sql也是禁止使用的)
: 当然小型个人系统客户端装个数据库客户端更方便