Cách tốt nhất để xử lý việc thêm tham số mới (tùy chọn) vào một hoạt động hiện tại mà không yêu cầu máy khách cập nhật WSDL của họ là gì? Tôi không muốn cập nhật không gian tên để mô tả một phiên bản mới của các hợp đồng dịch vụ, vì điều này sẽ tương thích ngược với các máy khách cũ hơn.Thêm tham số mới vào hoạt động WCF: lựa chọn?
Tôi có nên thêm hoạt động mới có thông số mới làm quá tải không? Hoặc tôi nên thêm tham số vào hoạt động hiện tại?
Đây là hoạt động của tôi:
[OperationContract]
MyResponse GetData();
nó nên là:
[OperationContract]
MyResponse GetData();
[OperationContract]
MyResponse GetData(string filter);
Hoặc đơn giản hơn, chỉ cần thay đổi nó như thế này:
[OperationContract]
MyResponse GetData(string filter);
Lựa chọn thứ hai có vẻ tốt nhất, và theo cuốn sách tham khảo của tôi, "Tác động trên máy khách là không có. Các thông số mới được khởi tạo tới các giá trị mặc định tại dịch vụ. "WCF có khởi tạo giá trị mặc định không? Nếu có, giá trị mặc định là gì? Nếu bạn có giá trị mặc định?
Đó là một thay đổi không phá vỡ. Tôi sẽ xử lý nếu bộ lọc rỗng hoặc rỗng một cách duyên dáng. –
@Mike: Tôi không nghĩ rằng nó không vi phạm - đột nhiên, phương pháp "GetData" của bạn bây giờ mong đợi một tham số không được cung cấp bởi người gọi ban đầu .... –
@marc_s: do tính linh hoạt của WCF lâu tại giá trị có thể là null, một khách hàng không truyền đạt thứ gì đó cho nó sẽ vẫn hoạt động. Đó là lợi thế của việc cho phép phiên bản không khớp trong WCF. –