Мне любопытно узнать, как большинство разработчиков разрабатывают контракты для своих веб-сервисов. Я совершенно новичок в сервисной архитектуре и особенно новичок в WCF.
Короче говоря, я хотел бы выяснить, какой тип объектов вы возвращаете в своих операциях, и возвращает ли каждая операция в вашем сервисе один и тот же объект?
Например, рассмотрим следующее:
В настоящее время все создаваемые мной сервисы наследуются от объекта ServiceBase, который выглядит примерно так:
<pre>
public abstract class AppServiceBase<code><TDto>
: DisposableObjectBase, где TDto: IDto
{
защищенный запрос IAppRequest {get; задавать; }
защищенный IAppResponse <TDto>
Response {get; задавать; }
}
Response
представляет возвращаемый объект, который составляет что-то вроде:
<pre>
public interface IAppResponse<code><TDto>
где TDto: IDto
{
List <TDto>
Data {get; }
ValidationResults ValidationResults {get; }
RequestStatus Status {get; }
}
Следовательно, любая производная служба будет возвращать ответ, состоящий из того же объекта.
Сначала я подумал, что это будет хороший дизайн, так как это заставляет каждую службу отвечать за один объект. По большей части это сработало, но по мере роста моих услуг я стал сомневаться в этом дизайне.
Взять это, например:
У вас есть музыкальный сервис, который вы пишете, и одним из ваших сервисов будет «Альбомы».
Итак, вы пишете базовые операции CRUD, и они почти все возвращают коллекцию AlbumDto.
Что делать, если вы хотите написать операцию, которая возвращает типы альбомов. (LP, Single, EP и т. Д.)
Итак, у вас есть объект AlbumTypesDto. Вы бы создали новый сервис только для этого объекта или ваш сервис Albums возвращал много разных объектов?
Я могу представить сложную услугу с несколькими различными типами возврата, которая будет громоздкой и некачественной, но при этом я создаю совершенно новую услугу, которая, возможно, только из-за одного или двух методов работы службы будет избыточной.
Что ты думаешь?