惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
U
Unit 42
博客园 - 【当耐特】
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
美团技术团队
雷峰网
雷峰网
小众软件
小众软件
G
Google Developers Blog
GbyAI
GbyAI
Jina AI
Jina AI
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
Vercel News
Vercel News

博客园 - neverlost

html5 元素 来自 nativeformelements.com 闲扯,面向对象的ext4中的一些事儿1 Ext 4 beta1 发布似乎仍不给力 .net 下比较蛋疼的word 表格转excel表格 浅述教学上基于Media Player的视频切片方式 webservice传输数据量较大的情况的解决方案 - neverlost - 博客园 现场保障系统开发过程中增加并行处理(一) vs2010中文版+codesmith 5.2 安装失败 转的 winform开发连接webservice中单向证书 .net下开发windows服务的经验 .net 写的 webservice 给java调用 ext中使用tab方式 ext做列表页面关于查询多行的办法 关于架构的问题 ext的grid 获取页面内容方式 - neverlost - 博客园 微软.net下 charting 要注意的事情 - neverlost .net 获取 其他类型的webservice的方式以及看法 2条路 代码生成 or 配置 2.1 2条路 代码生成 or 配置 2
客户端开发杂记
neverlost · 2015-08-26 · via 博客园 - neverlost

记录并介绍一下在.net客户端项目开发中的一些琐碎东西,也许会有人有点用或者有点同感。

一个项目,架构为服务端基于JAVA开发的WEBSERVICE,客户端使用.NET 技术开发,由于在设计客户端时,公司的领导提出要求希望未来能做成可扩展的并且可以给第三方的提供接口的可扩展的客户端,而当时在各种因素下,不能采用WPF进行开发,所以只能做成WINFORM形式的,并且考虑到为了给第三方留口子,所以使用了MAF。

然后关于系统本身由于保密条款所限,不能讲太多业务上的东西。

1.本地数据 由于系统大量数据是放在ORACLE的,所以对于我们客户端来说,本地只需要存放少量的比对数据即可,当时采用了sqlite作为本地小数据库。并且,本地数据需要做到定时清理。对于sqlite的数据操作,网上一大把,具体不用详述。

2.数据传输 之前博文里有,由于数据量是非常的大,举例来说,之前我们的甲方的一个部门又上了个新系统,采购一家在业内属于该业务龙头地位的国外大型跨国公司的产品,和我们具有相同功能的模块,就是由于数据量大,导致甲方的网络瘫痪,最后老外强调,是甲方的网络不行,不支持千兆以上的。。。。但实际上,他们业务部门用的全是我开发的系统,至今都是,所以这点我们可以自豪。当然,我们的系统还是可以更优化,同时向老外学习一些的。我们首先在数据传输上进行了压缩。其次尽量减少在xml中的一些无意义的编码(这点目前在新版的设计中已经改了,xml还是太大)。

3.由于采用了MAF的形式,那么对于客户端的窗体考虑到业务需求,我们采用了weifengluo的那个dock,并且修改了其中一些bug以及自行调整了一下。

4.整个系统中最重要的模块其实是一个列表窗口。并且是一个只读的列表窗口。首先列表的字段是可以设置的,当然这并没有什么。这个列表的特点是数据多,要求能根据某特定查询条件多开。并且操作方便,支持全键盘。因为原来使用这个窗口的业务人员,他们的业务工作相当繁忙,并且,不太会操作鼠标,以及原来很多都是玩类似dos的这种窗口的系统。同时这个窗口需要30秒刷新一次。并且对于这次刷新和上一次的数据如果有不同,需要通过颜色来显示。同时,又不能让当前使用的人感受到刷新了,也就是不能跳屏。对于全键盘操作,其实这就简单了,截获键盘输入,然后进行一些处理。

贴点代码图

然后是数据的更新和比对问题。

数据的更新那就是比较简单了,在子线程里跑,然后处理完了丢到主线程里更新界面。需要提一下的是,当每打开一个窗口的时候,会把这个窗口对于的查询条件的数据请求丢到一个观察者里,然后当数据发生更新后,通知宿主进行处理。

当每次数据变化后通知宿主

对于界面上的操作,

对于界面的操作必须要同步进行

对于界面上一些操作,差不多这些应该能说明点问题吧。

还有项目中有个甘特图,我就不截图了,直接改的别人家的控件,难度是相当的大,功能也是相当的强大。记得以前截图和司徒正美的网页版的甘特比较过,嘿嘿。

做这个老版本的系统就2个人写客户端,那是相当的累啊。现在新版本的系统已经在开发了,虽然人多了,可惜原来另一个小伙伴已经不在了,唉神伤。新版本的是WPF的,会更好,更强。