Я рассматривал возможность перехода к службе на основе сообщений (стиль ServiceStack) и отказу от служб стиля WCF (почти RPC). После использования сервисов в стиле WCF я вижу некоторые недостатки и хочу попробовать другой подход. Меня убивает то, что методы WCF не могут иметь перегрузок, и я понимаю, почему, и я знаю, что есть способы обойти это, но они кажутся мне хакерскими. Где службы, основанные на сообщениях, признают, что все происходит по сети.
Вопрос, который у меня есть, заключается в том, как обрабатывать извлечение данных. ServiceStack (и другие API), похоже, имеют один объект запроса для получения либо одного объекта, либо набора объектов. Этот объект запроса имеет ряд необязательных параметров. Например
public GetInvoiceRequest
{
public int? InvoiceId {get; set;}
public int? AccountId {get; set;}
public DateTime? From {get; set;}
}
public GetInvoiceResponse
{
public List<InvoiceDto> {get;set;}
public ResponseStatus Status {get;set;}
}
Какова стандартная практика для такого рода вещей? Включаете ли вы счета для каждого необязательного параметра? Таким образом, вы получаете счет для идентификатора, затем, если AccountId также установлен, добавьте к нему все счета для этой учетной записи, а если также установлен From, добавьте все счета с определенной даты? Эффективно работающие союзы. Или вы выполняете пересечение этих множеств? Или вы просто соблюдаете первый установленный параметр. Итак, если все параметры установлены, вы возвращаете только Invoice, соответствующий InvoiceId, потому что это первый встречающийся параметр?