案例研究:使用 AJAX 将 WinForms 控件引入 Web





0/5 (0投票)
Atalasoft 决定为其 WinForms 影像控件创建 Web 版本。本案例研究概述了为确定将哪种技术迁移功能到浏览器所使用的需求和分析:AJAX vs. Java vs. ActiveX vs. Flash。
这是我们对 The Code Project 赞助商的展示性评测。这些评测旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。
2003 年,Atalasoft 决定创建其 WinForms 影像控件的 Web 版本。将控件移植到 Web 的主要问题是如何在 Web 控件中获得与 WinForm 控件相同的交互性。以下是主要需求的一个简短列表:
关键 Web 图像查看器需求
- 跨平台和跨浏览器
- 交互性类似于 WinForms 控件
- 显示大图像在小视口时出现滚动条
- 按需加载图像部分的功能
- 通过鼠标手势进行平移、缩放和选择的功能
- 与客户端的 HTML、CSS 和 JavaScript 以及服务器端的 ASP.NET 紧密集成
- 无需特殊安全设置
- 无需安装或批准任何插件
- 可用于未来控件的技术
- Web 缩略图查看器(2006 年发布)需要延迟加载缩略图并与图像查看器完全集成
- Web 注释查看器(2007 年发布)需要能够在浏览器中创建、编辑、移动和调整注释大小
对于这个项目,我们选择使用后来被称为 AJAX 的技术。该术语于 2005 年被创造出来,用来描述一种通用的技术,即在用户需要服务器更新时使用 JavaScript 异步联系服务器,并使用通信结果通过 JavaScript 动态生成 HTML 来更改 DOM。最著名的例子是 Google Maps,但支持我们称之为 AJAX 的浏览器功能于 2000 年被引入 Internet Explorer 以实现 Outlook Web Access。到 Atalasoft 开始时,这些功能已在所有主流浏览器中实现。
<embed src="http://www.youtube.com/v/ZCit_ZEUEjc" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent" /></embed />AJAX 只是在浏览器中实现交互性的一种方式。当时这类应用的通用术语是富 Internet 应用程序(RIA),该术语仍然涵盖了广泛的技术,这些技术可以在 Web 浏览器中实现类似桌面系统的感觉。有几种技术可以用来实现我们的功能集:Java Applets、Flash、ActiveX 或 AJAX。我将简要描述和讨论我们对每种技术的评估。
Java Applets 是用 Java 编写并在浏览器沙箱内运行的程序。它们自 1995 年以来就已存在,并且是一种易于理解的技术。需要注意的是,尽管它们有悠久的历史,但在公共 Web 上仍然相对罕见。我认为这是由于以下缺点:
- 浏览器中可用的 Java 运行时版本不一致
- 并非所有浏览器都默认提供 Java,而 Java 并不像许多应用程序那样普及。
- Java Applets 与 CSS 和 JavaScript 等其他浏览器技术集成不佳
尽管如此,Java Applets 仍然是许多应用程序的可行选择。它们在企业内部网应用程序中更常见,因为桌面计算机更加规范和可控。它们是跨平台和跨浏览器的,可以具有高度的交互性,并且如果您在沙箱的限制内编程,则无需特殊安全设置。
从我们的角度来看,仅有的其他问题是它们与 ASP.NET 应用程序集成不佳。主要原因是它们不会在 post-back 中自动保留和恢复状态。我们建议不要使用 post-back 来更新我们的控件(我们提供了更好的方法),但这些控件位于具有其他可能需要 post-back 的控件的页面上,因此我们需要支持它。我们现在从这一点获得的巨大优势是与 Microsoft ASP.NET AJAX(以前称为 Atlas)UpdatePanel 的完全集成,该控件基于 post-back。
其次,没有标准的方法可以通过服务器端控制 Java Applets。由于我们希望能够有一个服务器上的 ASP.NET 控件,其行为与其他服务器控件一样(将与 Visual Studio 的设计器紧密集成),因此我们必须自己编写这部分代码。
Flash 程序通过 Adobe发布的插件在浏览器中运行。播放器非常普及(独立评估称 97-98% 的互联网用户都安装了它),并且可以使用它创建令人惊叹的用户界面。尽管 Flash 经常用于在线广告和游戏,但它仍然未被广泛用于创建应用程序。Flash 具有最佳的跨浏览器/跨平台多媒体支持,这也是 YouTube 和 Google Video 选择它作为其各自视频服务的原因之一。
与 Java Applets 类似,它们没有与 CSS 和 JavaScript 集成的标准方法(尽管较新的 Flash 播放器将某些控件暴露给 JavaScript),并且它们在 post-back 中表现不佳。
当时最大的缺点是 Flash 的编程模型,它与编写软件的标准方法大不相同。播放器是从交互式演示创建系统发展而来的,并且仍然保留了许多当时的痕迹。本质上,创建 Flash 应用程序的模式是拼接剪辑或动画,而不是基于任何对开发人员友好的 GUI 方法。
现在有两种替代方案。Adobe 公司自己发布了 Flex,它除其他外还增加了一种用于描述 Flash 用户界面的标记语言,以及 OpenLaszlo,这是一个开源替代方案,也提供了一种更标准的编程模型来交付 Flash 播放器程序。在我们创建控件时,这两种技术都处于起步阶段(Laszlo 直到 2004 年 10 月才开源)。
任何以 Microsoft 平台为目标的公司都必须考虑 ActiveX 和其他插件技术,例如 .NET 的 Web Deploy 甚至是新的 XAML 浏览器应用程序。如果您只需要支持 Windows 上的 IE,那么它们提供了卓越的交互性和良好的编程环境。然而,Atalasoft 致力于在不安装任何插件或特殊安全设置的情况下,使我们的客户端在所有主流浏览器和平台上都能正常工作,因此这些技术对我们来说从未真正成为选择。
AJAX 是一个用于描述应用程序的术语,这些应用程序使用 JavaScript、动态 HTML 以及某种在无需 post-back 的情况下联系服务器进行更新的机制。效果是 HTML 页面似乎在原地更新,而不会出现空白和刷新。AJAX 本身是一个缩写,表示 Asynchronous JavaScript and XML(异步 JavaScript 和 XML),它描述的是技术,而不是特定的工具或实现——例如,没有 AJAX 播放器。
尽管“AJAX”这个名字传播得非常快,但它并没有真正描述这项技术是如何实现的,因为并非总是使用 XML。AJAX 中的 X 指的是服务器通信的格式(XML)以及用于发起连接的浏览器函数(XMLHttpRequest)。Atalasoft 实际上两者都不使用,而是选择通过 IFRAME 在后台发布表单来通信,并接收 JavaScript 和 JSON(JavaScript Object Notation)。
对我们来说,AJAX 提供了以下相对于其他技术的优势:
- 只需要浏览器原生支持的功能,HTML 和 JavaScript。所有现代浏览器都支持它。无需插件。
- 如果需要,您可以编写代码使其在不支持它的旧浏览器上也能优雅地降级。
- 它可以用 CSS 进行样式设置,并与 JavaScript 自然集成。
- 由于它建立在 HTML 之上并使用 DOM 来表示自身,因此 ASP.NET 可以通过 post-back 自然地保留其状态。
- 它使用了 Web 开发人员熟悉的开放技术。
三年后,我们选择的技术正在获得广泛认可。2005 年,在 Google 发布了 Google Maps 和 Suggest(以及 GMail 变得越来越交互)之后,许多开发人员意识到 HTML 和 JavaScript 已经取得了长足的进步,并愿意押注这项技术(因为它对 Google 来说已经足够好)。Gartner 预测,到 2010 年,至少有 60% 的新应用程序开发项目将包含 Rich Internet Applications(RIA)技术,例如 AJAX。
今年三月,在纽约举办的第二届年度 AJAXWorld 大会,据主题演讲介绍,市场上已有上百个 AJAX 框架(许多是开源的)。Google、Yahoo 和 Microsoft 都提供了开源框架和工具,但也有其他流行的框架,如 Dojo 和 MochiKit,更不用说许多专有框架了。
<embed src="http://www.youtube.com/v/_s1gtVwMMAg" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent" /></embed />对于 ASP.NET 开发人员,Microsoft 发布了 ASP.NET AJAX(以前称为 Atlas),它结合了其开源 AJAX JavaScript 库和服务器端 ASP.NET 控件以与之交互。我们的 AJAX 实现与之完全兼容(因为我们从一开始就设计它与 ASP.NET 兼容)。AJAXWorld 上一个常见的观点是,最好采用在框架内运行的 AJAX 组件。这是因为虽然 AJAX 被认为是客户端技术,但其真正的优势来自与组件的服务器端代理的紧密集成。对于面向 ASP.NET 的 Web 组件,与 ASP.NET 控件类集成是实现 AJAX 全部优势的关键。
在此处查看 Atalasoft 的 AJAX 驱动的 ASP.NET 影像控件.
在此处下载包含这些 ASP.NET 影像控件的 Atalasoft DotImage 影像工具包.
关于 Atalasoft
Atalasoft 成立于 2000 年,是一家提供高性能、符合标准的 .NET Framework 影像库的供应商,面向文档处理和管理系统以及摄影影像的作者。Atalasoft 通过 CLR 兼容对象、逻辑布局的对象层次结构、稳健的实现和一流的支持,提供了无与伦比的易集成性。
Atalasoft, Inc.
116 Pleasant Street, Suite 321
Easthampton, MA 01027
电话:866-568-0129 或 413-572-4443
传真:866-568-0129
http://www.atalasoft.com/
本文提及的其他产品或服务名称是其各自所有者的商标。