将Windows应用程序从桌面迁移到浏览器

目录

许多项目失败

作为替代方案的迁移

安装Wisej.NET

从WinForms到带有Wisej.NET的浏览器

步骤 1:添加第二个项目

步骤 2:采用现有eCcode

步骤 3:完成转换并运行项目

步骤 4:下一步是什么?

后端详细信息:实现MVVM原则

探索和发展

展望


经过多年的积累,桌面应用程序在为用户提供他们已经习惯的重要特性和功能方面发挥着至关重要的作用。开发人员知道,将这些类似单体的应用程序迁移到Web上并非易事。当挑战出现时,一种常见的方法是尝试将系统分解为小的模块化组件。对于企业级系统,这可能被证明是一个挑战,可能需要十年的大部分时间。相反,我们提出了一种方法,允许Web开发人员站在巨人的肩膀上,并重用他们之前发生的开发工作的最佳组件。

对于软件开发人员来说,迁移可能是一个敏感的话题。与其处理现有系统,开发人员可能很乐意从头开始从头开始!人们强烈渴望当代技术、现代工具以及抛弃技术债务。当最后期限开始临近,财政资源被削减时,现实可能会受到沉重打击。

过时的应用程序无法在短短几个月内重新开发。关于从Windows桌面迁移到基于浏览器的云应用程序需要多少时间的问题,意见不一。一方面,现有的解决方案仍然需要维护。现有的开发团队可能需要拆分以分配资源用于旧应用程序中的维护和新功能,同时还要开发新平台。这需要专业知识(哪种技术?它是如何工作的?)和经验,因为Web开发的工作方式与熟悉的Windows世界非常不同。

将任务委托给第二个团队可能不是最好的解决方案。可以记录和解释特定于应用程序的知识、行业经验和客户期望,但由此产生的工作,如果不是由彻底了解应用程序及其用户的人完成,则可能无法达到标准。内部和外部承包项目经常失败,因为编程结果不符合客户的期望,这并非没有道理。重要信息可能丢失,或者负责的开发人员对特定要求不够熟悉。

一个常见的挑战是现有解决方案的规模和复杂性。一个成熟的业务应用程序可能有数百个屏幕和超过一百万行源代码,这些源代码经过数年和数十年的开发、改进、更改和优化。这当然可以整理,有些事情可以简化,但这需要一个好的计划、实施时间和适当的财政支持。

许多项目失败

2022年,复杂桌面解决方案的重新开发在两年后失败。一个由10名开发人员组成的团队的任务是将一个基于WindowsERP解决方案重写为一个纯粹的Web应用程序,该解决方案包含大约1,000个屏幕。两年后,浏览器中甚至没有5%的应用程序可用,因为已经投入了大量时间在架构讨论、功能分析、类库设置和其他主题上。该时间表比最初预测的三年增加了两倍。

定期联系主要云提供商,如Amazon AWSMicrosoft Azure,以评估应用程序迁移。但是,迁移到虚拟桌面或基于Citrix的解决方案并不是一个可行的长期选择。现在,具有Office 365DynamicsMicrosoft世界可在浏览器和所有平台上使用,用户越来越希望自己的业务线应用程序获得相同的体验。那些想要保持竞争力的人将不得不采取这一步骤,以避免被竞争对手超越。

失败的重建项目导致主要云提供商对时间进行了更现实的估计。根据功能集,在现场安装了1,500个本地设备,预计大约需要8年时间重新开发用于云原生设置的应用程序,而不考虑团队规模或其他资源。

你有八年吗?您如何应对在此期间发生的所有专业和技术变化?您如何确保所选目标技术在这八年后不会过时?

作为替代方案的迁移

作为从头开始开发的替代方法,Wisej.NET提供了一个框架,用于将Windows窗体(WinForms)或Windows Presentation FoundationWPF)应用程序迁移到基于Web的本机应用程序。还支持其他源技术,如Visual Basic 6Microsoft AccessGupta/Centura Team Developer

Wisej.NET的帮助下,上述项目在13个月内进行了现代化改造。基于Windows的客户端/服务器解决方案已成为通过Microsoft AzureAzure应用服务交付的基于云的应用程序。用户界面已更新,具有当今清新而现代的外观和感觉(参见不仅仅是运行时框)。

它是如何工作的?对于这种大小的应用程序,存在许多问题,这些问题不仅在浏览器中开箱即用。基于Web的应用程序的工作方式与基于客户端/服务器原理的Windows程序完全不同。除其他外,必须考虑以下主题:

  • 全局变量,缺少会话隔离
  • 文件和注册表访问,特定于Windows的功能
  • 状态管理(浏览器本身是异步工作的)
  • 会话管理(多个用户共享一个应用程序)
  • 平台独立性(在Linux/云中部署)
  • 集成(服务器不支持Microsoft Office Automation)
  • 报告和外部系统接口

最大的问题是如何将WinFormsWPF组件转移到基于HTML/JavaScript的界面,现在在动手示例中逐步介绍。

安装Wisej.NET

Visual Studio Marketplace安装Wisej.NET相对简单。

  1. 通过Visual Studio中的“扩展”菜单搜索“Wisej.NET 3 VS2022”并安装扩展。或者,访问以下两个链接之一:
    Wisej.NET 3 VS2022 - Visual Studio Marketplace
    https://docs.wisej.com/docs/releases/whats-new-in-3.5
  2. 安装后需要Wisej.NET许可证。有两种可能的许可证变体可用:
    • 试用版允许使用Framework & Designer作为测试版本。
    • 社区版对非商业目的和小型组织免费。

许可证可在Licenses Model – Developer Licenses – wisej.com处获得

WinForms到带有Wisej.NET的浏览器

出于演示目的,我们使用在线提供的开源WinForms项目(Simple Scientific Calculator Using C# In Visual Studio)。我们将简单科学计算器(见图1)转换为基于Web的应用程序。源代码和函数不言自明,不应该成为这里的重点。相反,重点是如何将任何应用程序迁移到浏览器的问题,即使用户界面、业务逻辑和数据访问之间的源代码尚未划分为单独的层。

该应用程序具有相对简单的结构,并且不遵循有意义的命名概念。Form1.cs包含基本逻辑。

1:初始解决方案:基于Windows的袖珍计算器

也应该可以在其他软件项目中复制此处介绍的步骤,尽管具体要求和功能会因代码库和编程语言而异。下面解释了将不同源技术迁移到Wisej.NET的一些初始步骤: Introduction | Wisej.NET Migration.

一项基本任务是将基于Windows的用户界面的现有UI元素替换为Wisej.NET控件集合中的Web组件。对Windows SDK其他区域的引用,例如绘画(主要由Wisej.NET支持),也可以使用。

以下迁移步骤的结果可在此处下载:http://tinyurl.com/yfsme5wx。但是,要自行重现这些步骤,您首先需要桌面应用程序的源代码。成功安装Wisej.NET并在Visual Studio中打开计算器源代码后,过程如下:

步骤 1:添加第二个项目

有多种过程可用于启用现有应用程序的Web。我们决定向现有解决方案添加一个Wisej.NET项目,将现有WinForms项目中的代码复制到基于Web的解决方案中。

  1. 右键单击解决方案,在“解决方案资源管理器”中添加新项目
  2. 选择“Wisej 3网页应用程序”项目模板
  3. 输入“calcweb”作为项目名称
  4. 根据建议确认特定于Wisej.NET的项目设置。

2:我们将一个Wisej.NET项目添加到现有项目文件夹中。

当前Wisej.NET版本3.5支持.NET Framework以及.NET 78。基于Wisej.NET的应用程序已经完全基于.NETCore),即可以在Linux.NET支持的其他平台上进行部署,不受限制。由于技术原因,Visual Studio中的图形设计器仍需要引用.NET Framework 4.8。在将来的版本中将删除此依赖项。

3:标准项目设置足以满足我们的目的。

步骤 2:采用现有eCcode

乍一看似乎有点奇怪,但在下一步中,我们将现有的源代码从WinForms项目复制到Wisej.NET项目中。最简单的方法是右键单击calcweb下方的Form1.cs——复制粘贴。然后可以安全地删除 Form1.resx。在这一点上,编译解决方案是没有意义的,因为我们刚刚在基于Web的项目中插入了WinForms依赖项。我们现在将在下一步中解决这些问题:

  1. 在calcweb的源代码视图中打开Form1.cs
  2. 命名空间“calculator”必须替换为“calcweb”。最好在Form1.csForm1.Designer.cs中手动进行调整。
  3. 在项目中,将System.Windows.Forms替换为Wisej.Web。
  4. 下一步是删除Wisej.NET: 中不支持的属性:\r\n(\s*)this\.(.*)UseVisualStyleBackColor = true;替换为(nothing),即空字段,以删除整行受影响的代码(作为正则表达式)。可以使用VS中的“搜索和替换”功能来执行此操作。

4:所有控件都从WinForms转换为Wisej.NET——使用搜索和替换。

此时,您应该已经能够在Visual Studio中使用Wisej.NET设计器打开calcweb项目的Form1.cs。您需要做的就是双击或使用组合键Shift+F7。如果此时发生编译错误,关闭并重新启动Visual Studio可能会有所帮助。在极少数情况下,切换项目类型可能会导致一次性问题,一旦我们的转换工作完成,这些问题就会消失。

基于Web的用户界面现在应该在Visual Studio设计器中可见。Wisej.NET框架的优点之一是能够直接在Visual Studio中进行像素完美设计。可以使用鼠标和属性窗口方便地排列和编辑各种界面元素。

5:经过一些更改后,可以直接在Visual Studio设计器中编辑计算器的Web版本。

步骤 3:完成转换并运行项目

我们即将能够在浏览器中运行该应用程序。首先,我们必须确保在启动应用程序时加载正确的页面:

  1. Program.cs必须调整其Main()函数,即删除以下行:Application.MainPage = new Page1();添加代替使用:new Form1().Show();
  2. 我们的新项目calcweb应该设置为解决方案的启动项目,否则WinForms版本将继续打开。可以在Visual Studio中右键单击该项目,然后选择“设置为启动项目”。
  3. 运行应用程序

因此,您现在应该能够在浏览器中打开计算器(参见图6)。

6:转换完成,计算器在浏览器中运行。

步骤 4:下一步是什么?

已经是这样了。该应用程序在Web浏览器中运行,我们不必担心会话管理、状态处理、客户端和服务器之间的通信或各种技术(HTMLCSSJavaScript)。Wisej.NET负责处理令人讨厌的细节。还支持浏览器刷新之类的操作:只需输入一些内容,然后在浏览器中按<F5>——保留当前状态。

在这一点上,很多事情可以改进。该界面当然没有响应,因为我们只使用了1:1的源代码。Wisej.NET提供了无数选项来改进计算器应用程序的UI/UX。接管各个按钮定位的TableLayoutPanel将是一个很好的下一步。

如果外观仍然有点太接近Windows世界,您可以使用各种集成主题或可用于Wisej.NET的主题生成器。包括BootstrapMaterialGraphite的主题,可以使用Wisej.NET主题生成器进行自定义。它是如何工作的,在相应的在线文档(Introduction | Wisej.NET Theme Builder)中有详细的解释。

这种方法的一个很好的例子是TRIO软件解决方案,它从16个独立的应用程序(Visual Basic 6)迁移到一个基于C#的集成套件中,并带有Wisej.NET。图7 显示了在短时间内实现接近原始应用的伟大新设计的可能性。该应用程序与现有数据库完全向后兼容,并受到用户的好评。

7:使用复杂业务应用程序进行UI/UX优化Wisej.NET

后端详细信息:实现MVVM原则

除此之外,考虑将逻辑和UI分开是有意义的。我们的源应用程序并不完全是架构设计和遵守命名约定的典型例子。Wisej.NET不能在这里创造奇迹——它只是一个专门用于自定义用户界面的框架。然而,从WindowsWeb的转变并不意味着可能性已经结束。分层、整理源代码和偿还技术债务应该在每个项目中发挥持续的作用。

基于Wisej.NET的应用程序绝不是单一的。相反,问题在于如何在复杂的项目中实现合理的层划分。原则上,支持所有设计模式和体系结构方法。可以按照Visual Studio Marketplace提供的Wisej.NET NavigationBar模板找到有关新开发期间层划分的初步建议。

探索和发展

这不是迁移的结束,而是开始。除了自己的组件库外,Wisej.NET还提供与各种外部JavaScript控件的集成:从条形码和QR码到图表、代码编辑器和更复杂的组件。Wisej.NET支持以可管理的工作量集成任何JavaScript控件。在Visual Studio中开发时,该控件可以与图形设计器一起使用,所有JavaScript事件都可以从C#VB.NET获得。

此外,Wisej.NET还具有与所有主要组件制造商(如SyncfusionDevExpressInfragisticsProgress)集成的高级扩展。https://demo.wisej.net 上的演示应用程序显示了一些可用的控件。开发人员可以使用高级组件(如Syncfusion看板、网格和类似Office的组件)来集成文本编辑器或电子表格。

展望

诚然,这是一次非常简化的迁移。实际上,软件项目可能会在更复杂的场景中显示出额外的陷阱。对于较大的应用程序,可能需要数天、数周甚至数月的时间才能首次编译迁移的代码。这是一个复杂的问题。但是,基本过程始终是相同的,即此处介绍的路径可以转移到具有数千个屏幕的大型复杂软件解决方案的迁移中。作为自己动手方法的替代方案,Wisej.NET制造商和合作伙伴公司(如fecher)提供广泛的服务,从培训到应用程序现代化的完全外包。

https://www.codeproject.com/Articles/5376447/Migrate-Windows-Applications-from-the-Desktop-to-t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值