2009-12-17 2 views
0

Я уже давно работаю над API (который несколько раз обертывает веб-сервис), и его функция полностью завершена.Предпочтительный способ конвертировать из Lazy/Delay-load в Eager-load в API?

Первоначально я разработал этот API для ленивых/задержек; что имеет смысл, если вас интересует только небольшое подмножество доступных данных, учитывая задержку, присущую потреблению веб-сервиса. Тем не менее, мне не удалось рассмотреть несколько вариантов использования, когда загрузка потребителя будет намного проще для потребителя API.

Итак, мой вопрос: как бы вы хотели видеть API, который в основном ленивый, выставляют механизм для получения загруженных версий классов?

Я склоняюсь к explicit литых, но что-то вдоль линий Eager.AsEager(SomeDelayLoadingObject) также кажется естественным, если более подробный.

ответ

0

То, что я на самом деле закончил, было создание мелкой копии классов, которые я хотел бы с нетерпением загружать, классы без функционального кода, но со всеми теми же свойствами.

Тогда я определил два неявных броска, от ленивых -> нетерпеливых и нетерпеливых - ленивых. Оба броска скопировали все свойства; тем самым инициируя любую загрузку, если это необходимо.

Хотя я не думаю, что это идеальное решение, он с нетерпением загружает просто меняющиеся типы; никаких изменений кода не требуется.

0

Ваш API-интерфейс - это упаковка веб-сервиса, поэтому ваш API более или менее действует как прокси-сервер. Я бы поставил поведение загрузки на сам прокси или на какой-то контекст прокси, а не на классы.

// Basic: Every operation through the proxy uses Eager loading 
using (var proxy = new ApiProxy(Loading.Eager)) 
{ 
    var result = proxy.DoSomething(); 
} 
Смежные вопросы