Wisej.NET 与 ASP.NET:一枚硬币的两面






4.94/5 (8投票s)
Wisej.NET 作为传统 ASP.NET Web 开发的替代方案的内部机制
引言
在上一篇文章中,我们分析了将旧版 Windows Forms 应用程序迁移到 Web 的总体主题。一种常见做法是将应用程序的后端封装在 API 层中,并将其作为一个整体,在微服务架构或更传统的(例如,ASP.NET Core)应用程序中作为服务公开。在这两种情况下,症结在于使用 HTML5、CSS 和 JavaScript(或 Angular 或 React 等全面的框架)对用户界面进行完全重新设计。另一个不容忽视的问题是,当您选择现代前端层时,UI 连接器与旧版后端端点之间的映射可能不像预期的那样直接。由此产生了对另一个中间查询层(例如 GraphQL)的需求,这会增加最终成本和工作量。
在这种情况下,Wisej.NET 提供了一个替代且相当独特的选项。
隆重推出 Wisej.NET
乍一看,Wisej.NET 似乎是又一个用于所谓的快速 ASP.NET Web 开发的控件和组件库。确实如此,但并不全面。实际上,Wisej.NET 是一个与 Visual Studio 紧密集成的完整平台,旨在构建和调试 ASP.NET Core 应用程序。要将一个普通的 ASP.NET Core 应用程序归类为 Wisej.NET 应用程序,您只需在 startup.cs 文件中附加一段自定义中间件。
app.UseWisej();
由于 Wisej.NET 最终也是一个量身定制的组件库,因此您还需要引用一个客户端框架来驱动客户端和服务器环境之间的任何进一步交互。
<script src="wisej.wx"></script>
Wisej.NET 支持各种 Web 模板,最终为多种场景预打包项目:纯 Web 应用程序、Web 桌面应用程序、Web 页面应用程序和用户控件库。
Wisej.NET 有何不同且重要?
Wisej.NET 提供的编程模型反映了桌面 Windows 应用程序的开发模型。如果团队成员在 Windows Forms 或 WPF 编程方面有经验,并且只是想转向 Web 应用程序开发,那么编写原生 Wisej.NET 应用程序会更加顺畅。Wisej.NET 简化了传统 Web 开发工具(如 HTML、CSS 和 JavaScript)的许多复杂性。根据设计,这项精简开发工作的成果是一个与 Windows Forms 非常相似的编程模型。
尽管 Wisej.NET 是一个以组件为中心的框架,用于构建现代化、最新的 Web 应用程序,但它故意将 HTML、CSS 和 JavaScript 编码的现实抽象到一个更高级别的编程模型中,该模型更多地关注纯粹的面向业务的动作/反应方案,而不是深入了解当今主流前端技术的实现细节。
完美用例
Wisej.NET 应用程序基于一个名为 Form 的容器。Form 是视觉元素的集合,每个元素在其容器内都有物理位置,并公开了许多视觉和非视觉属性。Visual Studio 的专用环境提供了一个控件工具箱,可以通过 GUI 驱动的方式创建任何必要的标记。任何客户端/服务器交互都以视觉控件上触发的事件的形式发生,该事件将由某个处理程序处理。
所有处理程序都编程在与 Form 容器配套的类文件中。这个代码隐藏类与纯 ASP.NET Core MVC 应用程序中的控制器类具有同等的重要性。换句话说,Wisej.NET 应用程序的所有代码隐藏类构成了新 Web 应用程序的表示层。从那里,您可以简单地连接现有 Windows Forms 应用程序后端的公共端点,或者创建一堆新层(例如,应用程序、域、基础结构,如领域驱动设计)。
Wisej.NET 可用于构建任何经典或单页 Web 应用程序,但其主要用例仍然是将 Windows Forms 遗留应用程序迁移到现代化、高度交互和响应迅速的 Web 应用程序。
在 .NET 开发时代之初,绝大多数开发人员都来自客户端/服务器开发,Web Forms(用于 Web)和 Windows Forms(用于桌面)提供了一个统一的编程模型,使得对 Web 技术了解的多少与否几乎没有关系。此后,情况发生了很大变化,对原始 Web 开发的抽象层逐渐变薄。Bootstrap 等 UI 框架曾尝试再次提高抽象级别,但它们所做的只是图形方面的提升。新的概念组件应运而生(例如,导航栏、输入组、下拉菜单),但仍然需要大量的显式 HTML 和 CSS,并且完全缺乏行为。
Wisej.NET 将时间拨回到程序员无需深入掌握 Web 技术即可构建 Web 应用程序的时代。对于新一代程序员来说,这是一项令人愉快的发现,对于仍在使用旧版 Windows Forms 应用程序的程序员来说,这是一种健康的回归本源。
深入了解 Wisej 的内部机制
Wisej.NET 是一个具有以下独特特性的 Web 开发框架。
- 基于组件
- 单页应用程序
- 抽象的前端技术
- UI 实时更新
您可以使用各种预构建的控件和组件,在舒适的 Visual Studio 环境中组装您的 Wisej.NET 应用程序。这加快了开发速度并确保了设计的一致性。生成的 Wisej.NET 应用程序通常遵循单页应用程序架构,其中只有页面的部分内容会动态更新,从而带来更流畅的用户体验。无需深入了解 HTML、CSS 和 JavaScript 等前端技术。如果您更擅长后端技术并希望避免深入参与前端开发,这将是一个优势。最后,Wisej.NET 提供实时更新,让您可以创建无需完全刷新页面即可实时更新的交互式应用程序。
最后一点相当有趣。事实上,典型的 Wisej.NET 应用程序的行为在内部与 ASP.NET Server Blazor 应用程序的行为非常相似。(参见图 1。)在 Blazor 应用程序中,在浏览器和应用程序后端进行初始协商后,会持续交换 WebSockets 数据包,传输请求详细信息并接收 DOM 更新。
与 ASP.NET Server Blazor 架构的相似性仅限于布局级别,因为交换协议(包括发送和接收数据的格式)是专有的。
那么纯 ASP.NET Core 呢?
Wisej.NET 应用程序最终是一个 ASP.NET Core 应用程序。为什么不直接使用 ASP.NET Core 呢?有两个主要的可辩论点。ASP.NET 拥有庞大而活跃的社区,这意味着您可以找到大量的资源、教程和库来支持您的开发。Wisej.NET 是一个拥有出色文档和教程的专有产品,但其社区与 Microsoft 制造的通用 Web 平台(如 ASP.NET)相比,远远不及。从技术角度来看,应该注意的是,ASP.NET 允许您更直接地控制应用程序中使用的前端技术。如果您有特定的设计或功能要求,这可能是有益的,但在快速应用程序开发方面可能不利。如果您有一个需要转换为 Web 应用程序的旧版 Windows 应用程序,则可能相当麻烦。
Wisej.NET 在 ASP.NET Core 之上运行,但它提供了自己的编程模型,该模型比 ASP.NET MVC 更接近 ASP.NET Web Forms。因此,这是两个相当不同的编程平台,它们唯一的共同点是编程语言,无论是 C# 还是 Visual Basic.NET。您设计表示层并将客户端事件连接到服务器端处理程序的方式是截然不同的,应用程序的启动方式以及一些配置方面也是如此。
Wisej.NET 应用程序模拟了 ASP.NET Web Forms 的应用程序内部组织,并仅使用 ASP.NET Core 托管运行时来注入其自身的中间件并访问服务器文件管理。
这无关乎投票什么更好、什么更差:这是两件做同样事情(构建现代 Web 应用程序)的不同事物。在这两个平台之间,您必须选择一个。那么,选择哪一个呢?毫不奇怪,这取决于您的需求和技能。
慎重选择
第一个决策点是您是想从头开始构建一个新应用程序,还是迁移一个现有的 ASP.NET Web Forms 或 Windows Forms 应用程序。在后一种情况下,Wisej.NET 是迄今为止最值得评估的选项。它可能仍然不适合您,但绝对是您可能想要了解的选项。根据我的个人经验,一个带有少量自定义绘图功能的大型 Windows Forms 应用程序,仅凭公开的文档,由两个人的小团队在几天内就成功部署到了 Web 上,无需外部顾问帮助。
什么样的人?
他们是经验丰富、阅历深厚的开发人员,拥有扎实的数据库背景,并且其技术学习路径根植于 Web/Windows Forms 模型。我们对此感到非常满意,甚至开始考虑使用 Wisej.NET 来从头开始构建新项目或从原生的 ASP.NET Core 基础进行演进。
然而,这样做我们发现,对于那些没有接触过 2000 年代初基于 Forms 的编程模型的开发人员来说,Wisej.NET 模型至少看起来很奇怪。这并不是一个出色的开发人员无法在几周内掌握的东西,但仍然是一条需要经历的新学习路径。
总而言之,在 Wisej.NET 和 ASP.NET 之间进行选择取决于您的具体需求和背景。如果您更擅长桌面开发,并希望采用基于组件且具有实时更新的方法,Wisej.NET 可能是一个不错的选择。另一方面,如果您正在寻找一个更灵活、功能更强大的框架,拥有强大的社区和与 Microsoft 技术的集成,那么 ASP.NET 可能是更好的选择。在做出决定时,请始终考虑技术的当前状态以及您的项目需求。
如果您想了解更多关于 Wisej.NET 与 Blazor 的比较,可以查看这篇文章