huangyiiiiii

此blog不再更新,大家都去我的新家吧http://codeplayer.blogbus.com

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

The Longhorn Application Model

我们为什么需要新的应用程序模型?主要的原因就是为了连接传统客户端应用的开发和web应用的开发之间的鸿沟。

开发windows客户端应用程序,你可以获得windows提供的许多好处,你的程序可以提供一个丰富的快速响应的用户界面,你可以把你的程序安装在客户机上,并且不依赖于网络连接,离线也能运行。windows程序也能充分发挥客户机上硬件的性能。

然而传统windows应用程序也有许多弊端。首先你必须安装你的应用程序,这使得部署更新非常困难。另外,windows应用程序不在浏览器中运行,因此传统web界面的优势比如面向page的应用程序、在页面之间导航、后退前进历史页面等等好功能都不能在你的应用程序中使用,除非你自己亲自做。windows应用程序还不能很好的支持文本,特别是当你要在同一个页面中混合文本和图片的时候。

web应用还有个好处就是,当你浏览一个页面的时候,浏览器只会下载当前页面和它包含的组件,当你导航到新的页面的时候才下载新页面。换句话说,浏览器只下载用户需要的东西。

web应用程序的部署是很方便的。你只需要把必要的应用程序组件放到服务器上去,然后浏览器自动按需下载。我想没有比这更方便的部署了。

为web应用程序创建用户界面也是非常简单的。你用标记语言申明一下就可以。

当然web应用程序也有许多缺点,比如不能安装到桌面上去它就不能离线操作,web应用程序的那些控件相对windows控件来说还是比较原始的,所以web应用程序与用户交互性不是很好。

当前,开发者们要开发一个新的应用的时候总是需要做一个很大的决定,就是到底使用B/S还是C/S。

Longhorn 允许你同时拥有这两方面的优势! Longhorn应用程序模型将这两方面组合成单一的一个基于托管代码的程序设计模型。

需要一个新的应用程序模型的第二个主要原因就是需要提供一个单一的编程模型可以创建各种各样的应用程序。看看现在的大型网站,比如CNN或者MSNBC。这个网站是个传统的应用程序吗?还是一份文档?或者是一个多媒体的显示?这些问题都是对的。

当一个网站包含了一些用户界面元素比如ListBox,Edit Radio的时候,它就象一个传统的用户界面,但它有显示图片和围绕图片的文字,这个时候又象一份文档,而当它显示声音视频flash等的时候,它又是一个多媒体。

当然这些丰富的web站点是很难创建的,你需要使用Microsoft ActiveX 控件来显示丰富的界面元素,PDF来提供文档的支持,flash来提供流媒体的支持。这些技术使用完全不同的体系结构,提供不同的特性,并且需要不同的编程模型和工具;

这意味着你必须雇佣许多拥有不同技能的开发者来开发应用的不同方面。开发者们必须把不同的模型融合进单个应用程序。开发已经够难了,调试更难。

Longhorn提供了一个统一的体系结构来支持这三个方面——文档、程序和媒体。你可以使用标记语言创建用户界面,可以使用丰富的windows控件,可以使用强类型的托管语言编写事件处理程序,还可以在同一个文档中混合文字和图片和视频。

使用 Longhorn应用程序模型,你可以使用标记语言创建用户界面、文档和整和不同的媒体,另外,你还可以获得象web应用程序一样简单的部署,你同样可以将应用程序安装到客户机上去以获得离线操作的能力。你的应用程序可以是独立运行的也可以嵌入web浏览器中运行,你只需要简单得重新编译同一份代码即可。任何情况下,你的应用程序都可以是象传统windows应用程序一样基于窗体的,也可以象web应用程序一样基于页面。

Longhorn应用程序模型以如下方式定义应用程序:
 入口点
 控件的流——如何在不同页面间导航
 状态和资源
 应用程序范围内的事件
 与其他应用程序之间的界限

Longhorn应用程序模型以如下方式定义如何部署和维护应用程序
 单个或多个文件的部署
 更新,回滚和管理
Longhorn应用程序模型以如下方式定义用户体验
 0影响安装
 独立运行或在浏览器中运行
 在线或离线运行
 导航模型

Longhorn web应用程序

Longhorn web应用程序的编写和现在差不多,甚至比dhtml还要简单。而功能可不是一般的强大。web应用程序代码完全使用Longhorn的显示层。因此Longhorn web应用程序可以使用客户端的控件,支持多媒体和图片,处理事件——基本上和普通客户端应用程序差不多除了:代码是保存在服务器上的,通过浏览器来显示界面(不是必须的),应用程序在受限制的许可下运行因为用户还没有把它安装到客户机上去。

Longhorn桌面应用程序

Longhorn应用程序模型同样定义了如何编写桌面应用程序。这样的程序就是用户在本地机器上安装了的,在线离线都可以运行,可以注册到shell中去,可以在桌面放个图标在开始菜单里放个快截方式什么的。

桌面应用程序可以在浏览器窗口或一个独立的窗口中运行。事实上,桌面应用程序支持许多web应用程序的特性,包括:
 清晰定义的外部入口点——就是可以在任何页面开始运行
 页面之间共巷状态
 处理许多事件,包括页面导航产生的事件
 控件流
 从页面历史和导航中添加删除入口点
 启动windows应用程序

要编译一个Longhorn应用程序,你先为你的应用程序定义对象模型。你可以直接在代码中写也可以使用一种叫做XAML(Extensible Application Markup Language)的标记语言。然后你把你的代码and/or 标记编译成一个或多个.net程序集,一个应用程序描述文件(描述应用程序使用到了哪些组件),一个部署描述文件(告诉系统如何安装和维护应用程序)。

你也可以把你的应用程序打包成一种新的文件格式叫做 容器(Container)。 容器里的文件可以被压缩、加密、数字签名。

Longhorn 应用程序模型提供了简单的部署方式。最简单的情况就是把你的文件复制到服务器上。相似的,安装应用程序也是0影响的。

一种可选的方式就是根本不安装你的应用程序,用户可以浏览到你服务器上的的应用程序描述然后运行。Longhorn会下载你的程序并执行,不需要验证不需要重启也没有dll地狱。你甚至都不需要管理员的权限来安装和运行这些程序。

默认的 Longhorn 应用程序都运行在一种受限的叫做Secure Execution Environment(SEE)的环境下面。默认权限基本和现在internet上运行的程序的权限差不多。如果需要更多权限可以在应用程序描述文件中指定。

用户第一次运行这样的程序的时候,信任管理者(trust manager)会评估应用程序提出的权限要求,如果发现有危险会提醒用户,用户同意之后才可以运行,信任管理者会记录下来,以后运行这程序就不会有提醒了。

待续

posted on 2005-05-08 22:29  huangyi  阅读(663)  评论(0编辑  收藏  举报