IssueVision学习笔记一

来源:互联网 发布:warframe淘宝 编辑:程序博客网 时间:2024/06/03 20:27

概述:
1、IssueVision功能上是一个公司的网络部门里面, 接到故障报告,分配任务给部门成员. 然后反馈/确认. 关键想展示冲突解决和AutoUpdate 
2、IssueVision主要是来说明SmartClient的特性的,实现在线/离线,很好的用户体验,自动更新,快速的响应速度,数据冲突的解决等,而不是展示IssueVision的功能,它只是一个demo。
3、IssueVision中并没有权限的控制,只判断了身份是否合法。AppUpdater和WindowsUpdate是没有关系的,它是通过web services比较软件的版本来确定是否需要升级。

 ThreadHelper.dll: 提供线程相关组件
 SplashScreen 闪现的屏幕
 SingletonApp 唯一程序,第二个实例不会动作
 SafeLabel -- 可在多线程下安全操作的Label
 BackgroundWorker 后台工作程序
 RunWorkerAnsy() 开始后台工作
 DoWorkEventHandler 后台执行开始事件 执行异步任务
 RunWorkerCompletedEventHandler 后台执行结束事件
 ReportProgress() 报告后台进度
 ProgressChangedEventHandler 进度改变事件 用于画进度条
 CancelAnsync() 取消后台任务
 
 IssueVisionWeb :
 IssueVisionWebservices.asmx:
 IVData: 组件. 调用dataadapter实现数据操作,含业务逻辑.
 SecurityHelper: 封装了安全认证操作
 Common: 读取配置
 EventLogHelper: 辅助操作EventLog
 
 IssueVision:
 WebServiceLayer: 提供WS访问的中介. URL从配置文件读取. CredencialHeader从登陆用户取得.
 UserSettings: 当前用户的状态和状态的本地缓存
 SerializationHelper: 数据到文件的加密存储
 DataProtection: 调用Win32API实现的加密解密
 LoginForm: 登录. 被MainForm调用. 窗体淡入淡出.
 IssueSubject: ISubject 业务模型Model
 SaveIssueData() 保存业务数据到本地文件
 LoadIssueData() 加载业务数据
 AppUpdator: SmartClient的关键。自动保持版本更新。
 数据采用DataSet保存和传递,不论客户端还是Web服务端。
 数据访问采用自动生成的DataAdapter。

 IssueSubject作为整个程序的业务模型,对外提供数据、数据时间、存储、更新等动作。
 窗体中的各个显示控件监听数据变化事件,有变化时调整自身需要显示的部分。

冲突检测:
客户端从Dataset.GetChanges()取得有修改的数据通过Web服务提交到服务器。
Web服务在提交用户的改动时监听DatatAdapter的UpdateError事件,把有冲突的数据放到Conflict表中返回给客户端。
实际上利用了DataAdapter的并非冲突检测功能。

WHY:
1. 客户端为什么没有使用IsolatedStorageObject来保存临时数据?
2. 冲突数据的保存是利用DataSet中新建的表Conflict。如果有N个业务表需要检查并发冲突,DS中就需要2N个表。是不是可以还放在原来的表中,只是设定一个RowError呢?
3. AppUpdater是不是可以注册到WindowsUpdate中,由系统一起完成呢?重复功能!