Phiên bản là một chủ đề phức tạp, vì vậy trước tiên, bạn cần xác định mục tiêu của mình theo cách mô tả hơn. Nó sẽ là tuyệt vời để nói rằng bạn có một giao diện đảm bảo bạn sẽ không bao giờ phá vỡ khả năng tương thích, nhưng tùy thuộc vào những gì các chức năng mới là, mà thậm chí có thể không thể. Vì vậy, có những tình huống khác nhau và sự cân bằng khác nhau.
Nếu mục đích của bạn là chỉ cung cấp chức năng mới cho người tiêu dùng mới và tất cả người tiêu dùng của bạn là người tiêu dùng trực tiếp (không trung gian, khuôn khổ, v.v.) thì cách tiếp cận riêng biệt là lựa chọn tốt nhất. Mỗi lần bạn thêm đối tượng địa lý có nguy cơ bị hỏng, hãy tạo điểm cuối mới, cung cấp cho nó một số phiên bản mới và sau đó cho người tiêu dùng biết để xác thực và thay đổi cấu hình của họ. Chiến lược này là khá cố gắng và đúng sự thật, nhưng nó có những hạn chế của việc đưa gánh nặng lên người tiêu dùng để giữ cho đến nay. Ngoài ra, nếu có sự phụ thuộc giữa các dịch vụ, nó có thể trở thành việc vặt để theo dõi. Mặt khác là nếu mã phá vỡ nó không phải (trực tiếp) lỗi của bạn.
Chiến lược chính khác là giao diện mở rộng. Có ba loại khác nhau ở đây mà tôi biết. Đầu tiên, là loại giao diện cố gắng mô tả tốt tên miền dịch vụ mà mọi tính năng có thể bạn có thể thêm bằng cách nào đó có thể được cung cấp cho giao diện hiện có. Nếu đó là âm thanh khó khăn, nó được. Bạn có thể gọi đây là giao diện hoàn hảo. Mọi thứ đều được mô tả đầy đủ, nhưng toàn bộ miền cũng được mô tả hoàn toàn. Các "hoàn hảo" thực sự chỉ trên giấy mặc dù.
Loại thứ hai là loại trông giống như giao diện bình thường nhưng thêm các điểm mở rộng chung. Trong WSDLs, điều này có nghĩa là xs: any, các cặp giá trị tên hoặc tương tự. Bạn có thể gọi đây là giao diện mở rộng cơ bản. Nó không quá khó để làm, nhưng nó không phải không có biến chứng của nó. Các điểm mở rộng có thể làm cho giao diện trở nên khó khăn hơn trong công cụ nhất định (xs: any), hoặc mất một số khả năng xác nhận đầu vào và đầu ra của bạn (cặp tên-giá trị). Nó cũng khá dễ dàng để lạm dụng những điểm mở rộng trong một cách mà làm cho phiên bản 3 hoặc 4 khá khó sử dụng.
Loại thứ ba là loại chuyển đổi giao diện của bạn thành luồng byte. Bạn có thể gọi những giao diện thần thánh này. Họ không phải là không có lý do của họ, nhưng nếu bạn đang sử dụng một, bạn có thể muốn hỏi tại sao bạn đang sử dụng dịch vụ web ở tất cả. Có lẽ bạn nên suy nghĩ về TCP/IP thô hoặc HTTP GET/POST cơ bản. Nhưng có thể bạn đang chán ngấy với sự phức tạp của WSDL và XSD và bạn chỉ muốn bắt đầu từ đầu nhưng bạn bị ràng buộc với các dịch vụ web vì một lý do cơ sở hạ tầng nào đó. Tuy nhiên, hãy nhận ra rằng khi bạn bắt đầu con đường này, bạn sẽ cần một cách hoàn toàn mới để mô tả cho người tiêu dùng biết cách sử dụng dịch vụ của bạn, và nếu bạn sử dụng XSD cho điều đó ... bạn đã bắt đầu.
Đặt cược tốt nhất của bạn là biết tất cả các tùy chọn này và tiếp cận thiết kế dịch vụ của bạn bằng cách đầu tiên thử "giao diện hoàn hảo", sau đó từ bỏ và thêm các điểm mở rộng chung. Việc cố gắng thiết kế giao diện hoàn hảo sẽ buộc bạn phải học những thứ sẽ làm cho dịch vụ của bạn tốt hơn, không chỉ giao diện của bạn, nhưng nó sẽ mất thời gian, và nếu bạn không giới hạn thời gian đó, sẽ mất mãi mãi.
Một chút ngắn của giao diện thần thực sự, có giao diện trình bao bọc. Nếu hệ thống của bạn có các lớp, bạn cũng muốn giao diện của mình nằm trong các lớp. Khi bạn thay đổi lớp B, bạn chỉ muốn thay đổi lớp B, không phải tất cả các cá thể trong lớp C.
Điều này sẽ chỉ làm việc nếu các dịch vụ web phiên bản mất * chính xác * các cùng một đối số, vì vậy WSDL tương tự sẽ áp dụng. Nếu trong một phiên bản mới yêu cầu bổ sung thuộc tính mới, bạn sẽ làm gì? –