`
thecloud
  • 浏览: 881853 次
文章分类
社区版块
存档分类
最新评论

智能客户端技术总结(一)

阅读更多

智能客户端应用模型
1.定义:
一个可扩展的能集成不同应用的桌面应用程序,并具有以下特征:

¨ 无接触部署:安装时只要将一个主程序文件下载到本地,直接运行即可,无须改变注册表或共享的系统组件,其他应用组件将在第一次运行时自动下载。

¨ 自动更新:只需将新版本的程序发布在服务器上,由客户端自动发现最新版本的程序和应用组件,并自动下载和更新。

¨ 离线运用:允许脱离服务器时,利用本地的客户端程序和应用组件进行工作。

¨ 动态加载应用组件:应用软件开发商可根据企业应用系统的公共接口进行开发,然后将应用组件发布在企业的服务器上,客户端应用程序将自动发现并加载该应用组件。

¨ 个性化用户界面:用户可根据喜好自行设置客户端应用程序,配置信息将被保存到服务器上。
2.DotNet平台举例
(1)网络运行

.NET Framework 安装提供了一个挂接 Internet Explorer 5.01 和更高版本以侦听所请求的 .NET 程序集的机制。在请求期间,可执行程序被下载到磁盘上称为程序集下载缓存的位置(Windows2000下为:C:/Documents and Settings/Administrator /Local Settings/Application Data/assembly下的某个子目录中),同时该程序集本身以及它引用的其他相关程序集也被下载到本地IE缓存中(Windows2000下为:C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files)。然后,名为 IEExec 的进程在具有有限安全设置的环境中启动该应用程序。例如:您可以在IE的地址栏中输入一个已发布在web服务器上的.net可执行程序(http://SmartClient/MyApplication.Exe),IE并不会像其他文件一样提示您另存为,而是直接执行该程序。

通过这种方式运行的应用程序拥有非常有限的安全设置(Internet权限集),该权限集中的权限包括:安全性、文件对话框、正在打印、独立存储文件、用户界面。独立存储文件允许您的应用程序保存一些数据(Windows2000下为:C:/Documents and Settings/Administrator.TOMATO/Local Settings/Application Data/IsolatedStorage下的某个子目录中,默认存储空间大小为10MB),您可以通过System.IO.IsolatedStorage命名空间中的类来保存数据而不会抛出安全异常。

为了让你的智能应用程序运转,你需要改变一些客户端的安全设置,实质上就是通知客户端运行时间相信你的应用程序。一种方法就是将带有你的程序集的站点添加到IE中可信任站点清单中,然后用安装在你的管理工具目录下的Microsoft .NET Framework Configuration工具来修改.NET Framework安全设置。打开Framework Configuration工具,选择运行库安全策略,然后选择调整安全区域。对于受信任站点中指定的所有站点,将信任级别调整到完全信任。作为选择,你也可以用Framework Configuaration工具来修改安全策略,使它信任你的应用程序的个别程序集。右击运行库安全策略,选择提高程序集的信任级别。

另一个可选择的方法就是用代码组,用Framework Configuration工具来帮助你提高应用系统的程序集的安全设置。你需要让所有运用你的应用程序的桌面用户做这种改变。为了帮助完成该任务,Framework Configuration工具可以创建一个包含安全策略的Microsoft Installer (MSI)部署包。MSI安装了应用程序加载器来分布你的应用程序需要的安全策略和加载器装配。右击运行库安全策略,选择创建部署包。

在网络运行中,自动更新是依靠IE的缓存机制来完成的。即当您需要下载并运行一个应用程序时,IE将向Web服务器发送一个HTTP请求,该请求将获取服务器上该程序的最新更新日期,如果该日期大于本地缓存的程序的日期或者本地缓存中不存在该程序,则从服务器上下载,否则直接使用本地缓存的程序。因此对于.net本身所具有的版本机制而言,不能作为版本更新的依据,只有在某个程序集文件引用另外一个程序集时,才会由.net运行时依据自身的版本机制判断版本号。

注意事项:

这种运行方式通常需要在运行前先设置用户的安全策略。
加载应用组件时,需要一个完整的url地址。
如果应用程序集中需要调用Web Service,该Web Service所在的服务器地址只能是最初下载程序集的服务器,可以构造一个重定向来解决该问题。
某些文件可能不能通过自动更新机制来完成版本更新,如:.Config应用程序的配置文件
如果某些应用程序集文件的版本之间存在着某些关联性,则在某些情况下(如:网络突然中断)可能会出

(2)创建程序
客户端应用程序的执行步骤:
1) 登录系统。通过输入用户名和密码或其他任何方式进行系统登录,通常需要一个登录窗体。(该步操作需要客户端应用程序在线执行,因此可以考虑在窗体上提供一个离线工作的按钮,然后直接使用上次在线登录时服务器传递的配置文件副本。这样做会引发一些安全性问题和客户端数据和服务器数据同步的问题。)

2) 由应用服务器验证通过以后,根据系统设定的用户权限获取用户可以加载的应用组件及其相应的配置信息,同时从数据库中获取用户的个性化配置信息,将这些配置信息组合成一个XML配置文件流传递给客户端应用程序。该步操作通常由一个Web服务调用来执行。

3) 客户端程序解析该配置文件流,根据个性化配置信息设置主窗体样式,根据应用组件配置信息加载相应的程序集文件。保存该配置文件以备离线工作时使用。

4) (本地运行方式)启动后台更新线程,该线程定时搜索更新服务器上是否有最新版本的程序,如果有则自动下载,并提示用户更新程序。

5) 用户通过点击相应的应用组件的按钮或菜单,在客户端主窗体中将显示应用组件自身携带的用户界面。

客户端应用程序基本包含了登录窗体、主窗体和应用组件加载器。加载器内有一个应用组件集合类,同时还提供一些方法用于主程序和应用组件之间以及不同应用组件之间的通讯,某些应用组件是作为公共组件为其他应用提供数据,因此应该通过统一的方法来获取数据。

注意事项和建议:
1)对于网络运行方式,程序集在动态加载的过程从服务器被下载到本地缓存中,而本地运行方式的下载过程由更新组件执行,加载过程则客户端主窗体执行。

在.net中动态加载程序集的方法:

using System.Reflection;

//网络运行方式,加载的程序集路径为服务器上的url地址

assemblyFileName = "http://SmartClient/AppComponent1.dll";

//本地运行方式,加载的程序集路径为本地的目录路径

assemblyFileName = @"c:/SmartClient/AppComponent1.dll";

Assembly asm = Assembly.LoadFrom(assemblyFileName);

2)客户端应用程序的主窗体作为应用组件的容器,可以通过两种方法来显示应用组件的用户界面:

第一种方式是将客户端应用程序设计为多文档界面(MDI)应用程序,每个应用组件都包含有各自的启动主窗体,客户端应用程序执行每个应用组件时,将构造并显示该组件的启动窗体类型。MDI 应用程序中常有包含子菜单的“窗口”菜单项,用于在主窗口或应用之间进行切换。

另一种方式是在客户端应用程序的主窗体界面中预留一块应用界面区域,而每个应用组件作为一个用户控件在执行时被添加到应用界面区域的控件数组中。应用界面区域通常是一个面板(Pane)控件,通过更改用户控件的Z顺序在各个应用之间进行切换(Control. BringToFront())。

3)在客户端应用程序根据配置信息加载相应的应用组件时,同时需要在客户端主窗体的工具栏或菜单上创建对应的按钮和菜单项,并添加事件以便于用户操作。客户端应用程序和应用组件之间应尽量保持独立性,减少关联,以体现客户端应用程序结构清晰和简单。可以通过.net中的回调(事件委托)等方法实现这一点。

使用此方法时需要注意,如果您构造的类型实例包含一个带参数的构造函数,则这些参数对象必须是可跨应用程序域访问的对象,即是可序列化的对象。可以通过继承MarshalByRefObject对象或使用[Serializable]特性标记类,同时设置远程对象的生存期策略。

(3)发布程序
1)在发布和更新服务器上设置一个虚拟目录(如:SmartClient)将应用组件的所有文件放置在相应的目录下。

虚拟目录的设置属性中必须包括:读取和目录浏览权限,执行许可为纯脚本。

对于本地运行方式,需要根据客户端应用程序的版本号设置多个目录,每个目录存放不同版本的所有文件。(也可以在新版本目录下只存放更新了的文件,但需要修改更新组件。当用户更新版本时,必须下载大于当前版本的所有新版本目录下的文件,以防止某些情况下会出现某个版本的文件被遗漏的问题)。

在本地运行方式中,还需要在根目录下维护一个更新版本清单文件,因为它允许用户以老版本客户端应用程序登录。

2)发布一个Web Service。该Web服务主要完成以下任务:

¨ 执行客户端用户的身份验证

¨ 从整个应用系统的安全模块中获取该用户允许执行的应用组件的清单,包含应用组件的位置、文件名称和应用组件本身所需的配置信息。(在本地运行方式下,该清单还和版本有关)

¨ 从数据库中获取该用户的个性化配置信息,和上一步获取的信息合并为一个XML文件流。

¨ 将该配置文件流作为返回参数返回给客户端应用程序。

3)将客户端应用程序放置在虚拟根目录下作为应用组件程序集的加载器,同时在企业内部网站上增加一个指向客户端应用程序的链接。对于网络运行方式,还将提供一个安全策略部署包(MSI)文件的链接。

用户第一次运行时的执行步骤

网络运行方式:

¨ 下载并安装安全策略部署包

¨ 通过点击客户端应用程序的链接,下载并执行客户端应用程序

¨ 将该链接添加到收藏夹中或建立桌面快捷方式,以便于运行

本地运行方式:

¨ 不直接点击客户端应用程序的链接,将此链接另存到用户选择的目录下

¨ 在资源管理器中执行客户端应用程序

¨ 在桌面上建立可执行文件的快捷方式,以便于运行

(4)更新程序
网络运行方式的更新步骤较为简单,只须将更新了的文件直接覆盖老文件即可。其缺点是某些程序集附带的引用文件不能自动下载新版本,只有清空客户端的IE缓存后才能实现更新。

本地运行方式的更新步骤如下:

¨ 在服务器虚拟根目录下新建一个以新版本号命名的目录,增量更新只需将更新了的文件复制到该目录下,否则需要将所有文件都复制到目录。

¨ 修改保存所有版本清单的文件,并指明当前活动的最新版本号,用于和客户端进行版本比较。

(5)扩展应用组件
为了实现企业应用系统的可扩展性,通过接口定义,可以使应用开发商通过实现这些接口将自己的应用组件方便的添加到客户端应用程序中。以下介绍一些接口中主要包含的方法和属性。

1) 应用组件名称属性:用于标明该应用组件功能的注释性文本。

2) 应用组件在客户端应用程序上的各个界面元素属性:指客户端应用程序上的工具栏、菜单栏、下拉菜单项和列表框等用于标志该应用组件的控件上,需要应用组件提供的文本、图片、图标、菜单、事件处理方法等。

3) 初始化方法:在客户端应用程序加载应用组件时,首先执行的方法。在加载应用组件时,对于由服务器传来的配置文件中包含的各个应用组件自身的配置信息,客户端应用程序并不解析,而是将该配置信息在初始化应用组件时作为参数传递给应用组件,增加了灵活性。

4) 获取应用组件加载器方法:获取应用组件加载器后,可以通过其中包含的公共方法获取一些应用所需的共享数据。

5) 获取应用组件启动控件的方法:启动控件可以是窗体或用户控件。

6) 关闭应用组件的方法(可选):当客户端应用程序被关闭时,执行该方法。应用组件本身根据自身情况决定是否可以立即关闭,同时立即释放组件所占用的系统资源。对于MDI应用程序,可以在启动窗体的关闭事件中处理而不需要该方法。

客户端应用程序内的应用组件加载器可以通过枚举组件程序集内的类型来判断该组件是否符合借口定义。同时可以将多个应用组件打包在一个应用程序集中。此过程非常耗时。

分享到:
评论

相关推荐

    论文研究-基于BREW与组件技术的智能手机邮件客户端的设计与实现.pdf

    总结了当前电子邮件领域的相关技术,研究了BREW移动平台和组件技术以及基于组件的软件...运用组件技术,设计和实现了基于BREW平台、符合3G技术标准的智能手机电子邮件客户端,极大地提高了系统程序的执行速度和稳定性。

    竞赛资料源码-电子设计大赛(智能快递存取柜)android客户端.zip

    大数据挑战赛、团体程序设计天梯赛、移动应用创新赛、网络技术挑战赛、全国大学生信息安全竞赛、“中国软件杯”大学生软件设计大赛、全国大学生光电设计竞赛、中国机器人及人工智能大赛、“大唐杯”全国大学生移动...

    SmartClient资料

    智能客户端技术 3 smartclient--练习 8 smartclient--listgrid 12 smartclient 整合 15 smartclient --registervalidate 22 smartclient 连接数据库 24 Smartclient+demo+实例 33 hsql++(the+Visual+Builder+...

    基于BREW与组件技术的智能手机邮件客户端的设计与实现* (2008年)

    总结了当前电子邮件领域的相关技术,研究了BREW移动平台和组件技术以及基于组件的软件...运用组件技术,设计和实现了基于BREW平台、符合3G技术标准的智能手机电子邮件客户端,极大地提高了系统程序的执行速度和稳定性。

    基于图形图像智能设计管理系统的毕业设计实现.zip

    本毕业设计旨在开发一个基于图形图像智能设计管理系统,以解决传统设计管理系统的不足之处。该系统将采用先进的图形图像技术,为用户提供更加直观、高效的设计管理体验。具体实现方案如下: ## 系统架构设计 该...

    竞赛资料源码-挑战杯 app 客户端.zip

    大数据挑战赛、团体程序设计天梯赛、移动应用创新赛、网络技术挑战赛、全国大学生信息安全竞赛、“中国软件杯”大学生软件设计大赛、全国大学生光电设计竞赛、中国机器人及人工智能大赛、“大唐杯”全国大学生移动...

    抽水蓄能电站基建智能一体化管控中心方案

    这是一本由浅入深,全面讲解Zabbix应用与原理的技术书籍,也是作者多年实战经验的总结和浓缩。在概念篇,从一个简单但完整的入门案例讲起,案例中有最基本的概念介绍,通过案例帮助那些只要将服务器加入监控,并且...

    前端直播资料GMTC2019闲鱼基于flutter技术的架构演进与创新.pptx

    课程介绍 随着去年 Flutter beta 版本在端侧的可行性验证完成,今年团队进行了 ...于佳,花名宗心,闲鱼技术团队客户端负责人。 直播详情 时间:2019年6月25日 18:00 前端技术钉钉群 扫码观看更多直播及往期回顾

    基于Android平台的视频监控客户端的设计与实现

    人们对实时视频的需求越来越广泛,Android智能手机带给人们更快捷舒适的操作,4G无线信息传输技术日趋成熟;将4G无线传输方式用到视频系统,由Android智能手机终端进行实时观看视频成为一种发展趋势。针对上述应用...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    15.10 智能操作列表 552 15.10.1 概述 552 15.10.2 应用示例 552 15.11 控件设计器区域 558 15.11.1 概述 558 15.11.2 应用示例 558 15.12 本章总结 562 第16章 asp.net ajax控件开发——客户端 563 16.1 ...

    一个调用VLC的解码库播放 RTSP流和本地的小Demo程序,兼职做了socket客户端的点击事件收集并发给服务端.zip

    总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。...

    实训报告-智能停车场.docx

    智能停车管理系统是基于Linux系统的技术,采用B/S结构,适于分布式多客户作业,客户端的要求也很低。 1.3范围 测试阶段包括单元测试,集成测试,系统测试,性能测试,验收测试,bug测试及对测试进行评估。 本计划所...

    微信小程序,websocket长连接服务器客户端的解决方案.zip

    总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。...

    竞赛资料源码-第十一届中国研究生电子设计竞赛华南赛区二等奖。.zip

    大数据挑战赛、团体程序设计天梯赛、移动应用创新赛、网络技术挑战赛、全国大学生信息安全竞赛、“中国软件杯”大学生软件设计大赛、全国大学生光电设计竞赛、中国机器人及人工智能大赛、“大唐杯”全国大学生移动...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    15.10 智能操作列表552 15.10.1 概述552 15.10.2 应用示例552 15.11 控件设计器区域558 15.11.1 概述558 15.11.2 应用示例558 15.12 本章总结562 第16章 asp.net ajax控件开发——客户端563 16.1 asp.net ...

    外卖系统,包括手机端,微信小程序客户端,后台管理,api.zip

    总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。...

    用于Netkeeper类客户端使用地区的JAVA小程序,帮助用户使用路由器.zip

    总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。...

    基于Android+JAVAEE架构的校园信息交互系统

    随着移动通信技术的飞速发展以及智能便携设备的爆发式增长,移动互联 网的时代即将到来。Android平台凭借其开放性及稳定性吸引了大量的用户和开 发者,成为了目前用户最多、发展最快的移动智能操作系统。开发基于...

    嵌入式系统/ARM技术中的手机开发平台总结

    手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。  手机可分为智能手机开发和featherphone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windowsmobile、linux、iPhone、...

    BIWEB5.8商务智能建站系统

    BIWEB商务智能网站系统是依托在ArthurXF企业应用级PHP开发框架上的大型网站系统,是由上海网务网络信息有限公司经历了5年不断的在各种大型项目中实践、总结、开发设计出来的一个快速开发、简单易用的面向对象的企业...

Global site tag (gtag.js) - Google Analytics