Мне было интересно, лучше ли в WCF использовать несколько контрактов операций или иметь только один контракт операции с контрактом полиморфных данных.
Приведу небольшой пример:
[OperationContract]
action1Answer action1(action1data a);
[OperationContract]
action2Answer action2(action2data a);
or
[OperationContract]
actionAnswer action(actionContract a);
Контракт действия будет абстрактным классом, от которого унаследуются как action1Contract, так и action2Contract. Контракт действия будет указывать функцию-член do()
в своем интерфейсе, которая, в свою очередь, должна быть перегружена в дочерних классах.
Лично мне кажется, что второй подход более интересен, поскольку он позволяет вам красиво инкапсулировать данные и действие в производном actionContract и, в свою очередь, упрощает добавление новых действий. Но я впервые использую WCF, так что, наверное, вам виднее!