評估 .NET 應用程式的翻新作業

本頁面說明如何使用 Google Cloud Modernization Hub 評估 ASP.NET 和 .NET Framework 應用程式,以便進行 Linux 容器化,並翻新為跨平台 .NET 版本。

許多企業 .NET 應用程式都依附於 Windows 專屬 API、IIS 伺服器設定或舊版 .NET Framework 程式庫,因此無法直接部署至 Linux 容器。Modernization Hub 的自動評估功能會分析原始碼,找出阻礙、評估 NuGet 套件相容性,並建議 Cloud Run 或 Google Kubernetes Engine 的重構路徑。

使用 .NET 應用程式評估的時機

如果您打算執行下列任一項現代化工作,請執行 .NET 應用程式評估:

  • 重新平台化為 Linux 容器:在將應用程式容器化以供 Cloud Run 或 GKE 使用前,請先找出僅限 Windows 的依附元件 (例如 Windows 登錄存取權、System.Drawing 或 Active Directory 整合)。
  • 升級 .NET Framework 版本:從 .NET Framework 4.x 遷移至現代化跨平台 .NET 版本 (.NET 10 以上版本) 時,請評估工作量和相容性差距。
  • 解除單體式架構的耦合:找出緊密耦合的 WCF 服務、Windows 服務或舊版網頁表單,這些項目需要重構為雲端原生微服務。

事前準備

開始執行 .NET 評估作業前,請先啟用必要 API、驗證專案的 Identity and Access Management (IAM) 權限、註冊工作區設定 bucket,以及將原始碼封存檔上傳至 Cloud Storage。

啟用必要的 API

如要使用 Modernization Hub,請在專案中啟用必要的 Google Cloud服務 API:

gcloud services enable \
    aiplatform.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    cloudresourcemanager.googleapis.com \
    compute.googleapis.com \
    logging.googleapis.com \
    storage.googleapis.com \
    --project=PROJECT_ID

將 PROJECT_ID 替換為 Google Cloud 專案 ID。

必要的角色

如要執行評估,使用 Cloud Build 和 Gemini Enterprise Agent Platform 的兩個身分必須具備不同的 IAM 權限:

  • 已通過驗證的控制台使用者 (啟動作業並存取 bucket):
    • 儲存空間管理員 (roles/storage.admin)
    • 服務帳戶使用者 (roles/iam.serviceAccountUser)
    • Cloud Build 編輯者 (roles/cloudbuild.builds.editor)
  • 專屬服務帳戶 (執行評估容器):
    • Agent Platform 使用者 (roles/aiplatform.user)
    • Storage 物件使用者 (roles/storage.objectUser) 或 Storage 管理員 (roles/storage.admin)

如要取得啟動評估及執行分析容器所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

  • 使用者 - 管理來源封存檔和 bucket 設定: 儲存空間管理員 (roles/storage.admin)
  • 使用者 - 將專屬服務帳戶附加至工作: 服務帳戶使用者 (roles/iam.serviceAccountUser)
  • 使用者 - 提交評估作業 (cloudbuild.builds.create) 並查看記錄: Cloud Build 編輯者 (roles/cloudbuild.builds.editor)
  • 服務帳戶 - 執行 codmod 容器: Agent Platform User (roles/aiplatform.user)
  • 服務帳戶:讀取來源封存檔及寫入評估報表: Storage 物件使用者 (roles/storage.objectUser) 或 Storage 管理員 (roles/storage.admin)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備啟動評估及執行分析容器所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

您必須具備下列權限,才能啟動評估作業及執行分析容器:

  • 使用者 (Cloud Storage、Cloud Build 和 IAM):
    • storage.objects.get (下載或讀取檔案)
    • storage.objects.list (列出 bucket 中的檔案)
    • storage.objects.create (上傳或建立新檔案)
    • storage.objects.update (修改現有檔案的中繼資料)
    • storage.objects.delete (刪除或覆寫檔案)
    • storage.buckets.get (查看 bucket 層級的設定)
    • cloudbuild.builds.create (提交評估工作)
    • iam.serviceAccounts.actAs (將服務帳戶附加至工作)
  • 服務帳戶 (Agent Platform 和 Cloud Storage):
    • aiplatform.endpoints.predict (執行 AI 輔助程式碼分析)
    • storage.objects.get (如要閱讀或下載來源封存檔)
    • storage.objects.list (列出輸入資料夾中的檔案)
    • storage.objects.create (撰寫評估報告)
    • storage.objects.delete (刪除暫存檔案)

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

設定工作區設定 bucket

在「Modernization Hub」>「設定」頁面 (例如 gs://PROJECT_ID-modernization-hub) 註冊指定的 Cloud Storage bucket,以儲存工作區二進位狀態檔案 (dotnet_jobs.pb、java_jobs.pb 和 mainframe_jobs.pb)。

查看程式碼集大小限制

為維持最佳效能和成本效益,codmod評估 引擎會強制執行下列規模和封存準則:

  • 程式碼集大小上限:每個評估工作約 600 萬行程式碼 (LOC)。如果存放區超過 600 萬行程式碼,請先將程式碼庫分割成較小的獨立解決方案或模組,再上傳。
  • 乾淨的封存結構:從 ZIP 檔案中排除已編譯的二進位檔、套件快取和版本管控中繼資料 (例如 bin/、obj/、node_modules/、.vs/ 和 .git/),只分析來源檔案和建構設定。

準備並上傳 .NET 來源封存檔

將 .NET 程式碼集封裝為 zip 檔案 (不含建構輸出內容),然後將檔案上傳至專案的 Cloud Storage bucket。

  1. 在本機電腦上,使用下列任一方法建立存放區的 ZIP 檔案:

    • 使用 Git (建議):

      git archive --format=zip -o repository.zip HEAD
      
    • 使用 zip CLI:

      zip -r repository.zip . \
          -x "*.git*" "*/bin/*" "*/obj/*" "*/node_modules/*" "*.vs/*"
      
  2. 使用 Google Cloud CLI 將 ZIP 檔案上傳至目標 Cloud Storage bucket:

    gcloud storage cp repository.zip \
        gs://INPUT_BUCKET/codebase/repository.zip
    

    將 INPUT_BUCKET 替換為目標 Cloud Storage bucket 名稱。

執行評估

如要執行評估工作,請按照下列步驟操作:

  1. 前往控制台的「Modernization Hub」頁面。

    前往 Modernization Hub

  2. 在到達網頁中找到「.NET Modernization」(.NET 現代化) 資訊卡,然後按一下「Start assessment」(開始評估)。

  3. 在「Job name」(工作名稱) 欄位中,輸入評估工作的專屬名稱。

  4. 在「Source code location」(原始碼位置) 欄位中,選取包含原始碼的 Cloud Storage 值區 (以 zip 檔案形式)。

  5. 在「報告位置」欄位中,選取要儲存所產生評估報告的 Cloud Storage bucket。

  6. 從「Modernization recipe」(現代化配方) 清單中選取現代化配方。

  7. 從「Location」(位置) 清單中,選取評估工作所在的區域。

  8. 在「服務帳戶」欄位中,選取具有「必要角色」一節所列必要 IAM 角色的專屬服務帳戶。 Cloud Build 會以這個服務帳戶執行評估作業,因此需要 Agent Platform 使用者和 Cloud Storage 權限。

  9. 按一下「產生報表」。

    控制台會啟動背景評估容器,分析您的專案。工作狀態會顯示在「評估記錄」表格中。

監控工作狀態及查看報表

視程式碼集大小而定,評估工作通常會在幾分鐘內完成。背景容器會在處理完成後自動終止。

如要查看評估結果,請按照下列步驟操作:

  1. 在 Modernization Hub 頁面的「評估記錄」表格中,找出您的評估工作。
  2. 「狀態」欄變更為「已完成」時,請點選「下載報表」。
  3. 選取偏好的輸出格式:
    • HTML 報表:互動式摘要,可讓您篩選不相容的 Windows API、檢查每個檔案的封鎖清單,以及查看修正建議。
    • Markdown 報表:格式化的執行摘要,適合與利害關係人和架構審查委員會分享。

查看評估報告

評估報告會將應用程式的遷移準備程度歸類到下列領域:

  • 整體相容性分數:可遷移至跨平台 .NET 且無須修改的來源程式碼行數和依附元件所占百分比。
  • 阻礙因素細目:需要重構的特定 Windows 依附元件,例如:
    • Windows Communication Foundation (WCF) 伺服器實作項目。
    • ASP.NET Web Forms 或 ASP.NET MVC 舊版管道。
    • Windows 登錄呼叫 (Microsoft.Win32)。
  • NuGet 依附元件分析:現有 NuGet 套件的詳細清單,指出每個套件是否支援目標 .NET 版本,或是否需要替換。
  • 建議採取的動作:建議的程式碼轉換和遷移路徑,可協助您準備應用程式,以便在 Google Cloud上進行容器化。

使用 Antigravity 重構 .NET 程式碼

產生評估報告後,您可以使用 Antigravity 搭配專門的 .NET 代理技能,自動將 .NET Framework 的程式碼轉換為跨平台的 .NET。

執行代理程式重構工作流程前,請確認符合下列先決條件:

  • Antigravity 環境:安裝 Antigravity IDE 或 Antigravity CLI (agy),並使用 Google Cloud 專案設定驗證。
  • 評估構件:下載 codmod 評估報告,並將其放在本機存放區工作區,以便代理程式參照已識別的阻礙和依附元件升級路徑。
  • .NET 翻新技能:將 codmod .NET 翻新技能 (SKILL.md) 載入 Antigravity 工作區設定。如要申請最新 .NET 現代化代理技能的搶先體驗存取權,請與 modernization-hub-feedback-external@google.com 聯絡。

後續步驟