17.C1起草的99:解锁未知,重塑未来

核心内容摘要

华人社区:创新浪潮中的活力脉搏与文化传承
璃月往生堂的“深夜秘闻”:胡桃流出的白色粘液,究竟是恶作剧还是顶级养生?

xxx18hd19hd:解锁视界新维度,开启非凡影音盛宴

前言MWGA是 Make Winforms Great Again 的缩写是一个帮助 WinForms 程序快速迁移到 Blazor WASM 平台的高效工具软件。

近期我们借助 MWGA 成功将一个约 7 万行 C# 代码的成熟商业 WinForms 程序迁移至 Web 前端整个过程快速且代码改动量极小验证了其在复杂项目迁移中的不可思议的迁移能力。

本文将以该案例为基础概述迁移的核心思路与显著成果。

案例程序说明本次迁移的对象是一款面向医院行业的商业软件——“时间轴”主要用于患者体温单曲线图、跨机构居民健康档案数据可视化、手术室排程及住院患者数据分析。

该软件功能复杂紧密贴合医疗临床需求具有以下特点

代码量大总计约 7 万行 C# 代码其中包含近 4 万行与文档排版和 GDI 绘图相关的核心逻辑。

界面复杂实现了可交互的时间轴、动态区域展开/收缩、超链接文本、多数据层叠加如血压曲线、疼痛指数、用药记录等高级可视化功能。

市场验证已在国内及台湾地区的多家医院稳定部署使用是一个经过实践检验的成熟产品。

这是用来展示跨医疗机构的居民健康档案数据的展示界面这个界面很复杂将门诊、社区医院、住院、手术等数据串联在一起形成不同的时间区域时间区域可以展开和收缩里面还有超连接文本。

用户可以点击左边的坐标尺来显示和隐藏线条当体温值过高和过低时会有小箭头并伴随纵向文本。

下图是医院内部手术室排程的界面白色区域是已经开始的手术灰色区域是计划中的手术红色块表示发生意外的手术。

这个软件产品还卖到台湾医院了下图为台湾医院中的住院患者数据展示界面这里的阴影区域上边缘是血压的收缩压下边缘是舒张压还有一个红色折线表示疼痛指数上面的表格显示了住院时间下面的表格显示了用药情况可以明确展示出用药和血压及疼痛指数之间时间上的先后关系。

这个软件紧密贴合医院临床需求功能强大是一个经过市场考验的软件产品。

迁移过程与成果借助 MWGA我们以极低的成本完成了这个庞大项目的 Web 化迁移。

整个过程遵循高度标准化的流程核心环节如下第一创建项目使用VS.NET2022创建一个Blazor WASM

0的项目。

并将原有 WinForms 项目的全部源代码与资源文件复制其中包括C#代码文件、Form.Designer.cs、Form.resx文件。

第二引用MWGA程序集仅需引用一个独立的 DCSoft.MWGA.dll 程序集约 4MB即可获得完整的 WinForms 到 WebAssembly 的运行时支持。

最新的MWGA程序文件下载地址为【https://github.com/dcsoft-yyf/MWGA】。

第三配置应用入口通过MWGA提供的标准化引导模式在Blazor应用中快速建立WinForms应用的运行环境。

只需在HTML页面中添加一个指定的容器元素并进行简单配置即可将WinForms主窗体启动并渲染于该容器内。

第四适配性调整C#代码针对 Web 环境与桌面环境的差异WEB前端编程相对于WinForms编程最大的差异就是异步编程模式我们对少量代码进行了适配性修改主要集中在异步化改造方面例如文件对话框的调用以确保在浏览器中的流畅交互。

绝大部分业务逻辑、界面布局和 GDI 绘图代码均无需改动。

案例程序中的其他代码不需要动比如几万行的文档排版和绘图代码就不需要修改例如if (text null) { // 否则只显示日数 text dtm.Day.ToString(this.Config.DateFormatString); } fullWidth g.MeasureString(text, txtFont, 10000, centerFormat).Width; if (rect

Width fullWidth) { rect

X rect

X - (fullWidth - rect

Width) / 2; rect

Width fullWidth; } //////////////////////////////////////////////////////////////////////// if (clipRectangle.IntersectsWith(rect

) { Color tc line null ? this.Config.ForeColor : line.TextColor; tc line ! null line.BlankDateWhenNoData true this._NoDataInDocument true ? Color.Transparent : tc; g.DrawString( text, txtFont, GetRuntimeForeColor(tc), rect2, centerFormat); }第五处理资源文件借助MWGA提供的资源管理兼容方案原有的.resx文件及其在Designer.cs中的初始化代码可被自动识别和处理无需手动修改。

例如WinForms程序会使用Forms.resx文件来存储窗体中使用到的资源包括字符串或者图片。

只需要添加几行代码就借助MWGA实现了无缝资源迁移。

第六测试与成果展示完成上述步骤后项目可直接编译为 Blazor WASM 应用。

我们在多个平台和浏览器中进行了测试均获得一致且良好的运行效果。

经过迁移这款 7 万行代码的 WinForms 应用成功转变为可通过浏览器直接访问的 Web 应用并在不同环境下展现了出色的兼容性在谷歌浏览器中运行界面如下所示在FireFox中运行的效果在iPad中的运行效果如下在安卓平板中的运行效果如下该软件在统信操作系统中的运行效果如下迁移后的 Web 应用完整保留了原桌面版的所有交互逻辑和界面效果包括复杂的 GDI 绘图、鼠标拖拽、点击响应等行为用户体验与原生版本高度一致。

公开演示地址为方便体验我们提供了该案例的在线演示大家可通过以下链接访问【https://dcsoft-yyf.github.io/MWGA/dctimeline.html】结论与价值本次迁移工作验证了以下结论

修改量极低面对 7 万行代码仅对不足 1% 的代码进行了必要的适配性调整核心业务逻辑与绘图代码得以完全复用。

相较于重写或采用其他迁移方案基于MWGA的改造成本几乎可以忽略不计。

功能完整迁移复杂的用户界面和交互行为被高保真还原至Web前端。

真正的跨平台生成的应用可无缝运行于 Windows、Linux、Android、iOS 及统信 UOS、麒麟等国产操作系统的现代浏览器中。

双线发展借助MWGA和条件编译等技术手段可以让同一份C#代码同时编译成 .exe 和 .wasm文件让开发组织用较低的成本同时维护一个软件的Windows桌面版和WEB前端版。

让软件产品适应更多的应用场景为客户系统的平滑升级争取更多的时间。

信创适配对于中国的开发者MWGA能将基于MS Windows的WinForms程序快速迁移到跨平台的WEB前端大量软件产品有望躲过信创的斩杀线。

当然WinForms程序不仅仅是UI控件和GDI还有很多其他的操作比如连接数据库、访问本地文件、连接硬件设备等等而MWGA运行在WEB浏览器沙盒中没有能力完整的复现WinForms的全部功能集。

但是MWGA的设计目标也不是解决所有的问题单单是解决UI和GDI的功能迁移问题就足以创造巨大的价值。

MWGA可以说创造了一个WEB前端框架但是采用了WinForms编程模型。

这是一种跨界融合使得WinForms开发者无需更换技术栈即可参与WEB前端开发。

同时C#的强类型特性与GDI严谨的编程模型也有助于减少AI编程产生的隐形BUG。

全球数百万开发者过去20年在WinForms技术栈上投资巨大可能过千亿美元在云原生成为主流的今天这些资产常被视为“沉没成本”让成千上万的企业CTO倍感纠结。

而MWGA有望盘活这些“沉没资产”它率先探索出一条全新的技术路径随着该路径的不断成熟有望为全球WinForms技术栈延寿数年可能会对全球的企业级软件研发领域带来不小的震荡。

【MWGA是南京都昌信息科技有限公司完全自主独立研发的软件产品具有所有版权。

污污污APP在线观看-污污污APP在线观看应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123