问个弱弱的问题,请有经验的大神回复一下!

headsonlkc 2018-02-02 05:57:22
CS架构的程序中,使用数据库是否由客户端发出指令要求服务端返回相关数据?
还是只是为了客户端找到服务端作连通功能,
而读取数据库还是由SQL连接池来连接后直接读取数据?

程序确实测试过,发现直接读取SQL的好快,一但使用SOCKET读取就要最少两三秒才完成
使用异步,同步线程,先读取控件,再加载数据 都是差不多的速度 ,慢

请教!请教!
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
headsonlkc 2018-02-06
  • 打赏
  • 举报
回复
多谢以上的老师的回复!!! 前天把软件拿到客户那边去测试了! 结果速度快得我有点荒,在我这边读取要3-4秒, 在客户那边根本没有觉得到有延时的,使用的是SOCKET,剩下的再进行优化一些就好了!
  • 打赏
  • 举报
回复
比如说(我们实际做过)开发一个 js 客户端的数据库“驱动”框架,也就是让 js 程序使用 ado.net 那样的方式来远程对某个数据库“增删改查”,这有多大技术难度?难度很低很低,可能用1天时间就够了。然后肯定有一大堆“程序员”会说这样开发很爽,很简单粗暴地解决问题,肯定极力要求自己的公司以后一直这样开发。那么这叫做c/s还是b/s呢? 其实过去很多c/s 的叫法是有歧义的,以至于许多人仅仅用一个 winform 桌面程序调用数据库驱动,就说自己开发的是 c/s 程序。这就比较容易忽悠客户。 在互联网时代,比如说客户下订单,那么前端只需要、并且只能发一条业务“下订单”指令,这时候后端操作可能涉及到3个数据库、18个数据表、甚至包括远程其它SOA系统,才会处理完这个指令,然后返回结果给客户端。整个过程不过是300毫秒延迟而已。 而假设你(这里先不管你把一个统一账号登录的数据库系统端口暴露在互联网上的安全问题)把的前端应用是通过几十条、几百条数据查询处理语句,通过反反复复地在客户端和数据库系统之间来回copy数据,你把业务逻辑层写在了客户端应用中,这能叫做 c/s 系统吗? 所以c/s系统是软件工程概念,客户端系统跟远程业务服务系统单独设计开发,同一套服务器系统可以开放api给完全不同的编程语言、编程风格的不同的桌面或者手机或者网页调用,那么就是 c/s 架构的。 注意网页访问,前端开发应用,也照样可以是 c/s 架构访问服务器系统。而传统的 b/s 架构是指那种通过 <form action=....> 这类浏览器一遍遍下载和刷新浏览器页面的模式。 所以如果你把背景搞大一点,你就能理解 c/s 的基本作用。比如说你想发布一个电冰箱企业的智能服务平台,你最起码地就需要基于c/s架构,你推出一套业务服务通讯协议规范说明书,各个电冰箱企业就可以远程访问你这个平台的 api 了。这就是 c/s 程序员日常干的事情,是他们的知识和工作能力的体现。 而一个人刚开始学编程时会调用 ado.net 等等数据库驱动“增删改查”,根本谈不上架构设计,也不具有上述这方面的能力。
  • 打赏
  • 举报
回复
client-server 架构的意思其实就是“三层架构”的前身,也就是把前端决不访问数据库!这至少在30年前就是网络软件的标准模式。 比如说你去一个大点的公司应聘,你说自己只会局域网里开发一个小OA那种的做法,在 asp.net 或者winform或者wpf里边直接调用DAL驱动层接口访问数据库,而不是像一个大公司的程序员那样去把前后端分开设计,那么你这个时候说自己设计开发的是 c/s 架构程序,其实也不能应聘成功。所以你的第一句话一开始就说“CS架构的程序中”这是一个标题党,人家考察你的深层次的网络应用设计是否能够适应互联网时代的技术要求,就发现问题了。
  • 打赏
  • 举报
回复
一个程序调用数据库系统的驱动来访问数据库服务系统,其实不论是asp.net还是各种桌面(这里是指 .net 范畴)的应用都是一样的,这个操作其实跟你的程序的 c/s 还是 b/s 没有关系。 其实 c/s 应该是指“client/server 设计架构”,也就是说你自己会开发业务服务系统,同时也开发客户端系统。这样做的时候你的服务器叫做 BLL 业务服务器系统,你的客户端是通过(比如说)1、20个服务功能来访问你的后台(不定哪里部署的)数据库系统里边的4、50个数据表。因此 c/s 其实是一种开发模式。而直接调用 ADO.NET 等等数据库驱动,这其实并不是一个架构层次的东西。 比如说世界上的大型游戏软件,为什么人家服务器不是让随便什么人“增删改查”数据库呢?为什么最起码的架构是服务器跟客户端进行双向通讯处理呢? 再比如说手机淘宝,当有1亿客户端同时在访问的时候,为什么每一个手机客户端不是在那里打开关系数据库在那里“增删改查”随便玩儿?为什么要通讯协议?为什么人家阿里可以保证整个网络上最慢100多毫秒就要返回复杂的业务访问结果,而你偏说“一但使用SOCKET读取就要最少两三秒才完成”呢?这只能用编程技术来解释,而不是要说是 Socket 有什么问题。 实际上,基于通讯架构设计而自定义业务服务协议的程序员和基于“增删改查概念”的程序员,这是两种程序员,基础知识不同。
xuzuning 2018-02-03
  • 打赏
  • 举报
回复
C/S 是 客户端/服务端 架构的简称 你描述了两种情况 1、客户端通过服务端访问数据库,并接收服务端返回的数据 2、客户端直接访问数据库 第一种是典型的 C/S 架构,如果效率低,显然是你的代码有问题 第二种,虽然数据库也是提供服务的,但一般将他称为文件共享架构而不是 C/S。不过也有不少人称其为 C/S 对于第二种,微软曾一度当作标准进行推广。但没有料到反对者的猛烈砰击,就是现在还谈虎色变的所谓 SQL攻击 并导致所有的数据库厂商都对未经授权的数据库访问加以限制 我不是说实名制不好,但毕竟是违背了数据共享的初衷
秋的红果实 2018-02-03
  • 打赏
  • 举报
回复
没太看懂你的意思, 程序确实测试过,发现直接读取SQL的好快,一但使用SOCKET读取就要最少两三秒才完成 ==> 直接连接肯定快了 看你什么业务了,若只是从数据库取数据,直接连接数据库也是可以的;要是还有复杂业务如调度等,是需要服务层的
zhuowp 2018-02-02
  • 打赏
  • 举报
回复
不管从哪个角度上讲,比如安全性,可维护性,性能问题等等,客户端直连数据库都是一种不合适的选择。 如果让服务返回数据慢,测一下是那个环节的问题,一般来说,这么点数据,通信没那么慢的。
headsonlkc 2018-02-02
  • 打赏
  • 举报
回复
数据不多,一个5千条左右,一个2万条左右

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧