【项目技术点】浏阳市国土资源交易系统-WCF项目设计技术点总结

2015级WCF项目设计优秀技术要点总结

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
姓名:陈陆亮         QQ:453738784      微信:1---------------80

 

项目名称:浏阳市国土资源网上交易

 

开发工具:SQLServer2014、VS2015;            架构:C/S   WCF

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

总结内容:高级语法实现、常规技术小技巧、数据库设计难度与技巧

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

重要说明:

(1)    本总结书作为优秀学生存档文件,同时是将来半工半读选优、学生实习与就业的重要依据,请认真填写。

(2)    请提交一下完整材料:源码、数据库、项目总结书和本文档。

(3)    本文档作为优秀作品材料放置在我院或其他企业官网展示。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

项目总体功能概要:

    本项目是一个关于国土资源交易的系统,也就是一个进行网络竞拍的一个平台,土地资源有官方政府派发,群众之间土地交易等同时具体功能有挂牌信息,网上银行,个人资料。

挂牌信息包括:挂牌公告的挂牌信息;正在挂牌的信息;所有的挂牌信息;

拍卖信息包括:正在拍卖的信息;用户参与的拍卖信息;所有的拍卖信息;

招标信息包括:正在招标的信息;用户参与的招标信息;所有的招标信息;

    我的文档:显示用户的相关文档、竞购申请书、资格确认书、竞价单、成交确认书;

    网上银行:保证金交纳;到帐情况查询;

    个人资料:用户个人信息、CA证书信息、密码修改、消息管理等;

用户可在此平台公平,公正,公开的交易土地,可以让土地买卖及时推送给用所有用户。本系统还提供辅助功能电子地图,能显示当前竞拍土地处于什么位置,很方便地让用户看到这块地周围的环境、地点、距离商业街、学校等多远,主要功能是,选择显示图层;显示当前地图的全部内容、放大地图、缩小地图、地图的拖曳、测量地图上线型距离、在地图中根据指定的条件查询地图内容、清除操作痕迹,还有个人档案等等人性化功能,能给予用户很好的体验,通过交保证金和在规定期限内交纳了足额保证金的客户颁发资格确认书,同时升级为竞买用户来确保交易的安全

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

优秀技术要点荟萃

1、优秀技术点1:(Socket异步)控制多用户上线与下线

(1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/用户上线与下线操作.avi

(2)源码路径:项目名称-》文件名称

国土资源网上交易系统/登录界面/FRM_Login2.cs

(3)关键代码截图与说明:

客户端:


★服务器(处理用户登录信息代码:)

(4)系统运行效果截图(用红色圈起来):

 

说明:为了方便我们控制用户数,用户日常流量等等的监测,我采用了Socket异步来控制客户端,只要客户端上线,服务器里面的服务端就能同时检测到用户上线的个人信息,同时可以在线升级用户所在的客户端版本或者安装一些更新的插件信息,可以推送每日公告或者一些有关的土地领域的广告,从而达到很好的推广效果,也可以上传一些用户恶意非法操作的信息,监控用户上线下线,用Socket来监听是一个很好的选择,不仅节省了服务器资源,还节省用户客户端的CPU资源利用,为了能一次的传输多条有效信息,我利用字符串拼接和分解技术来传递数据,避免多次提交数据,就如web开发的GET方法一样,利用URL来传参数。

2、优秀技术点2:新闻图片轮播技术

(1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/新闻图片轮播与延迟数据加载 .avi

(2)源码路径:项目名称-》文件名称

国土资源网上交易系统/Page页面/Page_Host.cs

(3)关键代码截图与说明:

·解决跳转窗体时,没有释放资源的问题


·轮播切换


(4)系统运行效果截图(用红色圈起来):


说明:轮播功能主要是展示本程序后台下达公告,或者一些重大事件概要,个人认为非常必要此功能,放眼看如今的IT市场,如果是线上线下的软件,都会弄出一小块地方来展示公司新产品,或者公司维护等信息,轮播功能主要是几点操作

·根据右边标题的ID值去数据库来取图片

·开后台线程(减少主线程压力防止卡顿)和递归思想(无限循环)来实现轮播

·页面跳转的时候及时关闭后台线程

·图片位置换色

做出来之后,我发现在跳转页面的时候,后台线程居然还没有关闭,再深入检查发现,所有已经打开过的窗体都没有释放资源,只是做了简单的窗体切换,难怪会在自动转页面的时候会卡卡的,我琢磨了很久,最终在放容器的Panl中加入了这样的一个事件UserImage_ControlRemoved当跳转页面的时候,释放当前资源,效果很好,最也不担心在原始页面上的内存没有得到释放的问题。

3、优秀技术点3:(业务流程)土地的纸牌显示(画板绘图技术)

(1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/土地展示与翻页.avi

(2)源码路径:项目名称-》文件名称

    国土资源网上交易系统/Page页面/Page_HangShingle.cs

(3)关键代码截图与说明:


·用纸牌来展示土地的情况

·界面友好,用绿色来布局

·支持多数据时的翻页功能

说明:为什么用纸牌来展示尼,因为我的软件从背景的角度来说,不是给专业的人员使用的,而是推向广大的消费者,所以我费了很大心思来挑选布局,直观地展示了土地的信息

(4)系统运行效果截图:


★公告状态

 

 

★已经成交状态


3、优秀技术点3:(核心)用户竞价页面罗列用户报价展示(数据延迟加载)

(1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/用户上线与下线操作.avi

(2)源码路径:项目名称-》文件名称

    国土资源网上交易系统/Page页面/Page_HangShingle.cs

(3)关键代码截图与说明:

说明:当一个竞价页面用户出价多的时候要加载出价用户的信息和头像如果不分段加载数据的话,界面会卡顿2秒左右待用户头像信息加载完了才能弹出竞价界面,这样给用户的体验非常不好!所以我尝试了很多方法来处理多数据加载,例如另外来开线程,但做下去的时候发现线程加载开销太大了,开多几个界面就会很卡,CPU速率也非常的可观,我不得不又另谋方法,我发觉一般的桌面软件都是等界面先加载,后加载数据的,所以我就还是延迟加载数据的方法来加载,这次添加了一个小狗在跑,说明还在不停的加载数据,感觉还是不错的,可以把用户的注意力附加给小狗跑。

(4)系统运行效果截图:

 

4、优秀技术点4:(业务流程)用户出价与服务器处理同步技术(小飞机)

1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/用户出价服务器处理(同步技术).avi

(2)源码路径:项目名称-》文件名称

    国土资源网上交易系统/Page页面/Page_Purchase.cs

(3)关键代码截图与说明:

★出价的代码简单发送TCP信息字符串拼接给服务器处理


★服务器这边就复杂了点,代码有点多,简单描述吧,具体看视频


★刷新最新出价记录的时候不用再重新全部加载一次,因为待出价用户很多的时候,出价异常的慢,所以我只需最新用户穿插到第一位即可,其他所有客户端也是如此,从服务端收到数据


服务器工作流程图

 

   思路:我做这个项目学到最大的财富就是怎样去站在用户的角度去思考问题,这个技术点灵感来自于QQ游戏-欢乐斗地主,我常常模拟模型场景:一百个人一百台电脑都运行着我的软件,其中一个用户报价了,其他99个用户怎样去知道那个用户出了价钱是多少尼?这就是我首选Socket底层通信技术的想法,必须做到实时同步更新数据给用户看,用户提交的数据到服务端处理中转到其他客户端实现即时更新,而通知用户我也是做了分类的,我用了一个树形来描述交了保证金的用户,例如节点Y34代表的就是一个QQ群,群里面只有2个人,而现在群里面的其中一个人说话,其他的在线人员会收到信息,而其他群的无关人员(未交保证金)不会收到信息,而我又意识到很多的问题,如果用户不在那个房间的话,怎样去通知他,你交的保证金最高价钱已经被压下来了,怎么做消息推送,程序要知道你当前是在什么界面上,如果是在当前竞价房间的时候,会出现小飞机提示出价用户的信息,如果你不在当前竞价房间,程序会执行例如QQ消息的推送界面,让你走捷径,迅速回到出价房间,保证拍卖或者竞价公正、公平、公开,实时推送,在这之前,我是用每秒访问一次数据库表来获取最新新增的数据,然后更新,但这有一个非常非常大的弊端,如果100个人上线,100个人每秒与数据量建立关系访问一次,1分钟就是对接6000次,一小时就是360000次,太浪费资源了,感觉是在100人在攻击服务器一样,如果1000人呐,还用不用干。

 

★小飞机消息推送图(在同一间房间里面)

    

 

★树形节点用户(房间)

·里面的用户并非固定不变,动态加载

     

 

★当不在同一个房间的时候,推送的消息


(4)系统运行效果截图:

   因为涉及数据同步问题,具体看视频演示(●'◡'●)

5、优秀技术点4:离线邮件附件(文件)发送(Http上传)

1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/发邮件附件(文件).avi

(2)源码路径:项目名称-》文件名称

    国土资源网上交易系统/用户设置/UdSendEmail.cs

(3)关键代码截图与说明:

★客户端上传代码


MVC端处理上传的文件信息


★客户端下载文件代码


·发邮件功能流程图


 思路:为什么我做这个功能昵,项目书里面并没有提及到发邮件这些功能,因为我在做完基本业务流程的时候觉得最得比较顺手,但为了挖掘一些所谓的亮点,勉勉强强做给发邮件的功能,然后又联想到一些拍卖主可以发一些相关文档给其他用户的时候可以方便一些,不必再添加QQ好友再发送文件什么的,简单来说,方便用户吧,考虑到有些用户不在线,就不考虑Socket的文件传输了,点对点的肯定不行,然后我去找网盘的原理,原来还可以用Http提交表单上传,下载就是普通的对话框下载。

(4)系统运行效果截图:


6、优秀技术点6:记录用户程序操作记录(屏幕录像(音频+图片流结合))

1)系统运行演示文件名称:(每个技术要点单独做一个演示的屏幕录像)

    技术难点录像/屏幕录像.avi

(2)源码路径:项目名称-》文件名称

国土资源网上交易系统/Page页面/Page_Main.cs

 屏幕录像插件相关类库/客户端/浏阳国土资源网上交易系统/屏幕录像类库

(3)关键代码截图与说明:

·抓取一张张图片转成流


·音频采集初始化


·音频和视频的合成


·屏幕录像工作流程


 

说明:屏幕录像能帮助你记录当前的操作,假如你是某个公司的工作人员,而公司要你上交申请土地时的信息又或者要存档当前操作记录的时候,这个屏幕录像功能就能用得上场啦,我刚开始弄的时候以为是先生成一张张图片,再去合成,但是当程序录到一半的时候崩溃了,就会留下非常多的垃圾图,而且单单是纯测试的话CPU到达95%,效率就非常的低了,所以我上网找了很多方法,下载了很多源码,可能在30个源码里面就只有一个方法,一段代码对我的功能有用的,最终我是用采集到的图片流直接填充AVI文件,我发现出来的效果非常的好,开了一个服务端,客户端,酷狗,CPU效率徘徊54%、53%左右,但是又发现一个问题,录像里面是没有声音的。这我就非常纳闷,我找到了外国的一个音频类库,里面的功能非常健全,我就用它来采集声音,又在网络上找到了另外一个音频,视频二合一的开源框架,哇嘎嘎,点击开始录像的时候,同时启动采集音频程序,录完了就二文件合成一个文件,删除多余的音频文件(视频里面已经合成了一个),然后本来想继续研究视频水印功能,和区域录像功能,之后又遇到了很多事情,心烦,一直没去完善它。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陈陆亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值