Развязка WCF через фасад ViewModel ASP.NET - PullRequest
1 голос
/ 17 мая 2011

Я использую несколько служб ASP.NET 4, WCF в C # и хочу узнать, как лучше отделить мой код от структуры WCF.Если это не слишком большая работа, а клиенту, вероятно, все равно.

Я создал фасадный слой, чтобы мой пользовательский интерфейс WebForms мог общаться с ним, используя простые простые типы, такие как string, int и datetime.Фасад генерирует и считывает объекты Request / Response, требуемые WCF.Я читаю объект Response и преобразую его в более простой объект Presentation для использования клиентом.Однако объект Response возвращает некоторые сложные типы объектов, такие как OrderHistory, который содержит OrderItem, который сам по себе содержит, например, DeliveryAddress.

Теперь я должен воссоздать все эти сложные объекты как виды?т.е. OrderPresentation содержит IEnumerable-OrderHistoryView-, который содержит IEnumerable-OrderItemView-, который содержит DeliveryAddressView, или я неверно истолковал это?

Для некоторых более простых объектов я смог использовать AutoMapper, но не уверен, как или нужно ли применять его к вложенным сложным объектам.Может быть, мне не стоит беспокоиться об этом, а просто привязать объекты фасада и презентации к модели WCF?

Помогите, пожалуйста?какие-нибудь хорошие учебные примеры по этому поводу?

Я получаю где-то:

        public static IList<OrderHistoryView> ConvertToOrderHistoryView(this OrderHistory[] orderHistory)
    {
        return Mapper.Map<OrderHistory[], IList<OrderHistoryView>>(orderHistory);
    }

и

            Mapper.CreateMap<OrderHistory, OrderHistoryView>()
            .ForMember(dest => dest.Items, opt => opt.MapFrom(src => src.Items));

1 Ответ

1 голос
/ 17 мая 2011

Если вы напишете несколько классов DTO, в которые будут выгружаться данные из WCF, то вы сможете использовать AutoMapper для обработки сопоставления. Хотя я не совсем уверен, почему. Существует ли какой-либо реалистичный сценарий, в котором вы когда-нибудь сможете взять это приложение, подключить его к другой службе и НЕ вносить значительные изменения в код клиента?

Если ответ отрицательный, и ваш клиент довольно сильно зависит от рассматриваемых услуг, то вы просто тратите энергию, беспокоясь об этом. Я гарантирую, что вашим пользователям все равно.

...