迁移桌面程序到MS Store(5)——.NET Standard

  接下来的几篇,我想讨论下迁移桌面程序到MS Store,能够采用的比较常见、通用性比较强的实施步骤和分层架构。
  一般商业项目通常都是不断的迭代,不太可能忽然中止更新现有的桌面版本,而后花很长时间从头来写UWP版本,因此我建议将迁移的过程分阶段,经过几个版本的迭代,慢慢地从传统桌面程序,转变成一个能够经过MS Store审核的APPX程序。至于以后要不要变成真·UWP能够视市场反馈决定。
  假设现有的桌面程序包含一个MainUI的WPF工程,多个.NET Framework 4.5的类库,以及一个C++编写的后台服务,以Windows Service的形式运行。之因此假设存在一个C++的Service,是考虑有些桌面程序要和硬件打交道,只有C语言版本的API。或者须要调用公司本身的通用类库,一般是C或C++写的跨平台版本。
  我推荐第一步,也是最简单的一步从.NET Framework类库着手改起。第一阶段的目标是将.NET Frramwork 4.5的类库,转换成.NET Standard 2.0版本的类库。windows

  

  这里要着重介绍一下.NET Standard。MSDN上对于.NET Standard的解释虽然每一个字都认识,可把这些字连成句子,读起来就不太容易看懂。
  https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard
  总而言之呢,就是一个Class Library(.NET Standard),它既能够被WPF工程引用,也能够被UWP工程引用,同时还能够被.NET Core的工程引用。
  在咱们的例子中,由于咱们的MainUI仍然是WPF的工程,因此不能直接将.NET Framework 4.5的Class Library转换成Universal Windows版本。同时咱们又须要对将来可能存在的UWP版本提供支持,那么.NET Standard就是最佳的选择。
  在这种状况下,咱们甚至能够在保留WPF的MainUI以支持Win 7(该死的老古董)的同时,新建一个UWP的UI工程来支持Win10。两者共用同一份的.NET Standard的Class Library。
  可能有些同窗会问,一样一个C#的Class Library,为何会有.NET Framework,Universal Windows,.NET Core和.NET Standard四种类型。下面咱们来简单介绍以上几个概念,这些拗口的名称得感谢某软更名部八辈子祖宗,顺便问下还招人不?
  .NET Framework最为好懂,从2000年左右的.NET 1.0开始,现今已经发展到.NET 4.7.2。你说4.5之后怎么光升小版本号啊?啥时候出.NET 5啊?我说孩子你别傻了,.NET 5不就是.NET Core嘛?
  .NET Core,我的理解就是为了跨平台,重写的.NET Framework,也一样是为了跨平台,因此现阶段主打ASP.NET Core,而和Windows紧密结合的WPF,Winform,甚至UWP都是暂不支持的。毕竟在短期内,从新写一份包含.NET 4.7.2全部功能的.NET Core不太现实。也没有迫切的须要。从GitHub的roadmap看,至少要到3.0版本才会支持UWP及桌面开发。
  https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows-desktop-applications架构

  

  Universal Windows class library就比较尴尬了,做为Win8那时候的Windows Runtime portable class library的Win10升级版。技术是好技术,惋惜没遇上好时候。Win8和WP8的口碑不行,连累了Win10。简而言之就是给全部UWP程序用的class library。
  .NET Standard则是Universal Windows Class Library的跨平台再升级版。最终的大一统,今日的主角。app

  

  上面这个表格看上去内容不少,实际咱们仅仅须要看最后一列,使用最新的.NET Standard 2.0就能够了。抛去和咱们迁移桌面程序关系不大的Mono,Xamarion和Unity,实际咱们能够看到从.NET 4.6.1开始就已经支持.NET Standard 2.0了。从Windows 10版原本看的话,RS3的16299也已是很是普及的版本了。
  升级到.NET Standard的好处很是明显,.NET Standard版本的类库能够在.NET Framework,UWP和.NET Core 之间共享,同时面向将来的升级作到无缝衔接。
  本着先易后难,按部就班的原则,这一篇咱们先讨论了什么是.NET Standard,以及升级的目的和意义。下一篇咱们会介绍在升级.NET Framework到.NET Standard的过程当中,可使用的兼容性检测工具The .NET Portability Analyzer。顺便在展望一下.NET Core 3.0,一边写代码一边吹吹水,体验双倍的快乐!工具

相关文章
相关标签/搜索