2009-12-07 24 views
1

如果我有一個包含2個操作的服務契約,是否有可能擁有隻有其中一種操作的客戶端服務契約(.NET接口)?更一般地說,是否有可能僅在客戶端上使用服務操作的子集,甚至不必爲其他操作(及其相應的數據合同)生成代碼?WCF客戶端的服務操作子集

回答

1

正確的方法是創建一個新的OperationContract,其中只包含您希望公開的方法,然後將該OperationContract綁定到新端點並將該端點公開給您的客戶端。

1

是的,這絕對有可能。既然你提到生成的代碼,我猜你在Visual Studio中使用服務引用。如果是這樣,您可以簡單地編輯生成的接口和類,以省略您希望排除的操作。但是,每次更新客戶端項目中的服務引用時,都需要執行此編輯,因此可能不是您想要採用的方法,除非服務接口預期不會更改。

無論服務可能發生多少次更改,更優雅的方法都會涉及創建您自己的適配器,並使用它與您的所有服務客戶端代碼進行交互。

+1

我有我自己的客戶端代碼生成器(類似於SvcUtil)。在生成服務引用時,我只需添加一個選項以排除服務合同的某些操作。非常感謝你做出如此快速的迴應。 – Nikola 2009-12-07 13:40:54