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

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

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

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

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

想请教大家:

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

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

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

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告