请教一个C#非直连访问数据库的问题

我心依旧 2021-04-26 11:47:10
各位大佬好

现在我有一个需求,就是想通过非直连的办法去访问数据库,但是又想尽量提高性能。

是这样的。我们原来估计有40个客户端通过直连的方式访问数据库。所谓直连就是用含有账号、密码、地址等信息的套接字进行连接。但是这样有个问题。如果数据库的账号密码变更的话,我们就需要逐个客户端去更新账密,很麻烦。

现在我们想通过非直连的方式,就是比如通过http配合json的方式读写数据库。服务端是一个其他语言写的可执行。

想请教大家:

1、这种方式相比套接字的直连,性能比较起来如何,会有损失吗?

2、还有没有比较推荐的非直连方案?

非常感谢!
...全文
1356 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifawu100 2021-05-01
  • 打赏
  • 举报
回复
这个写个后台就好了,可以用java
派大奇 2021-04-30
  • 打赏
  • 举报
回复
webapi webservice 都是解决方案 反而 您这 40个客户端直连 服务器的数据库 却是非常错误的做法!! 别说改密码麻烦,就是安全也没保障!!所有客户端都知道 数据库账号密码 推荐 webapi
KnightWelling 2021-04-30
  • 打赏
  • 举报
回复
客户端直接连数据库?没搞明白,这个系统咋设计成这样了??
luj_1768 2021-04-30
  • 打赏
  • 举报
回复
中继打包链接,也就是建一个小群,然后提供一个统一的较高数据通过量的连接数据库接口,用户管理权限在小群中,数据库连接管理权限在群管理服务。变来变去,最终方案应该与此相当。小群也可以是子服、子网。
  • 打赏
  • 举报
回复
wcf,webapi,webservice,ashx,socket,websocket都行
desperaso 2021-04-29
  • 打赏
  • 举报
回复
不论那种方式,就是个数据传过来传回去
http://bbs.cskin.net/thread-18391-1-1.html
ziqi0716 2021-04-28
  • 打赏
  • 举报
回复
假如只有一个用户使用的项目,那现在已经有的实现能满足需求,那什么都不做可能就是最好的。假如更多用户要使用,更多其他方面的因素要考虑,那就要考虑重构现有软件架构了。
ziqi0716 2021-04-28
  • 打赏
  • 举报
回复
性能损失这个问题其实也分场景的,以前有个例子,说的是将PB级别的数据传输到500公里外的电脑上,可以使用网络传输,但是可能需要5天时间;另一个方法是将备份的数据用车运过去,大概需要5小时就可以了。 但是这个场景中数据量就决定了应该使用哪个方法,如果数据只有1g,那就没必要驱车跑一趟送数据了。 所以性能损失只要是在可接受范围内(比如用户体验无差别),但是其他方面提高很多的情况下,那就无可厚非了。 使用现代成熟框架可以提供更多场景的适应性,安全性,可扩展性等等优点,但是需要投入的人力,财力,时间也会相应增加,一个项目应该使用哪种方案,也是需要根据具体项目进行评估,寻求一个合适的平衡点。
ziqi0716 2021-04-28
  • 打赏
  • 举报
回复
的确应该这么做。 .net提供的框架有现成解决方案: asp.net webapi+ef(你的场景应该属于db first)+Auth2.0(提供用户授权支持)。 用户通过用户名密码获取一个授权token,然后在请求json数据时候提供这个token用于鉴权(Auth2.0用途),ef负责从数据库读取数据,并转换成C#的对象;webapi最终返回json使用会处理如何将C#对象(或者对象数组)转换为json字符串的事。 关于性能方面问题可以从缓存入手,大概思路就是用户们常用的数据(及最新的数据)放到内存中,减少磁盘IO(读数据库等操作)。可以使用redis等中间件,40个用户这一个优化就完全可以满足了。 可能每个知识点都需要查资料学习,不过做过一遍以后就会了。
晨易夕 2021-04-28
  • 打赏
  • 举报
回复
你就是想把不太规范的客户端开发,变为标准的c/s模式吧。 你以为40个客户端直连数据库,频繁的读写性能很高吗。
YBcsdn1996 2021-04-28
  • 打赏
  • 举报
回复
用一个中间访问层, 用接口访问,返回你的登录名密码, 建立一个相对持久的访问接口
by_封爱 版主 2021-04-28
  • 打赏
  • 举报
回复
40个人连接 就别考虑什么性能了... 谈不上. 至于解决方案.. 其实楼上的应该是比较可靠并且方便的了... 就是服务端做webservice 查询数据库返回给客户端数据.. 对于C#有很好的支持. 直接添加引用就能用.. 还有一种就是webapi 当然你得自己解,自己提交..写起来没webservice那么容易.. 所以如果是我,我会选择webservice作为传输...至少在你这个阶段..先已实现为为目的.... 可别听风就是雨 各种高科技...... 解决问题的方式有很多...你自己选吧...
shawn_yang 2021-04-28
  • 打赏
  • 举报
回复
webservice,写几个接口就是了
morliz子轩 2021-04-27
  • 打赏
  • 举报
回复
两个方案: 方案一: 1、自己写两个实体,服务器连接数据源表、用户账号密码表 2、配置在xml或json配置清单中,或直接写成一个小型的服务器账套数据库,来维护管理这块配置。 方案二: 在UI前端配置这两个List实体清单,直接在应用层建立和维护这两个表配置参数。 我不太建议用config或ini配置型文件来维护这个管理需求,改的面积较大,且不方便维护。
hui1202 2021-04-27
  • 打赏
  • 举报
回复
引用 楼主 我心依旧 的回复:
各位大佬好 现在我有一个需求,就是想通过非直连的办法去访问数据库,但是又想尽量提高性能。 是这样的。我们原来估计有40个客户端通过直连的方式访问数据库。所谓直连就是用含有账号、密码、地址等信息的套接字进行连接。但是这样有个问题。如果数据库的账号密码变更的话,我们就需要逐个客户端去更新账密,很麻烦。 现在我们想通过非直连的方式,就是比如通过http配合json的方式读写数据库。服务端是一个其他语言写的可执行。 想请教大家: 1、这种方式相比套接字的直连,性能比较起来如何,会有损失吗? 2、还有没有比较推荐的非直连方案? 非常感谢!
直连?你给个页面操作不行么?40个客户分配权限自己登陆就行,操作都在你们页面上进行,这样不就只需要1个账号密码去登陆数据库了。
石岩Maple 2021-04-27
  • 打赏
  • 举报
回复
通过Auth2.0方式授权登录,后端直连他不香么
Mr Dang 2021-04-27
  • 打赏
  • 举报
回复
WCF WebAPI 但是都寄宿在IIS里面,40个客户端应该是没问题的,再多我也没测试过。

111,098

社区成员

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

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

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