Modernize Studio
言語:日本語
メールで相談

古い.NETアプリ(WinFormsとWeb Forms)を刷新する

2000年代から2010年代に.NET Framework向けに書かれたアプリは、VB6やAccessのツールより状態が良いことが多く、全面的な書き直しより慎重な対応がふさわしいものです。そのまま移せる部分と作り直す部分を見極めたうえで、同じデータ、同じルールのままASP.NET Coreへ移行します。

なぜ今なのか

.NET Framework 4.6.2のサポートは2027年1月12日に終了し、4.6.1以前のバージョンはすでにサポートが終わっています。.NET Framework 4.8と4.8.1はインストールされているWindowsのライフサイクルに従うため、4.8上のアプリがすぐに危険になるわけではありません。ただし、このフレームワークに届くのは修正だけで、新しいライブラリやツール、ホスティングの選択肢は現行の.NET向けに作られています。

ASP.NET Web Formsは.NET Framework上でしか動かず、ASP.NET Coreには引き継がれませんでした。Windows Formsは現行の.NETでも動きますが、Windowsのデスクトップ技術であることに変わりはなく、社員の方がブラウザから使えるようにはなりません。

  1. Windows 10マイクロソフトのサポート終了
  2. .NET Framework 4.6.2マイクロソフトのサポート終了

刷新する内容

.NET Frameworkで作られたデスクトップアプリとウェブアプリ、そしてその周辺のサービス。

  • Windows Formsアプリ

    DataGridViewのグリッド、型指定されたDataSet、TableAdapterを使うデスクトップアプリ。ClickOnceやMSIで配布されていることがよくあります。ウェブアプリにするか、そのほうが良ければデスクトップアプリのまま現行の.NETへ移します。

  • ASP.NET Web Formsのサイト

    ViewState、ポストバック、UpdatePanel、GridView、SqlDataSourceを使うページ、マスターページ、ユーザーコントロール。アプリに応じてRazor Pages、MVC、BlazorでASP.NET Core上に作り直します。

  • データアクセス

    ADO.NETのコード、型指定されたDataSet、LINQ to SQL、Entity Framework 6のモデル、ストアドプロシージャ。データベースの設計に問題がなければそのまま使い、データベースとやり取りするコードだけを変更します。

  • サービスと連携

    WCFやASMXのウェブサービス、.NET Remoting、Windowsサービス。現行の.NET上のREST APIとバックグラウンドサービスになります。

  • ログインと設定

    Forms認証、ASP.NET Membershipプロバイダー、Windows認証、web.configやapp.configの設定。ユーザーと役割はASP.NET Core Identityへ、またはすでにお使いならMicrosoft Entra IDやActive Directoryへ移します。

  • レポート

    Visual Studio向けCrystal Reports、ReportViewerのRDLCレポート、Excelへのエクスポート。サーバーが作成するPDFやExcelの書類になります。

ウェブ版の画面

説明用の例、架空のデータ

家賃台帳をWinFormsのプログラムで作るとこう見えるという例と、同じ台帳をウェブページにしたもの。

つまみをドラッグするか、矢印キーを使ってください。

各部分の移行先

.NET Frameworkでは:WinFormsの画面または.aspxページ
ウェブアプリでは:Razor PagesまたはBlazorコンポーネント
.NET Frameworkでは:コードビハインドとイベントハンドラー
ウェブアプリでは:テストで検証されたサービスとコントローラー
.NET Frameworkでは:型指定されたDataSet、LINQ to SQL
ウェブアプリでは:同じデータベース上のEntity Framework CoreまたはDapper
.NET Frameworkでは:WCFまたはASMXのサービス
ウェブアプリでは:ASP.NET Core上のREST API
.NET Frameworkでは:MembershipとForms認証
ウェブアプリでは:ASP.NET Core IdentityまたはEntra ID
.NET Frameworkでは:パソコンごとのClickOnceやMSI
ウェブアプリでは:ブラウザで開く一つのアドレス

移行の進め方

  1. 48時間以内の診断

    ソースコードを含むソリューション、データベースのバックアップまたはスクリプト、本番用パスワードを除いた設定ファイルをお送りください。48時間以内に書面の診断書でお答えします。現在のプログラムの働き、リスクのありか、ウェブ版の構成、パイロットモジュールの固定価格、残りの部分の見積もりです。無料で、何の義務も生じません。

  2. パイロットモジュール

    実データのコピーを使って、アプリの一部分、通常はいちばんよく使われる部分を作ります。残りを決める前に、社員の方に日々の業務で使っていただきます。

  3. 同じデータで、同じ結果

    新旧両方のアプリに同じリクエストとデータを送り、計算フィールドからAPIの応答、生成される書類まで結果を照合します。見つけた業務ルールはすべて自動テストにもし、その後のリリースのたびに改めて確認します。すべての確認結果を記した報告書をお渡しします。

  4. 30日間の並行稼働

    アプリ全体が完成したら、旧アプリも30日間並行して使います。違いがあれば旧プログラムが残っているうちに見つかり、合意した価格の範囲内で修正します。

よくある落とし穴と、その対処

  1. ViewStateとポストバックのロジック

    Web FormsのページはViewStateやSessionに状態を保持し、ロジックはPage_Load、コントロールのイベント、IsPostBackの判定に分散しています。ASP.NET Coreにはこれに相当する仕組みがありません。ページのライフサイクルを明示的なリクエストに置き換え、操作ごとに入口を一つにはっきりさせます。

  2. なくなったAPI

    アプリケーションドメイン、.NET Remoting、コードアクセスセキュリティは現行の.NETでは使えず、コンパイルは通っても実行時にPlatformNotSupportedExceptionを投げるAPIもあります。価格を確定する前の診断段階で、コードから洗い出します。

  3. Membershipのパスワード

    旧ASP.NET Membershipプロバイダーで作られたアカウントは、ASP.NET Core Identityとは異なるハッシュ形式でパスワードを保存しています。現在のパスワードでそのままログインでき、初回ログイン時にハッシュが更新されるようにアカウントを移行します。旧設定のためにそれができない場合は、パスワードの再設定を計画します。

  4. サードパーティー製コントロールとレポートのランタイム

    Telerik、DevExpress、InfragisticsなどのWeb Forms・WinForms向けコントロール群や、Crystal Reportsのランタイムは、特定のフレームワークのバージョンに結びついています。バージョンとライセンスを確認し、コントロールごとに代わりを決めます。

  5. ストアドプロシージャとトリガーの中のルール

    この時期のアプリの多くは、実際の業務ルールがデータベースの中にあります。データベースを残すならプロシージャもそのまま残り、同じデータでの照合がそれらも対象にします。データベースを変える場合は、一つずつ意図を持って移します。

  6. メモリ上に保持された状態

    Session、静的変数、プロセス内キャッシュにデータを持つアプリは、再起動しないサーバーが1台だけあることを前提にしています。その状態を明示的に扱うようにし、新しいアプリが複数のインスタンスで動き、再起動にも耐えられるようにします。

価格とお支払い

診断

無料

書面で、48時間以内

パイロットモジュール

€1,000–1,500

通常。着手時50%、検収時50%

お支払い条件

着手時に50%、検収時に50%をお願いしています。残金は本番稼働とソースコードの引き渡しの前にお支払いいただきます。大きなプロジェクトは、合意したフェーズごとのお支払いになります。

診断は無料です。先に進まないと決めた場合も、診断書はお手元に残り、費用は一切かかりません。

価格は固定で、作業開始前に書面で合意します。作業内容が変わる場合は新しい見積書をお送りし、ご承認をいただいてから追加作業に入ります。

全面移行の場合、一般的な開発会社の見積もりより40〜60%低い価格を目標にしています。オフィス費用も営業部門もない小さなスタジオだからこそ可能です。

価格は税抜です。

価格を見積もる

テストで裏付けた、実際の移行

NorthwindはマイクロソフトがAccessに同梱していたサンプルデータベースで、当方の顧客ではありません。公開されているコピーをSQLiteとPostgreSQLに移行し、すべてのテーブルとクエリを自動テストで元データと比較したうえで、その結果をもとに動くウェブアプリを構築しました。事例には数値を、同等性報告書にはすべての確認項目を掲載しています。

NorthwindはAccessのデータベースですが、.NET WinFormsとWebFormsでも同じ方法で進めます。移行し、同じデータで元のプログラムと結果を比べ、新旧を並行して動かします。

同等性報告書(英語) · クリックできるプレビューとサンプル診断(デモ)

よくある質問

すべて書き直す必要がありますか?

いいえ。業務ロジックを含むクラスライブラリは、わずかな修正で現行の.NETに移せることが多く、データベースも通常はそのまま使えます。大きく変わるのはユーザーインターフェース、つまりWeb FormsのページとWinFormsの画面です。診断では、移せる部分と作り直す部分を切り分けます。

WinFormsアプリをデスクトップアプリのまま残せますか?

はい。Windows Formsは現行の.NETでサポートされており、移行すればウェブ化より少ない費用でプログラムの寿命を延ばせます。ブラウザや社外からの利用が必要なら、ウェブアプリが答えです。どちらも成り立つ場合は、診断で両方の見積もりを出します。

アプリは.NET Framework 4.8で動いています。急ぐ必要がありますか?

サポートの面では急ぐ必要はありません。4.8と4.8.1は、インストールされているWindowsのライフサイクルに従うためです。移行の理由はたいてい別のところにあります。ブラウザからの利用、Linuxでの運用、.NET Frameworkに対応しなくなったライブラリ、Web Formsの開発者が見つけにくいことなどです。

段階的に移行できますか?

できます。ASP.NET Coreと旧アプリを同じアドレスの下で並行稼働させ、一つの領域ずつ移していきます。マイクロソフト自身も、ASP.NETアプリ向けにこの段階的な方法をガイドで紹介しています。

自動アップグレードツールは使いますか?

役に立つところでは使います。たとえばプロジェクトファイルやパッケージ参照の更新です。ただ、Web FormsのページをASP.NET Coreでどう動かすべきかはツールでは決まりません。変換した部分も他と同じく、同じデータで旧アプリと照合します。

データベースは何を使いますか?

通常は現在お使いのもの、多くの場合SQL Serverです。データベースの変更は別の判断事項で、明確な理由がある場合にのみお勧めします。

お問い合わせ

ご都合のよい方法をお選びください。1営業日以内に、日本語でメールにてお返事します。

メールで

riccardo@modernizestudio.com
メールを書く

ソースコードとテスト用データを入れたデータベースのコピー、またはアプリの簡単な説明をお送りください。1営業日以内にご返信します。

ファイルをお送りください

Access、Excel、VB6、Delphi、古い.NETで作られたプログラムなら、ファイル送付後48時間以内に無料の診断書をお届けします。

  1. ファイルのコピーを作成します。テスト用データでもかまいません。
  2. フォームまたはメールに添付します。パスワード付きの圧縮ファイルにし、パスワードは別送するのがおすすめです。ご希望があれば、先に秘密保持契約を結びます。
  3. 48時間以内に、診断書とパイロットモジュールの固定価格をお届けします。

イタリアを拠点に活動しています。

メッセージを送る

任意。データベース、Excelブック、スクリーンショット、仕様書など、10 MBまで。それより大きいファイルは、ダウンロードリンクをメッセージに記載してください。

メールで相談

ボタンを押すと、メッセージが入力された状態でメールソフトが開きます。メールソフトで「送信」を押すまで送信されません。

メールで相談