使用实体转换器的.NET服务负担

时间:2009-11-23 13:30:38

标签: c# wcf web-services entity-framework business-objects

我们有增加的负担来维护EntityTranslator,以便在.NET和WCF应用程序中将业务消息转换为业务消息的服务消息和服务消息。事实上,我不能将它们称为Business对象,因为我们只需要从DB中获取并更新它。我们从设备读取数据并存储到DB,从DB读取数据并存储到设备。

我们所有的类都是简单的.NET类,并没有做任何特定的事情。

这是非常相似的类。

这是我的服务实体。

[DataContract]
public class LogInfoServiceEntity
{
   string data1;
   string name;
}

public class  LogInfo
{
   string data1;
   string name;
}

现在我需要定义翻译器以创建另一侧的实例类型并复制另一侧的数据。我们有大约25个这样的课程,我们觉得很难管理它们。因此,我们有25个企业对服务翻译和25个服务到业务翻译。

我喜欢使用简单的POJO类存储和获取信息,而不是使用所有翻译器。

处理这种情况的最佳方法是什么? 要么 翻译是处理这种情况的最佳方式吗?

3 个答案:

答案 0 :(得分:2)

Automapper可能就是你要找的东西。

答案 1 :(得分:0)

答案是“它取决于”。它完全取决于系统的复杂程度。通常,WCF服务接口应该是粗粒度的,并且不一定要一对一地映射到业务层实体,以防止额外的往返服务器。

例如,WCF界面中的Customer实体可以传达更多信息,甚至不直接与业务层中的Customer实体相关。但是,您还要返回此信息,因为您预测在85%的情况下,客户不仅需要客户数据,还需要在接下来的几分钟内完成所有订单/活动或任何其他补充信息。

这通常需要权衡 - 是否要多或少地返回。

在您的特定情况下,我会坚持使用代码生成:您总是可以编写一个工具来生成业务逻辑实体之外的所有外部接口和转换器。

答案 2 :(得分:0)

这可能是一个愚蠢的问题,但你为什么不

  

使用相同的类   DataContract用于   “商业信息”?

通常情况下,您可以将合同分开,这样您就可以在不影响数据合同的情况下更改业务对象,但是受益 从保持它们分开是什么?