SOA, уровень сервиса запроса / ответа, прием и возврат запроса / ответа по сравнению с массивом или запросы / ответы?

Мы реализуем уровень службы запросов / ответов с использованием 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;}
}

Мне прием и возврат массива не кажутся правильными, и это определенно шаблон, который я нигде не видел. Что-то еще не так? Если да, то что это такое?

Некоторые люди считают, что прием / возврат массивов позволит нам избавиться от лишних сложностей, связанных с введением пакетных запросов (как показано выше), и что вы можете отправить один запрос в массиве в любом случае.

Спасибо

8
задан SharePoint Newbie 4 June 2011 в 10:16
поделиться