社区
C#
帖子详情
WPF应用程序如何杜绝骚操作
货郎大叔
2020-08-24 08:15:50
一个WPF应用程序,一个TabControl,有几个TabItem,切换TabItem的时候,都会访问云数据库,以显示数据。为了防止用户恶意点击,给服务器造成压力,一般采取什么方式来杜绝?
...全文
345
10
打赏
收藏
WPF应用程序如何杜绝骚操作
一个WPF应用程序,一个TabControl,有几个TabItem,切换TabItem的时候,都会访问云数据库,以显示数据。为了防止用户恶意点击,给服务器造成压力,一般采取什么方式来杜绝?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wanghui0380
2020-08-24
打赏
举报
回复
同样的道理,逻辑弄清楚了 技术上使用限流,连续操作不理,只把动作存着。你稳定不动了,在拿最后一个。(比如我可以用rx.timeout 和last做)
lich2005
2020-08-24
打赏
举报
回复
尽量利用缓存设计来应对这种密集操作,也就是一些数据可以先下到客户端,客户端本地去读取。有需要点一下刷新之类的按钮再去服务器上读取。实际上数据库查询的时候也会有缓存查询,如果数据库性能不差的话,应该能应付这种情况的。
wanghui0380
2020-08-24
打赏
举报
回复
so,逻辑弄清楚了,技巧上其实无所谓。 这里你用mutex互斥也一的效果
晨易夕
2020-08-24
打赏
举报
回复
是的,这种需求与WPF没有技术上的联系。 就比如拿前端的防抖(debouncing)和节流(throttling)来说,优化的应用场景就十分广泛。 你这儿为了防止用户骚操作乱点增加服务器压力,可以使用防抖优化。即当用户点击切换之后,延迟一定时间后再调用后台接口,如果在这个延迟时间内用户又不断点击切换,就取消之前准备要调用接口的操作,换成调用新操作的任务。 建议先去了解下
防抖(debouncing)
和
节流(throttling)
的理念。
wanghui0380
2020-08-24
打赏
举报
回复
伪代码 tab1load锁 async task tab1load方法() { if(tab1load锁.钥匙==0) retrun; await tab1load锁.异步使用中 tab1.加载状态=加载中 await 加载远端数据 tab1.加载状态=加载完毕 tab1load锁.归换钥匙 } 这样无论他怎么切换,前一个没执行完毕,后一个直接return出去。so,我可以让你切换UI,但我不会重复执行动作
wanghui0380
2020-08-24
打赏
举报
回复
问题: 1.客户会来回操作,可以不让他来回操作,放入加载模态框,不加载完毕不准下次操作 2.如果1你觉着逻辑不合理,ok,我们还是允许他切换,只是加锁。你上次访问没完成,进不了下一次的 查询锁:没钥匙直接弹框告诉客户,正在等待上次请求,有钥匙拿到钥匙 await 一次访问 归换钥匙 3.后端幂等性操作,每个操作只要条件一样,他不会影响变化。那么缓存依赖,那么还是加锁直接返回正在操作请勿重复请求(语义上是“条件一样,我直接返回缓存的结果,如果语义不一样,我执行完了回告诉你结果,但我不会重复执行动作,因为已经有了一个一模一样的条件在运行”)
蜗牛慢慢趴
2020-08-24
打赏
举报
回复
界面已经这样设计了,就没啥大问题吧?用户骚操作一下服务器就受不了了,建议更换服务器
datafansbj
2020-08-24
打赏
举报
回复
这种需求与 WPF 没有半毛钱关系。
通常情况下,为防止恶意或机器人操作,服务端对一个会话里的请求会加上判断,如果请求过于密集(频繁),可加延迟处理,或直接返回错误提示。当然也可在客户端增加这些逻辑处理。不过这种处理是双刃剑,处理不好用户体验度变差。
本质:你根据什么判断是误操作还是正常操作?如果依据本身就不准确或不严谨,那么任何处理方法都不会带来完美的结果。
八爻老骥
2020-08-24
打赏
举报
回复
不是实时数据的话,在程序运行时预加载。
threenewbee
2020-08-24
打赏
举报
回复
把调用的代码放在一个单独的类中。
每次访问,都判断下距上次访问的时间,如果<xxx 秒,不执行。
不要直接客户端连数据库,应该在服务器上部署web api,通过 web api由服务器载访问数据库
《15天玩转
WPF
》—— 优美的动画详解(完结篇)
这一篇写完之后,以后就用
WPF
写一些小程序了,之后开始算法的学习 . . . 那时少年,万花皆有逐梦时 . . . 文章目录 何为动画? 简单独立动画 2.1 简单线性动画 2.2 高级动画控制 2.3 关键帧动画 2.4 特殊的...
谈谈.Net Core 中Cookie
骚
操作
作者简介:Jon(Jonathan)Seeley,一位资深.NET开发者,主要从事Asp.NET/Asp.NET CORE/
WPF
等技术栈的开发,他的博客地址为https://www.seeleycoder.com/。 对于那些习惯于在传统ASP.NET中使用Cookie的人来说,改用...
.NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了 [
WPF
]为旧版本的应用添加触控支持 js css等静态文件版本控制,一处配置多处更新.net版【...
很多朋友看到.NET Core就认为是ASP.NET Core,其实这是有误区的,因为.NET Core 是开放源代码的通用开发平台 (是一个“平台”),基于这个开放平台我们可以开发像ASP.NET Core
应用程序
, Windows 10 通用 Windows ...
Winform MessageBox.Show时居中到主页面
最近winform项目不需要使用全屏显示了,还四分屏,半屏,各种
骚
操作
要上线,被迫学习!在原MessageBox.Show函数的基础上,前面加上控件对象即可。想展示在图片控件中间[pictureBox_Handson]的中间。比如我想展示在本...
100offer举办的「寻找实干和坚持的技术力量」开源项目投票排名分析程序
由于100offer举办的「寻找实干和坚持的技术力量」开源项目投票活动没有按照票数排序的功能,所以本文写了个小程序来实现这个功能,代码如下: import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import...
C#
110,536
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章