学习IssueVision,开发MyVision

原创 2005年02月26日 18:09:00

现在学到了IssueVision的一些特色,自己开发了一个东西
当然借鉴了IssueVision的很多东西
用到的多的就是Observer和Command两个设计模式
对于较简单的Command模式,我实现了通过菜单项,ToolBarButton,LinkLabel的Command模式,就是在这些事件实施表现层和业务逻辑实现层中间加了一个Commander,达到了多对一的目的,简化了代码,清晰了结构.
对于Observer模式,我现在主要是对于MainForm加了一个Subject
然后让StaffPane和InfoPane订阅这个Subject,来Observer这个Subject.从而实现界面显示的灵活性
我做的这个东西的功能是想实现一个类似Serv-U的功能
当然最重要的数据只有一个就是用户信息,如果用数据库的话只需要一个User表,我曾经想过要用一个xml文件,但是因为前段时间弄那个lib,所以就偷懒了,直接用codemaker生成了一个MyLib,然后在主Project-MyVision里引用MyLib,实现了对SqlServer数据库的操作
接下来的日子里需要做的是继续研究IssueVision里面还没有分析透但是又是他独到的地方,然后想办法加以利用,还有就是我那个serv-u在本地机器(既做服务端又做客户端)测试一点问题都没有了,但是分开在两个机器测就是不行,其中控制链路已经成功建立并成功处理了一部分命令,但是对于数据链路始终没有成功.这个问题一旦解决,整个project就没有什么深层次的技术问题了

下面是IssueVision网上搜到的特性

1. web service
采用web.config保存数据库连接字符串,即在服务器上存取数据库,对外通过web service提供服务。
理论上web service是标准的服务,所有离线处理和同步都在客户端程序中执行。

Common: 公共类, 用于数据库连接字符串的存取,并确认是否采用明文或加密串
CredentialSoapHeader: 用于验证时需要传递的soap信息,主要包括username/password
EventLogHelper:  日志记录 (在IssueVision中也有一个相同的类,为什么两者没有单独出一个dll,可能是因为防止下载时文件太大,即客户端不需要单独的DLL.)
IssueVisionService: 真正的WEB service 提供者, 在其对外的三个方法中,都需要进行验证才能使用. 主要是得到变化的DataSetIssue集合,然后同步到数据库中,并返回数据库最新的列表,同时将变化添加到日志表中
IVData: 数据库存取的类, 各个表的存取和数据变化时事件触发后的执行.
 主要的方法: GetLookupTables(), 填充Staffers和IssueTypes到DataSet中
 SendReceiveIssues(changedIssues, lastAccessed)
IVDataSet: 一个实体对象, 用于在web之间传递的对象, 即客户端和服务器之间传递的对象, 是一个xsd文件,可以直接在里面设计表结构,即存取时的表对象,XML语法格式. 在vs.2005出来之后可能要使用ObjectSpace. (faq: 是否这里的表对象必须与DB中的一致?)
SecurityHelper: 一个用于身份验证的类, 即根据提供的CredentialSoapHeader,从数据库中取得信息进行判断,如果要用windows集成或AD域认证模式,需要修改此类。
DataProtection: 数据加解密。

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中,由系统一起完成呢?重复功能,bad smell!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IssueVision_CS.msi

  • 2009-03-24 21:48
  • 2.94MB
  • 下载

IssueVision

  • 2008-07-25 10:51
  • 4.95MB
  • 下载

Linux驱动开发学习的一些必要步骤

1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以i...

IssueVision for Vs2003

  • 2008-10-30 08:59
  • 897KB
  • 下载

IssueVision_CS.msi

  • 2008-04-22 11:18
  • 2.94MB
  • 下载

dc学习之基于Android Studio的jni开发总结

AS中jni技术 学习笔记最近在学习AS下的jni开发技术,现将自己的学习笔记整理出来,望可以帮助刚学习jni的童鞋,大家有什么不懂的地方,提出来,我们一起学习,一起进步。在本篇文章中,借鉴了一些大神...

IssueVision2005

  • 2009-02-21 16:56
  • 1.92MB
  • 下载

IssueVision C#2005版

  • 2008-04-16 10:15
  • 4.95MB
  • 下载

【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十课:Cocos2D-X坐标系统1

【麦可网】Cocos2d-X跨平台游戏开发---学习笔记 第十课:Cocos2D-X坐标系统1 ================================...

IssueVision 源代码

  • 2014-06-07 00:03
  • 1.33MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)