Мы реализуем уровень службы запросов / ответов с использованием WCF, где каждый запрос наследуется от базового класса Request, а каждый ответ наследуется от базового класса Response.
Служба имеет единственный метод Process, который принимает запрос и возвращает ответ.
// Messages contract
public abstract class Request {}
public abstract class Response {}
// Operation contract
Response Process(Request request);
Однако некоторые члены нашей команды придерживаются мнения, что вместо того, чтобы контракт операции ожидает и возвращает один запрос / ответ, он должен принимать и возвращать массив запросов / ответов.
// Operation contract
Response[] Process(Request[] requests);
Лично я не считаю его семантически правильным, и в тех случаях, когда требуется одновременная обработка набора связанных запросов (возможно, в пакете), я бы подумал о введении BatchRequest и Сообщения BatchResponse.
public class BatchRequest : Request
{
public Request[] Requests {get;set;}
}
public class BatchResponses : Response
{
public string BatchReference {get; set;} // for example
public Response[] Responses {get;set;}
}
Мне прием и возврат массива не кажутся правильными, и это определенно шаблон, который я нигде не видел. Что-то еще не так? Если да, то что это такое?
Некоторые люди считают, что прием / возврат массивов позволит нам избавиться от лишних сложностей, связанных с введением пакетных запросов (как показано выше), и что вы можете отправить один запрос в массиве в любом случае.
Спасибо