1

我正在使用 C# 中的几个 ASP.NET 4、WCF 服务,并且想知道将我的代码与 WCF 结构分离的最佳方法。如果这不是太多的工作,因为客户可能不在乎。

我创建了一个外观层,因此我的 WebForms UI 可以使用简单的简单类型(如字符串、int 和 datetime)与之对话。外观生成并读取 WCF 所需的请求/响应对象。我读取了 Response 对象并将其转换为更简单的 Presentation 对象以供客户端使用。然而,Response 对象返回一些复杂的对象类型,例如包含 OrderItem 的 OrderHistory,它本身包含例如 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));
4

1 回答 1

1

如果您编写一些 DTO 类来将 WCF 中的数据转储到,那么您应该能够使用 AutoMapper 来处理映射。不过,我不确定为什么。是否有任何现实场景,您可以使用此应用程序,将其连接到不同的服务,而不必对客户端代码进行重大更改?

如果答案是否定的,并且您的客户非常依赖相关服务,那么您只是在浪费精力担心它。我保证你的用户不在乎。

于 2011-05-17T12:05:40.857 回答