У меня есть веб-служба с длительным опросом. Последний ответ кешируется. Веб-сервис уведомляет подписчиков о появлении новых данных.
Является ли хорошей практикой возвращать полную копию ответа или данные должны быть переданы всем подписчикам? Или это просто зависит от варианта использования?
На первый взгляд, это похоже на тот случай, когда вам нужно шире взглянуть на использование.
Что предоставляет эта услуга. Это данные только для чтения или служба также отвечает за управление модификациями данных? После того, как вы ответите на этот вопрос, вам будет легче, поэтому посмотрите, как вы должны с этим справиться.
Но правда в том, что служба должна владеть данными, и ни один подписчик данных не должен иметь возможность вмешиваться в результат. Если подписчики должны только читать из данных, это должно быть принудительно, но даже если они хотят изменить данные, делать это непосредственно на самом объекте - действительно плохая практика, особенно / особенно потому, что есть много подписчиков на одни и те же данные.
В конце концов, я считаю, что вам нужно предоставить каждому подписчику глубокую копию данных, и, если это слишком ресурсозатратный, рассмотрите возможность предоставления подписчикам неглубокой копии и предоставления интерфейса для запроса вложенных данных - который также вернет копии данных.
Любые подписчики данных должны передать данные методу, ответственному за сохранение данных, как это service.SaveSomeInformation(responseInformation)
.
TL; DR Не делитесь ссылкой на данные с подписчиками, предоставьте каждому подписчику копию (подмножество) данных.
Удачи
Достоверный источник http://martinfowler.com/eaaCatalog/serviceLayer.html
Определяет границу приложения с уровнем сервисов, который устанавливает набор доступных операций и координирует реакцию приложения на каждую операцию.
а также
.... Он инкапсулирует бизнес-логику приложения, контролирует транзакции и координирует ответы при реализации его операций.
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения