Các ứng dụng lai VB6 / .Net hoạt động như thế nào trong Thế giới thực?


11

Tôi đang duy trì một ứng dụng VB6 và chúng tôi đang nghiên cứu cách di chuyển sang .Net Chúng tôi đang xem xét thực hiện điều này dần dần bằng cách triển khai các tính năng mới trong các lớp .Net hiển thị COM và di chuyển chức năng hiện có từ từ. Tôi đã tìm thấy một số ví dụ 'Hello World' hướng dẫn về cách thực hiện việc này và nó hoạt động tốt với Ứng dụng của chúng tôi. Nhưng làm thế nào là hành vi trong thế giới thực của các ứng dụng lai này? Họ có ổn định, duy trì? Đặc biệt chương trình của chúng tôi là nhiều người dùng trên cùng một máy tính sẽ sử dụng nó bằng cách chuyển đổi tài khoản người dùng.

EDIT: Ứng dụng VB6 đọc dữ liệu từ kết nối USB và lưu trữ nó trong cơ sở dữ liệu Access. Người dùng có thể gọi nhiều quan điểm khác nhau về dữ liệu. Dữ liệu được lưu trữ trong một thiết bị phần cứng, do đó, việc đọc các dữ liệu này không gây tử vong.

EDIT ngày 4 tháng 10 năm 2015: Thời gian theo dõi: Chúng tôi vẫn đang trong quá trình thay thế mã VB6 hiện tại từng bước thành .Net. Đầu tiên chúng tôi thực hiện các thói quen truy cập dữ liệu, sau đó là logic kinh doanh và hiện tại một dạng khác được chuyển đổi sang WPF. Chúng tôi thực sự đã kết thúc việc viết lại mọi đoạn mã mà chúng tôi đã chuyển đổi (trong VB.Net), nhưng chúng tôi có thể làm điều đó một cách chậm chạp và đồng thời cải thiện chức năng. Ứng dụng lai đã sống sót khi chuyển sang Windows 8, 8.1 và 10.

EDIT ngày 9 tháng 3 năm 2018: Chúng tôi sẽ phát hành mã được chuyển đổi hoàn toàn vào tháng tới. Ứng dụng lai sẽ được hỗ trợ ít nhất một năm nữa. Nó đang hiển thị chủ yếu các vấn đề trên màn hình độ phân giải cao, nhưng hoạt động tốt. Thành thật mà nói, chúng tôi gặp nhiều vấn đề đau đầu do cài đặt .Net Framework bị hỏng và cài đặt phụ thuộc bị hỏng (SQL Server LocalDb trong số đó) so với chúng tôi có vấn đề tương thích với cơ sở mã VB6 ...


1
Ứng dụng 'di sản' làm gì? một số chi tiết sẽ giúp trả lời câu hỏi của bạn
Tối

Không có "kết nối USB" nào nhiều hơn bạn có "kết nối PCI". Nhiều khả năng bạn có một số thiết bị được kết nối với bus USB và loại thiết bị là điểm quan trọng.
Bob77

Câu trả lời:


5

Tôi đã thành công đáng kinh ngạc khi đưa .NET ra VB6 thông qua giao diện COM. Bằng cách này, ban đầu chúng tôi có thể tái cấu trúc một lượng lớn mã VB6 và thiết lập đường dẫn nâng cấp lên .NET. Chỉ cần lưu ý rằng VB6 thành ngữ không dịch tốt sang C # hoặc thậm chí VB.NET, vì vậy bạn sẽ muốn bước đi cẩn thận.

Một vấn đề chúng tôi gặp phải khá khó chịu là số lượng xây dựng lại quá nhiều mà chúng tôi phải thực hiện do thay đổi giao diện COM công khai. Điều này đã được giảm bớt bởi Visual Make .


Cảm ơn bạn. Bạn có thể vui lòng giải thích thêm về vấn đề mà Visual Make giải quyết được không. Tôi không chắc tôi hiểu.
Dabblernl

@Dabblernl - Visual Make cho phép bạn tạo một dự án, đó là một tập hợp các dự án VB6 và nó sẽ xây dựng chúng theo đúng thứ tự.
ChaosPandion

6

FWIW, theo kinh nghiệm của tôi, nhu cầu nâng cấp ứng dụng VB6 lên .Net cung cấp lý do lý tưởng cho việc viết lại. Trừ khi các lập trình viên ban đầu là những người có tầm nhìn tuyệt vời, các kỹ thuật phổ biến trong VB6 hiếm khi được chuyển hoàn toàn sang .Net.

Một số thú vui bạn sẽ gặp phải:

  1. Bạn sẽ kết thúc với các tham chiếu đến Microsoft.VisualBasic mà bạn thực sự không muốn.
  2. Chúng sẽ là những lỗi khó tìm, ví dụ như chuỗi con VB6 (a, b, c) lặng lẽ hiển thị dưới dạng a.SubString (b, c) và thổi vào mặt bạn vì nó dựa trên 1 trong VB6 và Dựa trên 0 .Net.
  3. Tất cả các chuyển đổi ngầm định dễ mã hóa này sẽ ra khỏi đồ gỗ, thường là trên PC đầu tiên không có "," như là dấu phân cách danh sách và / hoặc "." làm dấu phân cách thập phân.
  4. Các lớp đã chuyển đổi của bạn sẽ không có ẩn dữ liệu mong muốn mà thiết kế lại sẽ mang lại.

HTH


1
Bạn đưa ra một số điểm rất tốt. Đây là một số lý do tại sao việc vượt qua mã ban đầu để cấu trúc lại các thực tiễn xấu là bắt buộc. Lý tưởng nhất là bạn sẽ chắc chắn Option Explicitđược bật và tất cả sự phụ thuộc vào chuyển đổi ngầm ẩn ma thuật được loại bỏ.
ChaosPandion

Cảm ơn đã cổ vũ tôi ;-) Nhưng hiện tại, đó không phải là điều tôi muốn biết. Cơn ác mộng chuyển đổi thực sự vẫn còn đến.
Dabblernl

1
@chaos Đúng rồi. Trong thực tế, tôi bắt đầu với Explicit và khi không còn lỗi nào nữa, tôi đưa nó lên Strict, trong đó nêu rõ nhiều vấn đề hữu ích
smirkingman

1
Tôi đã nghe nói về các đội đi sau mã VB6 với súng phun lửa. Tôi tin rằng lý do điều này xảy ra nhiều hơn cho mã VB6 là vì rất nhiều "nhà phát triển" VB không có kinh nghiệm lập trình khi họ bắt đầu. Chính điều này đã tạo ra vô số các ứng dụng được thiết kế kém và được mã hóa trong thế giới hoang dã để thế hệ chuyên gia này đối phó.
Nó Grunt

1

Nó sẽ hoạt động tốt với bạn, không có gì đặc biệt về việc chuyển đổi người dùng nhanh / nhiều phiên sẽ gây ra cho bạn bất kỳ vấn đề nào.

Về khả năng bảo trì, hãy nhớ rằng VB6 / VB.NET lai chỉ nên là một giải pháp tạm thời: kế hoạch của bạn nên được chuyển hoàn toàn sang VB.NET theo thời gian.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.