使用 Web Forms 的方式轻松直观地开发 Web 和移动应用程序





3.00/5 (1投票)
VWG 成功地通过提供纯粹的 Windows 窗体开发范例来实现 Web Forms 开发体验,这得益于其独特的应用程序代码虚拟化技术,该技术允许在 Web 服务器而不是操作系统上进行虚拟化。
引言
Web Forms 是微软在十年前推出 ASP.NET 时创造的一个术语。它代表了一种方法,即开发人员以编程桌面应用程序的方式来编程 Web 应用程序。Windows Forms 是模型;它具有有状态的环境,而 Web 开发是无状态的。有状态的环境允许开发人员在一个结构化、明确定义和可视化的环境中工作;而在无状态的环境中,开发人员则在一个流动的环境中工作,并且必须自己做出关键的决策和选择。无状态环境更为复杂且风险更高。Windows Forms 的有状态开发体验节省了大量时间,并极大地缩短了学习曲线,因为它拥有成熟的可视化设计器,真正帮助开发人员快速交付业务应用程序。对于业务应用程序开发来说,可视化设计器不是可有可无的功能,而是必需的功能。它能够快速设计数据录入和数据呈现视图。因此,通过让开发人员摆脱像素和布局的困扰,专注于逻辑和算法,极大地帮助了此类应用程序的构建。Visual Basic 的演进以及 Windows Forms 环境在数据驱动应用程序方面已达到一定的饱和度,这催生了最高效的业务应用程序。
大多数 ASP.NET 开发者都会同意,无状态的 ASP.NET 可视化设计器在数据录入或数据呈现布局设计以及几乎所有其他用途方面是完全无用的。
ASP.NET 作为一个多层无状态解决方案,无法真正提供通过 Windows Forms 等单层有状态框架即可实现的 Web Forms 开发体验。它缺乏依赖环境元素(如每次请求时屏幕上的其他控件)的基本能力,因此需要开发人员提供依赖于开发人员技能的创意解决方案,无论是在客户端还是在服务器端。例如,在无状态环境中,当开发人员编写一行描述特定逻辑的代码时,他们应该
- 确保计算所需的所有环境参数都存在于当前上下文中(客户端、服务器,最重要的是当前状态)。在大多数情况下,开发人员需要编写代码来建立所需的环境才能执行逻辑。
- 在与屏幕上当前显示的控件的任何交互中,开发人员应使用服务器代码、通信通道(如 AJAX)以及通常为特定控件编写的 JavaScript 代码。
- 决定某个逻辑应该在服务器端还是客户端执行,并据此采取行动。
2007 年,微软推出了 Silverlight。Silverlight 再次瞄准 Web Forms 开发体验,并在重现 Windows Forms 体验方面取得了相当大的成功,但它仍然存在不足。虽然在客户端提供了一个有状态的环境,让开发人员处理的世界变得不那么复杂,只有两层代码(客户端和服务器),但它缺乏精确的所见即所得设计器。如今,显而易见的是,视觉效果对于为枯燥的数据驱动的灰色世界增添色彩很重要,然而,过度使用动画和过于复杂的控件在业务生产力方面效率低下。因此,虽然提供现代 Web 2.0 外观和感觉很重要,但界限是明确的。
Silverlight 引入了一个非常灵活的框架,可以提供任何类型的视觉效果和动画,这非常强大,但同时它也引入了一个非常复杂的对象模型结构,这会导致以下副作用:
- 微软核心开发人员的学习曲线陡峭。
- 无法提供可靠的设计器来加速开发。
2007 年 Silverlight 推出时,一家名为 Gizmox 的小公司推出了 Visual WebGui,它也从完全不同的角度瞄准 Web Forms 开发体验。
那么,Visual WebGui 是什么?
VWG 是一种独家解决方案,可在标准 Web 服务器或专用应用程序服务器上虚拟化桌面应用程序代码。它提供最佳的服务器-客户端负载平衡,其用户界面 (UI) 在客户端以纯粹的富 HTML/HTML5 呈现。客户端-服务器通信通过 VWG 正在申请专利的基于 HTTP/XML 的协议进行,这是目前最轻量级的互联网协议。基准测试表明,与 [其他 RIA 解决方案](https://codeproject.com/Articles/30775/Visual-WebGui-Develop-Web-applications-with-a-WPF) 相比,VWG 协议消耗的服务器端 CPU 资源仅为其一半,带宽消耗仅为其十分之一。其结果是丰富、高响应性的 UI,并且能够在相同的 CPU/带宽资源上服务至少两倍的用户。VWG 可通过服务器场进行扩展,基准测试表明其比 ASP.NET 等标准 Web 解决方案更具可扩展性。
基于这种架构,VWG 成功地通过提供纯粹的 Windows 窗体开发范例来实现 Web Forms 开发体验。解释很简单。能够在 Web 服务器上虚拟化桌面代码,使 VWG 能够为开发 Web 提供桌面开发范例。为了使端到端体验无缝,VWG 抽象掉了大多数 Web 和 Ajax 的复杂性,这些复杂性由基础设施本身处理。
VWG 在多大程度上重现了 Web 上的 Windows Forms 开发体验?
Visual WebGui 实现了开发人员开发扩展 Windows Forms 的所有环境条件,并获得部署在标准 Web 服务器上的多平台前端应用程序。
VWG 中实现了 97% 以上的 Windows Forms API(缺失的 3% 是不符合 Web 标准的 API),以及大量针对更好的 Web 兼容性(如分页和虚拟滚动)的扩展。Windows Forms 的设计范例已被完全捕获并增强以支持 Web 布局。
微软已将 Silverlight 应用于移动设备,VWG 是否支持移动开发?
Silverlight 仅针对 Windows Mobile 手机,而 VWG 则针对支持 HTML4 或 HTML5 的任何移动浏览器。开发范例将经典的 Windows Forms 开发扩展到您选择的设备外形、一组指定的移动控件和原生的移动流程能力。
另一个差异化优势是将 VB6 和 Windows Forms 应用程序迁移到 VWG 和 Web/移动或云端的能力。
通过模仿 Windows Forms API 并捕获整体开发范例(当然包括成熟可靠的可视化设计器),VWG 自然地迁移了 Windows Forms 代码,并大大缩短了 VB6 应用程序迁移到原生 Web 部署的路径。此外,项目当前维护人员的迁移非常容易,在升级的应用程序中保留了相同的工作方法。
类别 | 参数 | ASP.NET | Silverlight | VWG |
开发 | 编程语言(所需技能) | .NET (VB, C#) + JavaScript + HTML + CSS | .NET (VB, C#) | .NET (VB, C#) |
开发方法论 | OOP + 声明式 + 脚本 | OOP + 声明式 | 仅 OOP | |
代码层 | 客户端、Ajax、服务器 | 客户端、服务器 | 单层 | |
可视化设计器 | 差 | 基础级别 | 完全所见即所得 | |
复杂数据绑定(例如,双向、主从等) | 复杂 | 一般 | 简单 | |
自定义控件开发 | 复杂 | 简单(.NET) | 一般 (jQuery) |
|
图形设计师任务 | 复杂 | 简单 | 一般 (主题设计器) |
|
多窗体和窗口管理 | 复杂 | 一般 | 简单 | |
流媒体、媒体 | 一般 | 简单 | 一般 | |
Tasks(任务) | 游戏(密集动画和实时交互) | 复杂 | 简单 | 不兼容 |
业务应用程序、数据中心用途 | 具有挑战性 | 一般 | 简单、最佳匹配 | |
可滚动网站 | 简单、最佳匹配 | 一般 | 复杂 | |
多平台支持 | 任何浏览器,包括移动设备 *需要 额外的工作 |
仅支持 SL 的浏览器和 Mobile Windows | 任何浏览器,包括移动设备 *无需 额外工作 |
|
运行时 | 数据性能(数据操作性能) | 差到一般(高度依赖开发人员技能) | 一般(高度依赖开发人员技能) | 最佳* 与开发人员技能无关 技能 |
数据安全 | 具有挑战性 | 具有挑战性 | 内置 | |
IP 安全 | 大部分安全 * 除客户端 端脚本 代码片段 |
不安全(程序集下载到客户端) | 设计安全 |
结论
在评估了开发范例的差异、对各种任务的适用性以及运行时方面后,结论显而易见。
虽然 ASP.NET 是滚动网站(如电子商务和企业网站)的最佳选择,Silverlight 是媒体、流媒体和游戏用途的最佳选择,但 VWG 是数据中心、业务线应用程序的最佳选择。
VWG 利用了最成熟、最可靠的业务应用程序开发工具集,即开发者十年前期望从微软那里获得的真正 Web Forms。此外,VWG Web Forms 范例产生的运行时独特,提供了对这类应用程序至关重要的性能、丰富性和安全性水平,并且当然可以在任何地方、从任何设备访问。