智慧.NET和ASP.NET:同一枚硬币的两面

在这篇文章中,我们将探讨Wisej.NET作为传统ASP.NET的替代选择,尤其是在将遗留的Windows Forms应用程序迁移到Web的背景下

在之前的一篇文章中,我们分析了将传统的Windows Forms应用迁移到Web的一般主题。一种常见的做法是将应用的后端封装在API层中,并将其作为微服务架构或更传统的分层架构(例如ASP.NET Core)中的一个服务暴露出来。在这两种情况下,痛点都在于使用HTML5、CSS和JavaScript(或Angular或React等全面框架)进行用户界面的全面重新设计。另一个非常重要的点是选择现代前端层时,UI连接器与传统后端端点之间的映射可能不像应该的那样直接。这就需要引入另一个中间的查询层(例如GraphQL),增加了最终成本和工作量。

在这种情况下,Wisej.NET代表了一种替代且相当独特的选择。

进入Wisej.NET

乍一看,Wisej.NET看起来就像另一个用于快速ASP.NET开发的控件库。没错,但并不全面。实际上,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提供了一个组件工具箱,以图形化的方式创建任何必要的标记。任何客户端/服务器交互都以在可视组件上触发的事件的形式呈现,一些处理程序将对其进行处理。

所有处理程序都在与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开发框架。

  • 组件化
  • 单页应用
  • 抽象的前端技术
  • 实时更新用户界面

您可以在舒适的Visual Studio环境中使用各种预构建的控件和组件来构建Wisej.NET应用程序,这加快了开发速度并确保设计的一致性。生成的Wisej.NET应用程序通常遵循单页应用程序架构,只有页面的部分会动态更新,从而实现更平滑的用户体验。严格来说,不需要对HTML、CSS和JavaScript等前端技术有深入的了解。这对于团队更习惯于后端技术并希望避免对前端开发的深度参与是有利的。最后,Wisej.NET提供实时更新的功能,允许您创建可以在实时更新而无需完全刷新页面的交互式应用程序。

最后一点非常有趣。实际上,典型的Wisej.NET应用程序的行为在其内部与ASP.NET Server Blazor应用程序的行为非常相似(见图1)。在Blazor应用程序中,浏览器和应用程序后端之间进行了初始协商之后,就是通过Web sockets数据包进行持续交换,传输请求细节并接收DOM更新。

Image 1

与ASP.NET Server Blazor架构的相似之处在于布局层面,因为交换协议,包括发送和接收数据的格式,是专有的。

那么,纯粹的ASP.NET Core呢?

因此,Wisej.NET应用程序实际上是一个ASP.NET Core应用程序。那为什么不使用ASP.NET Core呢?有两个主要值得辩论的观点。ASP.NET拥有庞大而活跃的社区,这意味着您可以找到大量资源、教程和库来支持您的开发。Wisej.NET是一个有着出色文档和教程的专有产品,但远远不能与微软的通用Web平台ASP.NET的社区相提并论。从技术角度而言,值得注意的是,ASP.NET允许您对应用程序中使用的前端技术更直接地进行控制。这在您拥有特定的设计或功能要求时可能是有益的,但从快速应用程序开发的角度来看可能是不利的。如果您需要将遗留的Windows应用程序转换为Web应用程序,这可能会带来很多问题。

Wisej.NET运行在ASP.NET Core之上,但提供了自己的编程模型,更接近于ASP.NET Web Forms而不是ASP.NET MVC。因此,这是两个相当不同的编程平台,它们唯一共同点是编程语言,无论是C#还是Visual Basic.NET。您设计展示层并将客户端事件连接到服务器端处理程序的方式都有很大的区别,启动应用程序和一些配置方面也是如此。

Wisej.NET应用程序的内部组织方式与ASP.NET Web Forms非常相似,并且仅使用ASP.NET Core托管运行时来注入自己的中间件并访问服务器文件管理。

选择Wisej.NET与ASP.NET之间的优劣并非是个投票问题:这是两种完成构建现代Web应用程序的不同选择。在这两个平台中,您必须选择一个。那么应该选择哪一个呢?毫不奇怪,这取决于您的需求和技能。

思考之选

第一决策点是,您是想要从头开始构建新的应用程序,还是要将现有的ASP.NET Web Forms或Windows Forms应用程序迁移。在后一种情况下,Wisej.NET绝对是您要评估的首选。它可能仍然不完全符合您的要求,但绝对是您可能想要检查的一个选项。根据我个人的经验,一个具有一些自定义绘图功能的大型Windows Forms应用程序可以在几天内由一个由两个人组成的小团队在没有外部咨询帮助的情况下基于公共可用文档部署到Web上。

是什么样的人呢?

他们是经验丰富的开发人员,拥有扎实的数据库背景和扎根于Web/Windows表单模型的技术学习路径。我们很高兴地发现,Wisej.NET也可以用于从头开始构建或从本机ASP.NET Core基础进行演进的新项目。

但是,我们发现对于没有之前接触过早期2000年的基于表单的编程模型的开发人员来说,Wisej.NET模型看起来可能有些奇怪。这并不是一个杰出的开发人员无法在几周内理解的东西,但还是需要通过一个新的学习路径。

简而言之,选择Wisej.NET还是ASP.NET取决于您的具体需求和背景。如果您对桌面开发更熟悉,并且希望采用基于组件的方法和实时更新,那么Wisej.NET可能是一个很好的选择。另一方面,如果您正在寻找一个更灵活、多功能的框架,具有强大的社区和与微软技术的集成,那么ASP.NET可能是更好的选择。在做出决策时,始终考虑技术的当前状态和项目需求。

如果您想了解更多关于Wisej.NET与Blazor的比较的信息,您可以查看这篇文章:https://www.codeproject.com/Articles/5339509/Wisej-NET-vs-Blazor


Leave a Reply

Your email address will not be published. Required fields are marked *