Câu hỏi đặt ra là yêu cầu thông tin về “Công cụ phát triển tốt nhất để nâng cấp từ VB6.0” cho bản nâng cấp VB6/COM phức tạp và thứ hai về C# hoặc VB.NET.
Một hoàn hảo “chuyển đổi” công cụ sẽ giúp bạn đáp ứng được hai mục tiêu quan trọng của tất cả các nâng cấp
- Bảo tồn chức năng
- Lợi dụng .NET một cách rằng sau mã hóa mong muốn của bạn và tiêu chuẩn phụ thuộc nền tảng
vai trò của công cụ trong Bảo tồn năng
Các hệ thống kế thừa lớn, trưởng thành có thể chứa hàng nghìn tệp mã và hàng triệu dòng mã. Nỗ lực cần thiết để mô tả đầy đủ và xác minh chức năng thể hiện trong nhiều mã là rất lớn. Trong thực tế, có thể có rất nhiều công việc chức năng mà một số nhóm có đầu óc kỹ thuật không nhìn thấy nó lúc đầu. Họ dành phần lớn thời gian của họ lo lắng về cách tận dụng lợi thế của các tính năng thiết kế, ngôn ngữ và khuôn khổ .NET mới nhất trước khi họ đánh giá đầy đủ mức độ khó bảo tồn và xác minh chức năng cũ. Nó giống như họ đang đánh cá từ phía sau của một con cá voi chức năng khổng lồ trong khi lo lắng về việc bắt cá ít kỹ thuật.
Đội cố gắng tái tạo một mã núi bằng cách đọc, giải thích và mã hóa thủ công cũng có thể bị mù trong quá trình… Vì vậy, một tính năng quan trọng của bất kỳ công cụ chuyển đổi nào là giúp nhóm đọc, giải thích và viết lại mã trong khi viết lại nó trong một biểu mẫu bảo tồn ngữ nghĩa của nó. Các nhà khoa học máy tính đã nghiên cứu vấn đề đọc hiểu, và viết lại mã nguồn trong hơn 60 năm và giải pháp mà họ đưa ra được gọi là trình biên dịch. Một “trình biến đổi” có hiệu quả hoạt động như một trình biên dịch. VB2 là một ngôn ngữ cấp cao: trình biên dịch VB6 của Microsoft và thời gian chạy của nó đã vô số điều: quản lý suy luận kiểu, chuyển đổi ngầm, ngầm bởi ref, các cuộc gọi bị ràng buộc trễ, xử lý null, xử lý lỗi kiểu goto, thiết kế biểu mẫu, v.v.Một bộ chuyển đổi VB6 cũng phải có khả năng nhận ra và lưu trữ vô số chi tiết nhỏ không rõ ràng trong mã và nó phải có khả năng thể hiện chính xác những chi tiết đó trong .NET. Một công cụ chuyển đổi sức mạnh công nghiệp sẽ có một hệ thống ngôn ngữ kim loại VB6 mạnh mẽ, mở rộng cho phép người dùng kiểm soát cách mã VB6 được nhận ra và diễn giải.
VB6 cũng dễ dàng mở rộng thông qua COM. Có rất nhiều hàng trăm API COM khác nhau đang được sử dụng và không tính tất cả các thành phần nội bộ thường trở thành một phần của các hệ thống doanh nghiệp. Bộ chuyển đổi phải có khả năng nhận ra bất kỳ lớp COM hoặc điều khiển nào được VB6 sử dụng, cả trong thiết kế giao diện người dùng lẫn mã và thể hiện nó bằng cách sử dụng một số .NET API hoặc interop thích hợp khác. Một công cụ tôi biết thậm chí có thể tạo ra một khuôn khổ mã .NET từ thông tin sử dụng COM trong VB6. Một công cụ chuyển đổi sức mạnh công nghiệp sẽ có một hệ thống kiểu COM mạnh mẽ có thể mở rộng và cho phép người dùng kiểm soát cách COM được thay thế trong mã được tạo ra.
Vai trò của công cụ trong Lợi dụng .NET
VB6 và .NET là khác nhau bằng nhiều cách và như vậy là các API khác nhau mà hỗ trợ hai nền tảng. Vì vậy, với các công cụ hoặc không có, sẽ hầu như luôn có một số thiết kế lại được yêu cầu. Hơn nữa, mỗi nhóm mang lại các sở thích, ràng buộc và yêu cầu khác nhau cho dự án của họ: yêu cầu 10 chương trình làm thế nào để mã hóa một cái gì đó và bạn sẽ nhận được ít nhất 10 câu trả lời khác nhau. Trình biến đổi phải giúp nhóm thể hiện các sở thích, ràng buộc và yêu cầu duy nhất của nó. Điều này bao gồm việc cung cấp các phương thức sửa đổi, tự viết mã VB6 trước khi nó được xử lý, sửa đổi mã .NET sau khi nó được tạo ra, tích hợp mã viết tay, mô tả các thay thế API tùy chỉnh, chuyển đổi mã tùy chỉnh và thực hiện nhiều dự án khác biến đổi đặc thù theo yêu cầu.
Đưa nó tất cả cùng nhau
Một nâng cấp lớn hiếm khi được dự đoán đầy đủ và lên kế hoạch trước. Ngay cả với kiến thức sâu rộng về cả mã nguồn và các tiêu chuẩn mã hóa .NET mong muốn, sẽ có nhiều vấn đề và cơ hội xuất hiện trong công việc. Mã nguồn và các yêu cầu phải được phép thay đổi trong suốt quá trình nâng cấp. Điều cần thiết là một phương pháp nhanh nhẹn cho phép nhóm thích ứng với các thay đổi mã nguồn, thử nghiệm với các kỹ thuật mã hóa .NET khác nhau. Một công cụ chuyển đổi sức mạnh công nghiệp sẽ có độ chính xác, độ chính xác, tính linh hoạt và tốc độ để cho phép loại phương pháp này.
Một nhận xét khác về Công cụ chuyển đổi. Công cụ quan trọng nhất mà bạn sẽ sử dụng trong bản nâng cấp .NET là bộ não của bạn. Bạn phải học các ngôn ngữ .NET, các mẫu thiết kế và các khung công tác và áp dụng những gì bạn biết trong nỗ lực nâng cấp của mình. Công cụ tự động tốt nhất không quyết định cho bạn cách viết lại mã của bạn: nó giúp bạn triển khai lại chức năng cũ theo thiết kế mà bạn quyết định có ý nghĩa.
Microsoft đề xuất một số công cụ trong bài viết này. VB6 Upgrade Partner Tools
VB.NET hoặc C#
Khi tôi đề nghị cộng đồng NET (tức là tìm kiếm trên web) để biết thông tin, công cụ, ý tưởng, mã, và giúp đỡ về vấn đề lập trình, tôi nhiều khả năng tìm câu trả lời được thể hiện bằng C# so với VB.NET. Tôi cũng tìm thấy trình biên dịch C# phù hợp hơn với công cụ viết lại nhờ công cụ vì nó yêu cầu mã được tạo ra phải phù hợp hơn và được mô tả rõ ràng hơn. Bắt và giữ xây dựng là một thử nghiệm hơi thô lỗ, nhưng hoàn toàn quan trọng về chất lượng mã và là một mốc quan trọng trong mọi nỗ lực nâng cấp. Hãy nhớ rằng VB.NET không phải là VB6.Điều này nghe có vẻ hiển nhiên, nhưng có thể khó nhớ vì hai ngôn ngữ trông giống nhau. Sự giống nhau này có thể lừa dối; vì vậy IMO nó là tốt hơn để đi đến C# nơi bạn được nhắc nhở rằng các quy tắc là khác nhau. Cuối cùng, C# luôn được và tiếp tục được thiết kế cho .NET; VB.NET không thể nói điều đó.
Tuyên bố từ chối trách nhiệm: Tôi làm việc cho Di chuyển tuyệt vời. Có rất nhiều điều để thảo luận. Vui lòng truy cập Great Migrations Documentation Portal để biết thêm các bài viết và để nhận thử nghiệm gmStudio và thử một công cụ nâng cấp sức mạnh công nghiệp cho chính bạn.
Trước khi bắt tay vào viết lại: có ước tính công ty trước tiên - có thể sử dụng số dòng mã VB6 làm hướng dẫn. Và đảm bảo quản lý của bạn hoàn toàn trên tàu. Và lấy một số giải quyết xung đột đào tạo chỉ trong trường hợp :) Tôi đã bắt đầu xuống đường như thế này và đã đến một số nơi khó chịu. – MarkJ