2011-06-28 36 views
6

Chúng tôi có một thành phần nền tảng (viết bằng Java) mà giờ đây sẽ tương thích ngược trong một khoảng thời gian nhất định, ví dụ: 3 năm. Có khả năng nào, việc triển khai tính năng mới hoặc sửa lỗi phải yêu cầu thay đổi giao diện trong nền tảng?Điều gì sẽ làm cho khả năng tương thích ngược không thể?

Một ví dụ cụ thể là, giả sử có một số loại giao diện người nghe được xác định trong nền tảng và mã máy khách sẽ triển khai trình nghe. Sau đó một phương pháp mới có vẻ cần thiết trong người nghe để giới thiệu một tính năng mới, nhưng chúng tôi không thể làm điều đó bởi vì nó sẽ phá vỡ giao diện để một số khách hàng sẽ không thể biên dịch được.

Bạn nên tạo giao diện mới mở rộng giao diện ban đầu bằng phương pháp mới? Khách hàng cần tính năng mới này sẽ triển khai giao diện mới và các mã máy khách khác không cần phải thay đổi. Tất nhiên các lời gọi trong nền tảng bây giờ sẽ kiểm tra kiểu của người nghe, nếu nó là giao diện mới với phương thức mới, thì phương thức mới sẽ được gọi, hoặc không có gì sẽ được thực hiện.

Loại thay đổi này có thể làm cho mã trông không đơn giản, nhưng tôi đoán nó sẽ vẫn hoạt động. Có trường hợp nào thay đổi giao diện trong nền tảng không?

Trả lời

3

Có khả năng, việc triển khai tính năng mới hoặc sửa lỗi phải yêu cầu thay đổi giao diện trong nền tảng không?

Vâng, nếu lỗi này là một tình cờ nghỉ của tính tương thích ngược và nếu bạn đã phát hành nhiều phiên bản (X + 1 ... X + N) của sản phẩm trước khi phát hiện đột phá này. Vì vậy, một phần của khách hàng của bạn phụ thuộc vào phiên bản X cũ hơn, nhưng một phần khác của khách hàng phụ thuộc vào các phiên bản X + 1 ... X + N bị hỏng. Và nếu bạn sửa lỗi này, thì các ứng dụng khách mới hơn (X + 1 ... X + N) sẽ bị hỏng.

Bạn nên tạo giao diện mới mở rộng giao diện ban đầu bằng phương pháp mới?

Có thể, nhưng có thể bạn sẽ gặp sự cố khi đặt tên cho các giao diện này và với việc biên soạn tài liệu. Tôi khuyên bạn nên trì hoãn các tính năng như vậy và ngắt API mỗi 3 năm với việc cung cấp giải thích chi tiết về cách thay đổi khách hàng cũ.

Tất nhiên, các lời gọi trong nền tảng sẽ kiểm tra kiểu của người nghe, nếu đó là giao diện mới với phương pháp mới, thì phương thức mới sẽ được gọi hoặc không có gì sẽ được thực hiện.

Có 3 loại tương thích ngược: nhị phân (chạy khách hàng cũ), nguồn (biên dịch lại của khách hàng cũ) và hành vi. Nếu bạn cần thêm một phương thức mới vào giao diện, thì bạn chỉ có thể phá vỡ tính tương thích nguồn nhưng vẫn giữ khả năng tương thích nhị phân bằng cách kiểm tra phiên bản giao diện đã dùng (chuỗi cuối cùng VERSION = "N") và gọi phương thức mới chỉ cho các phiên bản tương thích. Vì vậy, nếu một số khách hàng cũ cần một tính năng mới, thì nó sẽ được thay đổi và biên dịch lại.

Các vấn đề liên quan