none
.NET Coreでの業務システム開発 RRS feed

  • 質問

  • 漠然とした質問で失礼いたします。

    業務システムの開発を.NET Core(.NET 5)で検討しています。

    LTSは3年サポート期間があるようですが、3年毎のアップデートは

    あまり現実的ではないように考えています。

    .NET Core(.NET 5)は、更新頻度の少ない業務システムの開発に不向きなのでしょうか。

    よろしくお願いします。

    2019年10月24日 9:03

回答

  • .NET Coreは.NET Frameworkの置き換えなので、.NET Coreが放置された時には、.NET Frameworkにまた戻っているか、もしくは何か新しいものが出ているかです。3年後に新しいものが出ているとは考えにくいですし、多大な投資をしたであろう.NET Coreを捨て、今更.NET Frameworkに戻ることはありえないでしょう。

    もしかして、「.NET Core が途絶える可能性」で書かれていますか?
    私やほかの方はあくまで「.NET Core の 3.1 バージョン(といった特定のメジャー・マイナーバージョン)の LTS のサポートが切れる」という話で議論していると認識しています。

    先に示したリンク先にも書かれているとおり、「毎年 .NET の新バージョンを出す」「2 年に一度 LTS で出す」予定だと書かれていますので、「.NET Core(が名称を変えた .NET 5/6/7)が途絶える」とは思っていませんし、その仮定は置いていません。
    https://devblogs.microsoft.com/dotnet/introducing-net-5/

    なお、現状の .NET Core CLR はサイドバイサイドのインストールであり、複数のバージョンが共存する関係になっています。
    https://docs.microsoft.com/ja-jp/dotnet/core/versions/remove-runtime-sdk-versions?tabs=windows

    たとえば、.NET Core 3.1 をターゲットにしたアプリは、.NET Core 3.1.x のランタイムがシステムに存在する限り、.NET 5 や .NET 6 のランタイムを入れても、.NET Core 3.1.x のランタイムで実行される(と現状のドキュメントから読み取れる)ようになっています。
    https://docs.microsoft.com/ja-jp/dotnet/core/versions/selection#framework-dependent-apps-roll-forward

    「ランタイムはインプレース(上書き)アップグレードされない」、「.NET Core アプリのランタイム選択ポリシーは常に新しいランタイムを選ぶわけではない(条件付き)」の 2 点から、「.NET Core 3.1.x のサポートが切れたら、.NET Core 3.1 をターゲットにしたアプリの脆弱性に対する手当はされない」、そして「5 年、10 年といった長期のライフサイクルを持つアプリやシステムでは厳しいと思っている」(質問者さん)という話です。

    もっとも、.NET 6 でも互換性はある程度保たれているでしょうから、多くのケースではサポートが切れる前に新しい LTS のあるバージョン(直近だと .NET 6)に移行して大丈夫か検証、必要に応じて修正、そして正式運用へで済むとは思います。(今の Windows 10 の SAC ビルドの乗り換え検証と同じ考え方)
    あとは、リスクをどの程度見るかが事業分野・規模によるのでしょう。

    2019年10月25日 12:40
    モデレータ

すべての返信

  • サポートに「何」を期待されていますか?
    それは、自分たちのアプリケーション・システムのライフサイクルに照らして重要なものですか?

    それによって答えが決まるのでしょう。
    向いている・向いていないは、考える主体の業界などに左右されるはずなので、一般論としてはないのでは?と思います。

    (Windows 10 で Home/Pro はそのバージョンのサポートが 18 ヶ月程度になってきていますし、それと比べてどう考えるか?ではとも思いますが…)

    2019年10月24日 12:52
    モデレータ
  • お世話になります。

    サポートには、バグ・脆弱性対応を期待しております。

    社内で使う業務システム開発なので、 .Net Coreのバージョンアップも

    例えばサーバ老台(約5年)に合わせることを想定しているため、

    ライフサイクルは長くなると考えております。

    .Net Frameworkではあまり気にしなくて良かった所と思ってますが、 

    同じように長期ライフサイクルで開発・保守されている方は

    どのようにお考えか、ご意見を伺いたいと思っております。

     


    2019年10月24日 15:08
  • // そういえば、「.NET 5 で検討している」とありますが、まだでは…?
    // .NET 5 は 2020 Nov で、LTS なしのはず…。

    Microsoft のスタンス としては以下のようなコメントが出されています。

    New applications should be built on .NET Core. .NET Core is where future investments in .NET will happen. Existing applications are safe to remain on .NET Framework which will be supported.

    今後も .NET Framework のサポートは継続するとはいえ、新機能の投入はないので、.NET アプリケーションを新たに開発する場合は .NET Core を使うべきだという話ですね。

    ところで、.NET Core の LTS に対する update は、これまで Windows Update で配布されていない と思います。
    .NET Core 3.1 のタイミングで戦略の変更があるかどうかはわかりませんが、サポート期間中であっても「気にしないで良かった」という状態にはならないと思っています。
    (脆弱性の修正のアップデートを Windows Update とは別にインストールが必要)

    また、.NET Core ランタイムのバージョンに関するドキュメント を読む限り、2.0 をターゲットにしていて、2.0.x と 3.0.x が入っている環境では、2.0.x で実行されるようなので、新しいバージョンで実行させるためには、3.0 ターゲットでリビルドするか、2.0.x ランタイムをアンインストールしてもらうかが必要です。

    いろいろと書き散らかしましたが、.NET Core(や将来の .NET)について、今公開されている情報だと、5 年 / 10 年というライフサイクルで「ほとんどアップデート(テスト)しない」は無理でしょう。
    そのライフサイクルの中で 2.x → 3.x といったような移行も視野に入れた計画を立てるしかないと思われます。
    (それを避けたいなら、機能が増える見込みのない、.NET Framework にずっととどまることになるはず…今のところは)

    2019年10月24日 21:49
    モデレータ
  • .NET FrameworkとてWindows 10に同梱されるようになったため、強制的にアップデートされます。.NET Framework version historyに対応関係がまとめられていますが、v1803では.NET Framework v4.7.2なのに対しv1903ではv4.8となります。

    本当の意味でLTSを求めるとなるとWindows 10 Enterprise LTSCか.NET Framework 3.5.1しか選択肢はないように思います。

    2019年10月24日 22:32
  • バグ・脆弱性対応に期待しているということであれば、さすがにそれを放置したままにしないとは思います。CSRの点からもそうですし、第一、放置したら競争から取り残されてしまうでしょう。競争もあって開発・動作環境はいろいろ変化してきているのですから、競争に不利になるようなことはしないはずです。
    幸いWPFもサポートされていますし、業務アプリということであればWPF + .NET Coreでの開発でいいんじゃないかな?と思っています。もっとも、.NET Coreで業務アプリ作成の検証等全くしていないので無責任な発言になりますが・・・。XAML IslandsによってUWP側の機能も使えるようになってきていますし、WPFでの業務アプリも幅が広がってくると思います。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年10月25日 2:04
    モデレータ
  • > バグ・脆弱性対応に期待しているということであれば、さすがにそれを放置したままにしないとは思います。


    昨今の Windows 10 の SAC もサポート切れは放置ですのでその考え方は危険かと。
    サポート切れとは、そのバージョンに同じ脆弱性があるかどうかも調べない状態ですので。
    2019年10月25日 3:20
    モデレータ
  • そうですね。確実なサポートは約束されていないわけですからね。変化の激しい業界ではどうなるかわからないところはあります。
    ただ、それでも.NET Coreは大丈夫だろうと思っています。
    .NET Coreは.NET Frameworkの置き換えなので、.NET Coreが放置された時には、.NET Frameworkにまた戻っているか、もしくは何か新しいものが出ているかです。3年後に新しいものが出ているとは考えにくいですし、多大な投資をしたであろう.NET Coreを捨て、今更.NET Frameworkに戻ることはありえないでしょう。
    .NET Coreは市場の要求に対応するためであって、何がなんでも.NET Coreへのシフトを行わなければならず、LTSが3年とはいえ、それ以降に放置されることは考えにくいように思います。
    あくまで個人的な感想ですけどね。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年10月25日 5:39
    モデレータ
  • .NET Coreは.NET Frameworkの置き換えなので、.NET Coreが放置された時には、.NET Frameworkにまた戻っているか、もしくは何か新しいものが出ているかです。3年後に新しいものが出ているとは考えにくいですし、多大な投資をしたであろう.NET Coreを捨て、今更.NET Frameworkに戻ることはありえないでしょう。

    もしかして、「.NET Core が途絶える可能性」で書かれていますか?
    私やほかの方はあくまで「.NET Core の 3.1 バージョン(といった特定のメジャー・マイナーバージョン)の LTS のサポートが切れる」という話で議論していると認識しています。

    先に示したリンク先にも書かれているとおり、「毎年 .NET の新バージョンを出す」「2 年に一度 LTS で出す」予定だと書かれていますので、「.NET Core(が名称を変えた .NET 5/6/7)が途絶える」とは思っていませんし、その仮定は置いていません。
    https://devblogs.microsoft.com/dotnet/introducing-net-5/

    なお、現状の .NET Core CLR はサイドバイサイドのインストールであり、複数のバージョンが共存する関係になっています。
    https://docs.microsoft.com/ja-jp/dotnet/core/versions/remove-runtime-sdk-versions?tabs=windows

    たとえば、.NET Core 3.1 をターゲットにしたアプリは、.NET Core 3.1.x のランタイムがシステムに存在する限り、.NET 5 や .NET 6 のランタイムを入れても、.NET Core 3.1.x のランタイムで実行される(と現状のドキュメントから読み取れる)ようになっています。
    https://docs.microsoft.com/ja-jp/dotnet/core/versions/selection#framework-dependent-apps-roll-forward

    「ランタイムはインプレース(上書き)アップグレードされない」、「.NET Core アプリのランタイム選択ポリシーは常に新しいランタイムを選ぶわけではない(条件付き)」の 2 点から、「.NET Core 3.1.x のサポートが切れたら、.NET Core 3.1 をターゲットにしたアプリの脆弱性に対する手当はされない」、そして「5 年、10 年といった長期のライフサイクルを持つアプリやシステムでは厳しいと思っている」(質問者さん)という話です。

    もっとも、.NET 6 でも互換性はある程度保たれているでしょうから、多くのケースではサポートが切れる前に新しい LTS のあるバージョン(直近だと .NET 6)に移行して大丈夫か検証、必要に応じて修正、そして正式運用へで済むとは思います。(今の Windows 10 の SAC ビルドの乗り換え検証と同じ考え方)
    あとは、リスクをどの程度見るかが事業分野・規模によるのでしょう。

    2019年10月25日 12:40
    モデレータ