Bởi Augustine, Sylvester Creado, and Pavankumar Kasani | ngày đăng 2 THÁNG 5 NĂM 2025 | trong các chủ đề .NET, Amazon Q Developer
Giới thiệu
Bài viết này tiếp tục chuỗi blog của chúng tôi về việc hiện đại hóa các ứng dụng .NET Framework thành .NET đa nền tảng bằng cách sử dụng Amazon Q Developer .NET transformation. Chúng tôi đã đề cập đến việc chuyển đổi thư viện lớp trong Phần 1, các dự án kiểm thử trong Phần 2, và các ứng dụng Web API trong Phần 3. Trong phần thứ tư này, chúng tôi sẽ tập trung vào việc di chuyển các ứng dụng ASP.NET MVC sang ASP.NET Core.
Các ứng dụng ASP.NET MVC, thường là nền tảng của các giải pháp doanh nghiệp với kiến trúc phức tạp đã phát triển, đòi hỏi việc di chuyển cẩn thận sang ASP.NET Core do sự khác biệt trong controllers, middleware, dependency injection, views, và các framework xác thực. Amazon Q Developer đơn giản hóa quy trình này thông qua phân tích được hỗ trợ bởi AI, tự động xác định các dependency đặc thù của Windows, đề xuất các thay thế, điều chỉnh mã cho sự khác biệt kiến trúc, và chuyển đổi cấu hình—giảm đáng kể nỗ lực thủ công trong khi cho phép các ứng dụng chạy trên cơ sở hạ tầng AWS dựa trên Linux, có thể cắt giảm chi phí vận hành lên đến 40% và mở khóa hiệu suất, bảo mật và lợi ích hỗ trợ của .NET hiện đại.
Việc chuyển đổi các ứng dụng ASP.NET MVC sang ASP.NET Core rất phức tạp, nhưng Amazon Q Developer tự động hóa quy trình bằng cách xác định các dependency đặc thù của Windows và các thay đổi cần thiết, đề xuất cập nhật, và sửa đổi mã—cho phép triển khai Linux trên AWS trong khi giảm chi phí và truy cập các lợi ích của .NET hiện đại.
Tổng quan
Trong hướng dẫn này, chúng tôi sẽ trình bày cách Amazon Q Developer chuyển đổi việc hiện đại hóa .NET phức tạp thành một quy trình được sắp xếp hợp lý bằng cách sử dụng ContosoUniversity, một ứng dụng mẫu được xây dựng trên .NET Framework 4.5. Ứng dụng n-tier nguyên khối này có giao diện người dùng ASP.NET MVC với backend cơ sở dữ liệu Microsoft SQL Server, cung cấp một kịch bản thực tế để thể hiện khả năng của trợ lý AI trong việc hiện đại hóa các ứng dụng cũ sang .NET đa nền tảng.
Điều kiện tiên quyết
Cho hướng dẫn này, bạn sẽ cần:
1. Cài đặt Visual Studio 2022
2. Cài đặt SQL Server 2019 Express
3. Cài đặt và thiết lập AWS Toolkit for Visual Studio
4. Configure IAM Identity Center cho Amazon Q
5. Kích hoạt và đăng ký người dùng cho Amazon Q Developer Pro
6. Thiết lập Amazon Q bằng AWS Toolkit for Visual Studio
7. Tải xuống ứng dụng mẫu ContosoUniversity
Bước 1: Thiết lập và hiểu ứng dụng mẫu
1. Giải nén và mở ContosoUniversity.sln từ ASP.NET MVC Application Using Entity Framework Code First\C# trong Visual Studio 2022.
2. Bạn sẽ nhận được cảnh báo rằng tệp đã được tải xuống từ internet. Chọn Trust and Continue. Bạn sẽ nhận được một cảnh báo khác đề nghị nâng cấp dự án:
Hình 1: Hộp thoại framework mục tiêu không được hỗ trợ
Chọn Continue để cập nhật mục tiêu thành .NET Framework 4.8 (Được khuyến nghị).
3. Bạn sẽ nhận được một cảnh báo khác rằng SQL Server 2012 Express không được cài đặt. Chọn OK, điều này sẽ mở dự án. Xem xét cấu trúc của giải pháp trong Visual Studio bằng cách mở Solution Explorer (View > Solution Explorer từ menu).
Hình 2: Xem xét cấu trúc trong Solution Explorer
Trong Solution Explorer, nhấp chuột phải vào thư mục Migrations và chọn Delete.
4. Xác minh phiên bản dự án là .NET Framework 4.8.
Hình 3: Thuộc tính dự án
5. Bây giờ bạn có thể chạy ứng dụng bằng cách nhấn F5.
ContosoUniversity là một ứng dụng mẫu minh họa cách sử dụng Entity Framework Core trong một ứng dụng web ASP.NET Core MVC.
Hình 4: Ứng dụng mẫu trong trình duyệt
Giải pháp ContosoUniversity bao gồm một cơ sở dữ liệu SQL Server cho dữ liệu đăng ký, với Entity Framework quản lý truy cập dữ liệu. Nó sử dụng một dự án ASP.NET MVC, có Controllers để xử lý các yêu cầu của người dùng, Models để định nghĩa các thực thể cơ sở dữ liệu và logic nghiệp vụ, và Views để trình bày giao diện người dùng. Một thư mục Data chứa ngữ cảnh cơ sở dữ liệu và migrations, hoàn thành các thành phần cốt lõi của giải pháp.
Bước 2: Chuyển đổi giải pháp
Giải pháp chứa một dự án chạy trên .NET framework phiên bản 4.8. Chúng tôi sẽ sử dụng Amazon Q để hiện đại hóa dự án bằng cách di chuyển nó sang .NET đa nền tảng.
1. Đăng nhập vào IAM Identity Center. Màn hình Getting Started cho AWS Toolkit sẽ xác nhận bạn đã kết nối sau khi bạn đã xác thực với Amazon Q và AWS Toolkit.
Hình 5: Màn hình Getting Started của AWS Toolkit
2. Mở một tệp mã C# trong trình chỉnh sửa, điều này khởi tạo Amazon Q Developer .NET transformation.
3. Nhấp chuột phải vào giải pháp ContosoUniversity trong Solution Explorer. Chọn Port project with Amazon Q Developer.
Hình 6: Hành động Solution Explorer để Port project
Lưu ý: một popup lỗi sẽ xuất hiện nếu bạn cố gắng chuyển đổi một dự án hoặc giải pháp lần đầu tiên trước khi mở một tệp mã.
4. Trong hộp thoại port project, chọn phiên bản .NET mục tiêu của bạn và đánh dấu vào ô Port .NET Standard projects to .NET. Sau đó chọn Start.
Hình 7: Hộp thoại Port project with Amazon Q Developer
5. Tại cảnh báo, chọn Yes để tiếp tục
6. Bạn có thể theo dõi tiến trình công việc chuyển đổi dưới Amazon Q Developer Code Transformation Hub.
Hình 8: Theo dõi tiến trình chuyển đổi
Amazon Q xác thực mã của bạn với một bản build cục bộ, sau đó phân tích an toàn nó trong AWS, tổ chức giải pháp của bạn thành các nhóm mã (các dự án và dependency của chúng) và tự động chuyển đổi tất cả các thành phần cần thiết—thậm chí những thành phần ngoài các dự án đã chọn của bạn—để đảm bảo một di chuyển hoàn chỉnh, chức năng.
7. Xem xét kế hoạch chuyển đổi. Sau khi phân tích mã của bạn, Amazon Q tạo ra một kế hoạch chuyển đổi phác thảo các thay đổi được đề xuất mà Amazon Q sẽ thực hiện, bao gồm danh sách các nhóm mã và dependency của chúng sẽ được chuyển đổi. Việc chuyển đổi bao gồm bốn bước:
• Build cục bộ để xác thực các dự án gốc
• Chờ khởi động công việc chuyển đổi
• Tạo kế hoạch chuyển đổi mã
• Thực hiện kế hoạch chuyển đổi
Hình 9: Kế hoạch chuyển đổi
8. Chờ việc chuyển đổi hoàn thành. Bạn sẽ thấy một thông báo gần đầu Visual Studio cho bạn biết khi nào việc chuyển đổi hoàn thành.
Bước 3: Xem xét tóm tắt chuyển đổi
Trong quá trình chuyển đổi, Amazon Q Developer tiến hành một đánh giá kỹ lưỡng về giải pháp .NET đã chọn của bạn và tạo ra một kế hoạch chuyển đổi chi tiết. Để bảo vệ môi trường làm việc của bạn, bất kỳ sửa đổi mã nào đều được thực hiện trong một môi trường sandbox an toàn, đảm bảo thư mục làm việc gốc của bạn không bị ảnh hưởng. Khi hoàn thành công việc chuyển đổi, Q Developer cung cấp một tóm tắt chuyển đổi mã toàn diện.
Bạn có thể truy cập tóm tắt này theo hai cách:
• Chọn liên kết View code transformation summary nằm bên dưới thanh điều hướng trên cùng, hoặc
• Chọn tùy chọn View code transformation summary trong Amazon Q Developer Code Transformation Hub ở dưới cùng màn hình.
Hình 10: Tóm tắt chuyển đổi
Bước 4: Xem xét và chấp nhận các thay đổi mã
Amazon Q Developer thực hiện tất cả các sửa đổi mã trong một môi trường sandbox chuyên dụng để bảo vệ thư mục làm việc của bạn khỏi bất kỳ can thiệp nào.
1. Để xem xét và chấp nhận những thay đổi này, bạn có thể truy cập chế độ xem diff bằng cách chọn nút View diffs trong tab Transformation summary. Bảng điều khiển Amazon Q Developer Code Transformation Hub, nằm ở dưới cùng màn hình, sẽ hiển thị tất cả các tệp đã sửa đổi để bạn xem xét.
2. Trong việc chuyển đổi cụ thể này, tệp dự án đã trải qua một số cập nhật, bao gồm chuyển đổi sang định dạng Project mới, loại bỏ các dòng Reference/Compile Include cũ, và cập nhật phiên bản framework mục tiêu. Chọn tệp .csproj và chọn View Diffs để xem các thay đổi mã (Hình 11).
Hình 11: Sự khác biệt mã trong tệp dự án
3. Tiếp theo, xem một thay đổi đối với tệp C# controller (Hình 12). Các controllers đã được cập nhật để sử dụng các gói AspNetCore.
Hình 12: Sự khác biệt mã trong controller
4. Quay lại View code transformation summary và chọn Actions > Apply Suggested Changes.
Hình 13: Áp dụng các thay đổi được đề xuất
Chọn Reload All để tải dự án đã di chuyển mới. Bạn có thể cần đóng giải pháp từ File Menu và mở lại.
Bước 6: Cập nhật thủ công
Amazon Q Developer .NET transformation hiện tại không chuyển đổi lớp giao diện người dùng. Trước khi chạy giải pháp, chúng ta cần thực hiện các thay đổi sau:
1. Cập nhật tham chiếu MVC
Cập nhật tệp ContosoUniversity\Views\Student\Index.cshtml dòng 1 và 2:
Trước:
@model PagedList.IPagedList<ContosoUniversity.Models.Student>
@using PagedList.Mvc;
Sau:
@model X.PagedList.IPagedList<ContosoUniversity.Models.Student>
@using X.PagedList.Mvc;
@using X.PagedList.Mvc.Core;
@addTagHelper *, X.PagedList.Mvc
2. Cập nhật JavaScript
Thực hiện các thay đổi sau đối với các tệp được liệt kê bên dưới:
• ContosoUniversity\Views\Course\Create.cshtml dòng 63
• ContosoUniversity\Views\Department\Create.cshtml dòng 63
• ContosoUniversity\Views\Instructor\Create.cshtml dòng 91
• ContosoUniversity\Views\Student\Create.cshtml dòng 55
• ContosoUniversity\Views\Course\Edit.cshtml dòng 64
• ContosoUniversity\Views\Department\Edit.cshtml dòng 66
• ContosoUniversity\Views\Instructor\Edit.cshtml dòng 93
• ContosoUniversity\Views\Student\Edit.cshtml dòng 57
Trước:
@section Scripts {
@Scripts.Render(“~/bundles/jqueryval”)
}
Sau:
http://~/Scripts/jquery.validate.js
Thực hiện các thay đổi sau đối với ContosoUniversity\Views\Shared\_Layout.cshtml dòng 48 và 49:
Trước:
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/bootstrap”)
Sau:
http://~/Scripts/jquery-1.10.2.js
3. Cập nhật CSS
Thực hiện các thay đổi sau đối với ContosoUniversity\Views\Shared\_Layout.cshtml dòng 7 và 8:
Trước:
@Styles.Render(“~/Content/css”)
@Scripts.Render(“~/bundles/modernizr”)
Sau:
<link href=”~/Content/bootstrap.css” rel=”stylesheet” />
<link href=”~/Content/PagedList.css” rel=”stylesheet” />
<link href=”~/Content/Site.css” rel=”stylesheet” />
http://~/Scripts/modernizr-2.6.2.js
Bước 7: Chạy ứng dụng
Ứng dụng của bạn giờ đây đã được chuyển đổi hoàn toàn sang .NET Core. Bạn có thể xác minh rằng ứng dụng chạy bằng cách nhấn F5.
Hình 14: Ứng dụng MVC hiện đại hóa đang chạy
Kết luận
Trong bài viết này, chúng tôi đã trình bày cách Amazon Q Developer đơn giản hóa quy trình di chuyển các ứng dụng ASP.NET MVC cũ sang .NET MVC hiện đại. Sử dụng ứng dụng mẫu ContosoUniversity, chúng tôi đã trình bày quy trình chuyển đổi từng bước, từ việc phân tích codebase .NET Framework 4.8 gốc đến việc hiện đại hóa thành công nó thành phiên bản .NET mới nhất. Hãy chuyển đổi các ứng dụng cũ của bạn ngay bây giờ với khả năng di chuyển và hiện đại hóa của Amazon Q Developer. Amazon Q Developer có thể giải thích và cập nhật các dòng code cụ thể trong môi trường phát triển tích hợp (IDE) của bạn.
Về Các Tác Giả
Ty Augustine
Ty là một Kiến trúc sư giải pháp chuyên gia của Microsoft, chuyên sâu về .NET, SQL Server và Containers. Ty làm việc tại thành phố New York và hợp tác chặt chẽ với nhiều ngành nghề khác nhau để thúc đẩy quá trình di chuyển và hiện đại hóa lên AWS Cloud. Trước khi đến với AWS, Ty từng là kiến trúc sư phần mềm chuyên về Microsoft stack trong hơn 20 năm.
Sylvester Creado
Sylvester Creado là Kiến trúc sư giải pháp chuyên gia của AWS, tập trung vào .NET, SQL Server và Containers. Sylvester làm việc tại Los Angeles, chủ yếu hỗ trợ các khách hàng trong lĩnh vực Truyền thông, Giải trí, Trò chơi và Thể thao. Trước khi gia nhập AWS, Sylvester là kiến trúc sư chuyên về Microsoft stack trong hơn 20 năm.
Pavankumar Kasani
Pavankumar Kasani là Kiến trúc sư giải pháp của AWS làm việc tại thành phố New York. Anh ấy có niềm đam mê giúp đỡ khách hàng thiết kế các giải pháp có khả năng mở rộng, được kiến trúc tốt và hiện đại hóa trên AWS Cloud. Ngoài công việc, anh ấy thích dành thời gian cho gia đình, chơi cricket, bóng bàn và cũng thử nghiệm các công thức nấu ăn mới trong bếp.