Можно ли из вашего реального опыта определить контракт на обслуживание одним методом, который будет принимать какой-либо объект как форму запроса и возвращать какой-либо другой объект в результате этого запроса. Я имею в виду, что вместо того, чтобы иметь метод для создания, удаления, редактирования и поиска клиентов, я бы включил эти действия в DataContracts, и что бы служба сделала после получения такого DataContract, было бы предпринять соответствующие действия. Но интерфейс сервиса был бы прост:
interface ISomeService
{
IMessageResult Process(IMessageRequest msg);
}
Таким образом, IMessageRequest должен был бы подать с именем OperationType = OperationTypes.CreateCustomer, а остальные поля предоставили бы службе достаточно информации, чтобы она могла создать объект или запись Customer в базе данных или что-то еще. И IMessageResult может иметь поле с некоторым кодом для указания, был ли клиент создан или нет.
То, что я пытаюсь достичь с помощью такой конструкции, - это возможность легко делегировать IMessageRequest другим внутренним службам, о которых клиентская сторона даже не знает. Еще одно преимущество, которое я вижу, заключается в том, что если нам придется добавить какую-либо операцию для клиентов, мы обеспечим только дополнительный DataContract для этой операции и не будем ничего менять на стороне интерфейса службы (я хочу избежать этого любой ценой, я имею в виду не новую операции, но с изменением интерфейса службы:)
Итак, что вы думаете? Это хороший способ обработки сложных бизнес-процессов? Что такое питфалы, что может быть лучше.
Если я продублировал какую-то другую ветку и есть ответы на мой вопрос, пожалуйста, предоставьте мне ссылки, потому что я их не нашел.