Веб-служба WCF вызывает внутреннюю службу сторонней службы

Текущая цель моего проекта - создать единое окно для извлечения всех данных, исходящих от службы или БД. Итак, мы создали решение WCF с использованием шаблона репозитория, который предоставляет методы вызывающим клиентам и внутренне вызывает либо сторонние службы, либо БД для получения данных.

Когда мы получаем данные из стороннего API, данные возвращаются в прокси-классе, и нам приходится иметь дело с БОЛЬШИМ объектом, который имеет много вложенных классов и множество свойств. В этом сценарии, как описано выше, что лучше всего сделать:

  1. Поскольку эти прокси-классы велики для моей ситуации, Используйте прокси-классы по всему проекту и возвращайте прокси-объект.
  2. Создайте локальный бизнес-объект, проанализируйте сторонний бизнес-объект на локальный объект и верните мой локальный объект:

    public class ThirdPartyRepository
        {
            public MyData GetData()
            {
                //Call third party service method
                ThirdPartyProxyClass proxyClass = ThirdPartyServiceReference.GetData();
    
                //Parse object to my object
                MyData data = new MyData() {
                  //Parse properties
                  ID = proxyClass.ID
                };
    
                return data;
            }
        }
    

person user3407041    schedule 11.03.2014    source источник


Ответы (1)


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

http://en.wikipedia.org/wiki/Adapter_pattern

person Oscar    schedule 11.03.2014