Windowsコンテナと.NET Frameworkアプリケーション


このマルチポストシリーズでは、既存のものを取るために必要なものを見ていきます.NET FrameworkアプリケーションをWindowsコンテナに持ってきます.
プロセスの仕組みに飛び込むだけではなく、まず最初にWindowsコンテナに移動したい理由や、この旅を始める前に何を意識すべきかを見てみたいと思います.
掘りましょう!

なぜ私は私のコンテナを保存する必要があります.NET Frameworkアプリケーション?
これは正直なところ、任意の会話を開始する必要がある場所です.私たちの産業の多くは、トレンドによって駆動され、現在のものは、すべてをコンテナにし、Kubernetesでそれを実行することです!
私のアドバイスは盲目的に、これはあなたが現在それについて多くを読んで、あなたが出席するすべての会議でそれを見るので、これはあなたの現在のアプリケーションのためのパスであることを決定することです!
私の観点から、以下の理由は、コンテナ化を考慮する理由です
  • 目的のためのクリアフィット.あなたが現代を持つならば.マイクロフレームワークのパラダイムにうまくフィットしているネットフレームワーク4のアプリケーションは、おそらく、それらをコンテナ化し、Kubernetesのようなオーケストラータでそれらを実行することを意味します.
  • すべてのプラットフォームの一貫した配置と管理方法.あなたがすでにあなたのビジネスまたはチームの他のスタックのためにコンテナ化にかなり投資しているならば、あなたのウインドウと理由のために理由.NET Frameworkアプリも?今、あなたはパッケージ、展開、ロールバック、あなたのアプリを管理する1つの方法があります.
  • あなたのSDLCで残っているオプスを押すこと.私は人々がまだ生産サーバーにリモートで、その場でものを変えることに驚いています.容器は、これをより難しい命題にして、開発者が生産において不可能性を備えた解決策を構築するように強制します.多くの開発者が同意しないかもしれませんが、これはおそらくWindowsコンテナを採用する際の最大の隠れた利点です!😉
  • より良い資源利用と分離コンテナは完全なVMよりもオーバヘッドが少なく、より良いApp Domain 複数の実行よりも分離.同じWindows VM上のNETアプリケーション.Windowsコンテナはアプリケーションとuser mode Windowsの一部は、従来のVMと比較して全体的な足跡を小さくしますが、同じコンテナホスト上で実行されるアプリケーション間のより明確な分離から利益を得ます.

  • 何か持ち込みできますか.Windows FrameworkにNET Frameworkアプリケーション?
    TL博士-答えはそうです.

    Windowsデスクトップアプリケーション
    サポートされていない最初のユースケースはWindowsデスクトップアプリケーションです.一部の人々はエンドユーザーにリモートデスクトップサービスを提供する方法としてコンテナを見るかもしれませんが、このシナリオはサポートされていないし、私が読んだものからサポートされる可能性は低いです.
    これがあなたの環境で必要条件であるならば、あなたはマイクロソフトApp-V (アプリケーションの仮想化)は、デスクトップアプリケーションを要求するようにユーザーにデスクトップアプリケーションを提供するために使用することができますアプリケーションは、ユーザーのデスクトップにインストールされていません.AzureのようなホストのリモートデスクトップサービスWindows Virtual Desktop かもしれない.

    . NET 1 .Xと2.Xアプリケーション
    あなたが満たさなければならない最小限の要件.Windowsコンテナのネットは.NET Framework 3.5これは、どちらか1に依存するコードベース(またはプリコンパイルされたアプリケーション)を持っていることを意味します.Xまたは2.x.NET Frameworkは、その後、運が悪いです.
    与えられる.NET Framework 3.5shipped around 2008 それはあなたがそれにあなたのアプリケーションを更新するために少なくとも10年を持っていることを意味します.その10年にしていない場合は、残念ながらWindowsコンテナはあなたのための銀の弾丸ではありません!
    あなたが前進する方法を理解するためにここに来たならば.NET 1.1、それから私は公式マイクロソフトドキュメンテーションを読むことを勧めますmigrating from .NET 1.1 to 4.x .

    マニュアルインストールを必要とする依存関係
    サードパーティ製のライブラリやソフトウェアのような依存関係を持っている場合は、インストールを手動で行う必要があります.
    WindowsコンテナにDockerFileの一部としてソフトウェアをインストールすることが可能ですが、インストールは完全にコマンドライン駆動でなければなりません.インストーラを実行することができない場合は、コマンドラインを介して設定を提供している場合は' no go 'です.
    PowerShellを使用してMSIをインストールする方法を示します.これはDockerfile to install iisnode これは、統合されたノードを有効にします.WindowsのビルトインWebサーバーIISの上のJSサポート.
    RUN Write-Host 'Downloading iisnode' ; \
        $MsiFile = $env:Temp + '\iisnode.msi' ; \
        (New-Object Net.WebClient).DownloadFile('https://github.com/tjanczuk/iisnode/releases/download/v0.2.21/iisnode-full-v0.2.21-x64.msi', $MsiFile) ; \
        Write-Host 'Installing iisnode' ; \
        Start-Process msiexec.exe -ArgumentList '/i', $MsiFile, '/quiet', '/norestart' -NoNewWindow -Wait
    

    ベースイメージの選択
    あなたが最終的にWindowsコンテナに移動することを決定したので、あなたはあなたが使用するどのベースイメージを理解する必要があります.
    マイクロソフトは、これを最初に理解することが重要であるように、それがWindows Serverリリースを最新版に提供する新しい方法を導入しました.
    私たちのほとんどは、Windows Server 2016とWindows Server 2019に精通しています.これらの2つのリリースは、通常のアップデートと修正プログラムで主要なリリースのかなり伝統的な~ 3年のサイクルに続くWindowsのための長期サービスチャンネル(LTS)の一部です.
    新しいコンセプトは半年チャンネル(SAC)です.それはLTSリリースよりずっと定期的に新しい能力で更新されます.これらのリリースは1年ではなくリリース番号で参照されます.したがって、例えば、「Windows Server 20 H 2」または「Windows Server 1903」.
    LTSとSACの違いについてもっと読むことができますthe official Microsoft Docs site .
    あなたが選ぶ基礎イメージはあなた次第です、しかし、私のお金のために、私はあなたの容器イメージが多分どんな方法でも長命であるべきでないので、半年ごとのチャンネル・リリースに変わる傾向があります、そして、あなたが最新のビットを持っているならば、あなたが定期的にベースイメージから再建する必要があるので、特に、彼らがWindows容器最新版を含むならば、それは最高です!
    しかし、待って、もっと!
    Windows Serverのリリースを選択するに加えて、Windows Serverのイメージタイプを選択する必要があります:Windowsのサーバーのコア、Windowsのナノサーバー、WindowsまたはWindows iOTコアを決定する必要があります.
    私は、これが多くのようにgrokに見えるということを知っています、しかし、あなたがこれらの選択をする理由は本当にあなたのベースイメージのサイズを減らすことについてです.
    ナノサーバーは、最小サイズを提供していますが、本当にサポートしています.NETコアアプリケーション.ほとんど.Windows Frameworkコアでは、NET Frameworkアプリケーションを実行できます.また、GDI +のようなWindows機能に依存関係がある場合は、フルWindows Serverイメージを考慮する必要があります.
    また、どちらかと来るベースイメージのためのいくつかの追加オプションがあります.NET FrameworkまたはASP . NET.ネットプリロード.
    詳細にダイブすることができますし、右の画像を選択する方法on Microsoft Docs .

    次は何ですか.
    次のポストでは、私は既存を取るつもりです.NET Frameworkアプリケーションを使用して、Windowsコンテナ上でどのようにそれを取得し、実行するかを操作します.エキサイティング!
    その時まで.😎