開発基盤部会 Blog

開発基盤部会 Blog >> 記事詳細

2018/05/10

.NET Core2.0移行の移行性に関する報告

Tweet ThisSend to Facebook | by nishino
 前回「.NETがLinux上でも動作する。.NET Core移行とOpen棟梁の.NET Core対応情報」という内容で投稿を行いましたが、今回は.NET Core2.0移行の「移行性」に関する報告を行います。

<サマリ>

最初にサマリをしてしまうと、
 対象 評価
 Windows Forms 対象外 
 WPF 対象外
 Console 非常に高い
 ASP.NET Web Forms 対象外
 ASP.NET MVC 中程度
 ASP.NET WebAPI 高い
 SPA 対象外
となりました。

 対象となるアプリケーションは、Console, ASP.NET MVC, ASP.NET WebAPIで、対象外のモノは .NET Coreに含まれないUIサブシステム(UIフレームワーク)のモノです。

<ポイント解説>

個別の解説は以下のようになります。
 対象 解説
 Console app.configのappsettings.json化と、その初期化コードを足す程度で移行作業が完了した。
 ASP.NET MVC 上記に加え、「脱System.WebによるAPI変更」、「新しいDIによる構成方法の変更」、「要求処理パイプラインの変更」、「認証周りのAPIの変更」など、技術的な難易度は少々高いが、コード変更(ポーティング)の手数はそれほど多くならない。
 ASP.NET WebAPI 技術的には、CORSの構成方法が異なっている以外、前述のMVCと大差はないが、WebAPIはMVCと比べてUIレイヤ ≒ APIのI/F変更の多いフレームワーク レイヤが薄いので、移行の難易度はMVCほど高くない。また、WebApiCompatShimを使用すると.NET Frameworkと同じスタイルでインターフェイスを記述できるので移行性は更に高まる。
 UIサブシステム(UIフレームワーク)が複雑であるほど、APIのI/F変更の多いフレームワーク レイヤが厚くなるので、移行性は低くなるものと思われます。

<移行における注意点>

 実際のプロダクトを移行する場合は、.NET Framework同梱物、OSSパッケージ、サードパーティー製のコンポーネントの.NET Standard, .NET Core バージョンが提供されているかどうか?に注意を払って下さい。大きなところで、型付DataSetや、System.DirectoryServices、Microsoft.Office名前空間、DotNetZip、帳票製品やDBMSのデータプロバイダがあり、無ければ代替品を探す必要があると思います。

 例えば、Oracle ODP.NET, Managed Driverについては、まだ提供されていないようでした。気なるようでしたらNuGetのWebサイトから*.nupkgのマニュアル・ダウンロードを行い、拡張子を*.nupkgから*.zipに変更することで同梱物を確認することができます(詳しくは、libフォルダ内にnetcoreやnetstandardが入っているかどうかで判断可能)。なお、2018年3月6日に公開されたβ版が、Oracleのサイトからダウンロードできるようになっているようなので、近々、正式版のOracle ODP.NET, Managed Driverが提供されるかもしれません。

<今後の展望>

 先日、.NET Core 3.0のリリース予定がアナウンスされ(2018年後半に.NET Core 3の最初のプレビューを公開し、2019年に最終版をリリース)、その中で、「Windowsデスクトップパック」なるものが提供され、Windows FormsやWPFも.NET Core対応される旨がアナウンスされました。

.NET Core 3 and Support for Windows Desktop Applications | .NET Blog
https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows-desktop-applications/

 これを真に受けると、.NET Framework側はメンテナンス・フェーズに突入し、.NET Core側がメインストリームになっていくように思います。実際のところ、昨今の.NET Frameworkのリリースでは、ASP.NET MVC5やASP.NET Identity2には、大きな変更は入っておらず、.NET CoreのASP.NET MVC6やASP.NET Identity3に対して新しい機能の追加などが行われています。

 日本のエンタープライズでは、VB6資産などもまだまだ残っていることもあり、.NET Framework資産もまだまだ利用され続けていくことになると思いますが、Cloud / Mobile、IoT / AIなどの新しい分野や新規開発では、.NET Coreがメインストリームになっていくんじゃないでしょうか?と思います。
09:00 | 投票する | 投票数(0) | コメント(0) | ご報告