小议部署方法之二

来源:互联网 发布:大数据 企业风险管理 编辑:程序博客网 时间:2024/06/09 08:26

四、智能客户端定义和特点

 

4.1 基本定义

 

智能客户端提供了一个胖客户端所具有的好处,同时带有瘦客户端易管理的特征,同时,智能客户端提供了相比于传统胖客户端应用程序更好的灵活性。举例来说,智能客户端不需要像桌面应用程序那样被设计。智能客户端解决方案能够实现多个客户端应用程序的功能组合,这些功能都是各个应用程序中最合适暴露给用户的。如此的“组合”应用程序,把客户端软件资源集成到一个解决方案中,或者扩展一个应用程序现有的功能,就是智能客户端的特征。

另外,在最近几年,客户端平台变化很快,当前,包括了多种客户端设备,而不仅仅是桌面PC机。这些设备有PDA、智能电话、笔记本、自动设备等等。智能客户端应用程序能够给这些设备的典型使用者提供更好的用户体验,并且可以利用这些设备自带的部分功能。

 

4.2 基本特点

 

这些作为指导的特征包括部分由传统的胖客户端应用程序提供的,还有部分是智能客户端提供的。如果一个客户端应用程序具备这些特征,它就能被称为是智能的:

 

è      利用本地资源

一个智能客户端应用程序在客户机上总是驻留代码的,使得能够利用本地的资源。我们所说的本地资源到底是什么呢?包括所有的硬件和软件资源。智能客户端应用程序能够利用本地的CPU或者GPU、内存、硬盘、以及任何与客户机相连的设备:比如电话、读卡机等等。同时,它也能够利用本地的软件,比如微软的Office应用成,或者任何那些已经安装的、和它有关联的LOBline-of-business)应用程序。

è      互联性

智能客户端应用程序根本就不是单机版的,它总是分布式解决方案中的一部分。这可能就意味着智能客户端应用程序需要和许多处理数据或者调用LOB应用程序的Web服务互相操作。一般来说,智能客户端应用程序会调用指定的服务来帮助我们管理应用程序或者提供部署和更新的服务。

è      脱机操作能力

由于是运行在本地机器上,智能客户端应用程序提供一个关键好处就是即使是它没有连接到网上,也能正常的工作。对于那些工作在时连时断的网络上(比如掌上电脑、笔记本、PDA等等)的应用程序而言,并不能保证网络总是连接的,因此能够在没有连接的时候继续工作时很重要的。即使客户端已经连接到网络上,智能客户端应用程序也能通过一个智能的方法缓存数据和管理连接,从而改进应用程序的性能和可用性。

è      智能的安装和更新

相比于传统的胖客户端应用程序,智能客户端应用程序有更多智能的方法管理其安装和部署。.NET框架可以使用多种技术来部署应用程序集,比如通过文件拷贝或者通过HTTP协议下载。当智能客户端应用程序在运行的时候,应用程序也能够被更新;或者只需要点击一个URL,就能够部署应用程序。.NET框架提供了一种强有力的安全机制用来确保应用程序的完整性以及和它相关的程序集。

è      客户端设备灵活性

.NET框架中得.NET Compact Framework提供了一个能够创建智能客户端应用程序的通用平台。通过这个平台,可以创建多个版本的智能客户端应用程序。每个版本都运行到一个特定的设备上,并且应用程序能够利用这个设备所独有的功能特性。

 

五、.NET智能部署技术发展

 

.NET框架提供了大量的基础功能,这些基础功能使得我们不必在去衡量是牺牲用户体验特性还是牺牲易管理的特性。

 

5.1 技术基础

 

.NET框架很有效的解决了多个应用程序共享程序集的版本冲突问题。一个.NET应用程序或者程序集和它们所依赖的程序集或者组件有很强的耦合性。程序集通过元数据(meta-data)说明了它们自己的精确版本以及它们所依赖程序集的精确版本。一台客户机能够安装一个程序集的多个版本,因此所有的应用程序都能够协同它们自己的程序集版本顺利的工作而互不影响。

这种程序集的绑定机制也需要提供重要的安全措施,一种签名的密码机制能够使得应用程序能够避免恶意的攻击。另外,.NET代码处理安全CAS(Code Access Security)允许程序集能够被赋予指定的权限以至于它们能够在半信任的环境中使用。.NET运行时能够确保程序集只执行被授权的操作。.NET框架在底层基础上定义了一个可扩展的存根,用来说明应用程序或者程序集被授予了哪些权限。

这些特性有效的说明了应用程序的稳定性和可预测性,那么应用程序的部署怎么样呢?由于程序集不必在本地机器上注册,因此,它们只需要简单的拷贝到机器上就能够运行。这使得应用程序的部署变的非常简单。程序集能够在安装到时候从中心服务器下载,或者也能够在运行的时候从中心服务器下载。

 

5.2无接触部署”(No-Touch Deployment

 

.NET中,微软开始创建一个底层结构,它使得发布Windows窗体应用程序与发布ASP.NET应用程序一样轻松。在Visual Studio 2003, .NET提供了一种被称之为“无接触部署”(No-Touch Deployment)的特征, 其允许Windows窗体应用程序从一个URL或一个统一名称转换(UNC)文件路径进行部署,并在客户机中的一个沙箱中运行,这个沙箱具有代码访问安全(CAS)性。

这种方法使得可以通过点击URL来运行应用程序。当用户单击URL的时候,运行库将自动下载应用程序以及相关程序集,并保存到指定的下载缓存区中。这种机制同时会检查更新的版本,使得用户不必关心他们是否正在使用应用程序的最新版本。

在默认情况下,采用这种方法部署的应用程序只被授予了很少的权限,它们基本上没有权限处理本地磁盘、网络服务等资源,并跟中心服务器的服务是分离、独立的。如果必要,可以添加用户、机器、或者企业级别的权限到应用程序上。

当然,.NET框架还提供了其它很多特征,这些特征都对如何设计和构建智能客户端应用程序产生了积极的影响。微软的Windows Forms类就是其中一个尤其重要的特征。这些类提供了大量的用户接口控件,并且在在所有的语言中都使用了相同的UI框架来编程,从而使得开发和测试工作更加容易。

 

5.3  ClickOnce 部署

 

Visual Studio 2005No-touch部署进化到了ClickOnce部署,并出现了一些新的特性给Windows窗体程序开发者提供了一个像部署Web应用程序一样平滑的底层结构。特别地,ClickOnce部署还提供了对一些经过改进的功能的支持,如程序发送、版本更新与回滚、对客户端应用程序安装的更多控制、更新许可和包含在Visual Studio所有结构中的设计时配置支持。

è      配置流水线型部署

  在设计时,通过在Visual Studio2005的工程配置属性中设置发布属性页的各项属性,可以对ClickOnce部署进行配置。依据你的底层结构和用户群,不同的部署资源(文件服务器、Web服务器或者FTP服务器)有其特定的意义。ClickOnce部署允许你指定哪些将要被发布和安装以及安装方式(例如,通过网页进行安装)。可以通过配置来决定应用程序是否被安装到客户机器的物理驱动器上。如果客户端安装完成,你可以规定在程序装载或运行之前是否进行更新检查,或多长时间进行更新检查,或是强迫要求更新--对进行关键性的更新操作来说是个有用的功能。它也可以指定安装程序前的必备条件,.NET框架程序本身就是这样。而且在安全属性页中可以设定一些安全设置。

  当将要发布时,你可以通过点击“工程”|“发布工程”菜单一步生成并发布你的应用程序,它既生成了应用程序也发布了应用程序。发布应用程序的过程由发布向导程序进行管理,它主要查看你的发布配置设定,并允许你在发布前更改这些配置。在发布过程中最后弹出的一个窗体列出了所有需要确定的选项,并且提供了一个选项用来确定是发布程序还是返回修改设定。之后发布向导根据你的选择按照要求发布应用程序。

è      部署程序

  部署程序开始于用户打开部署Web页面并点击发布此程序所需的超链接。应用程序被链接到一个.Deploy文件而不是一个可以自运行的程序。.deploy文件是ClickOnce部署程序所必须的两个文件之一,它指定了程序部署与更新需求。第二个文件是.manifest文件,它指定了程序运行所需要的文件。这相当于程序的装配清单。.deploy.manifest文件都在客户端被ClickOnce部署服务处理,System.DeploymentFramework.Service.exe. 这个服务随.NET框架一同被安装,并且第一此启动时需要一个.deploy文件。它会以对话框的形式要求确认下载,而用户不会看到任何的后台操作。下载完成后,真正的应用程序会被加载到AppHost.exe程序,并由其运行。应用程序会存储在本地的缓存中,直到你指定没有客户端安装操作。以后应用程序启动总需要这个.deploy文件,并且在本地缓存中被执行直到.debug文件指定在服务器端有新的版本。

  如果应用程序运行在要求更高可配置安全性的领域(例如互联网或者局域网),ClickOnce部署程序可以为用户提供达到相应级别的程序访问许可证,以确保程序的正确执行。如果没有许可程序永远不会启动,根本就不会给其运行的机会。

è      ClickOnce 部署的版本控制与回滚

  如果部署了一个程序,一个图标便会添加在“开始”菜单上并且在控制面板|添加删除程序中新增了一项。从添加删除程序中,你可以完全卸载应用程序或者返回到前一个版本,如果存在前一个版本的话。流水线部署程序的版本控制功能主要依赖于你使用AssemblyVersion属性所指定的版本号,AssemblyVersion属性在AssemblyInfo.cs文件中被生成,AssemblyInfo.cs文件是每一个Windows窗体工程默认生成的。就像这样:

      [assembly: AssemblyVersion("1.0.*")]

  版本号被用来决定是否有一个新的版本可以用于下载。它也用来命名部署文件夹和程序所在的客户端临时文件夹。两个文件夹的名称转换形式为程序名_主号_辅号_生成号_修订号。

 

六、反面观点

 

为了实现服务器端部署,微软想来想去开发了no touch deployment(.net 1.1),而现在又变种成click once deployment(.net 2.0)。基本上是将windows软件放在服务器上,然后用户用游览器到服务器上去下载及安装。微软有把这种软件叫做smart client。其实所谓的smart client也是windows app而已,只是让你通过网上安装。为什么不干脆称之为windows client?微软为何要绞尽脑汁想出另一个名字呢?因为当你听到windows client时,你会想到一大堆有关windows client的种种问题。然后你就开始打web based的主意,这是微软最为担心的。所以微软用心良苦的告诫你web based的种种问题然后苦口婆心的告诉你要悬崖勒马,用他们精心配制的smart client,保证你会满意。因为smart clientweb based地容易部署及windows based的容易开发及使用。

 

七、总结

 

  ClickOnce 部署是一项十分强大的技术,它为我们带来了很多好处,使用ClickOnce部署的主要动机是为了部署、安装和控制版本的方便。

原创粉丝点击