Sự thật là chia nhỏ dịch vụ WCF - hoặc bất kỳ dịch vụ nào là hành động cân bằng.Nguyên tắc là bạn muốn giữ áp lực giảm về độ phức tạp trong khi vẫn xem xét hiệu suất.
Bạn càng tạo ra nhiều dịch vụ hơn, bạn càng phải viết nhiều cấu hình hơn. Ngoài ra, bạn sẽ tăng số lượng lớp proxy mà bạn cần tạo và duy trì ở phía máy khách.
Đặt quá nhiều ServiceContracts trên một dịch vụ sẽ tăng thời gian cần thiết để tạo và sử dụng proxy. Nhưng, nếu bạn chỉ kết thúc với một hoặc hai hoạt động trên một hợp đồng, bạn sẽ có thêm phức tạp cho hệ thống với rất ít để đạt được. Đây không phải là một toa thuốc khoa học, nhưng một nguyên tắc nhỏ có thể nói về 10-20 OperationContracts trên ServiceContract.
Khớp nối lớp học tất nhiên là một sự cân nhắc, nhưng bạn có thực sự xử lý các mối quan tâm riêng biệt không? Nó phụ thuộc vào những gì hệ thống của bạn làm, nhưng hầu hết các hệ thống chỉ đối phó với một vài lĩnh vực quan tâm, vì vậy việc chia nhỏ mọi thứ có thể không thực sự làm giảm sự ghép nối của lớp.
Một điều khác cần nhớ và điều này cực kỳ quan trọng là luôn luôn làm cho các phương pháp của bạn trở nên chung chung nhất có thể. WCF giao dịch trong DataContracts vì một lý do. DataContracts có nghĩa là bạn có thể gửi bất kỳ đối tượng nào đến và đi từ máy chủ, miễn là DataContracts được biết đến.
Vì vậy, ví dụ, bạn có thể có 3 OperationContracts:
[OperationContract]
Person GetPerson(string id);
[OperationContract]
Dog GetDog(string id);
[OperationContract]
Cat GetCat(string id);
Nhưng, quá lâu vì đây là tất cả các loại nổi tiếng, bạn có thể hợp nhất các trong một hoạt động như:
[OperationContract]
IDatabaseRecord GetDatabaseRecord(string recordTypeName, string id);
Cuối cùng, đây là điều quan trọng nhất cần xem xét khi thiết kế các hợp đồng dịch vụ. Điều này áp dụng cho REST nếu bạn đang sử dụng một serialization DataContract như phương pháp serialization.
Cuối cùng, quay lại Dịch vụ của bạnViệc liên tục vài tháng một lần và xóa các hoạt động không được khách hàng sử dụng. Đây là một cái khác lớn!
Nếu sử dụng các tệp lớp/giao diện một phần để tránh xung đột hợp nhất, điều gì về đối số "sẽ không mở rộng tốt"? Nó có nghĩa là gì về mặt kỹ thuật? – Askolein
@Askolein ... Nó có nghĩa là nếu bạn có quá nhiều nhồi vào một hợp đồng duy nhất nó có thể trở thành một nút cổ chai hiệu suất cũng như một nhức đầu bảo trì/mở rộng. –
cảm ơn câu trả lời của bạn, nhưng câu hỏi của tôi là nhiều hơn "tại sao" nó có thể là một vấn đề hiệu suất chứ không phải "cái gì" là một vấn đề hiệu suất. Bạn nói "nút cổ chai": Tôi hiểu rằng trong ISS/WCF, mỗi yêu cầu web là một cá thể Dịch vụ mới. Nhiều yêu cầu trên một dịch vụ lớn duy nhất sẽ vẫn là nhiều phiên bản, không phải là một phiên bản phục vụ tất cả chúng. Vì vậy, không có vấn đề mở rộng quy mô. Đây có phải là lý do đúng không? – Askolein