0

我们有一个 n 层架构:

- 与数据库通信并处理所有业务逻辑的 WCF 服务。-与 WCF 服务通信的 ASP.NET MVC 网站。

这是从数据库到“吉他”的 html 视图的数据序列化-反序列化的场景:

-Guitar_1 由 linq 生成的类,-Guitar_2 由 WCF 服务公开并由 ASP.NET MVC 网站使用的 DataContract。-Guitar_3 模型传递给视图

当最终用户想要取回吉他时,Guitar_1 被转换为 Guitar_2,然后转换为 Guitar_3。这确实不是问题,但如果最终用户请求吉他列表,那么所有这些过程都会为每把吉他重复(一个循环)。

如果我必须以编程方式处理所有序列化-反序列化的东西,我每层只有一个类。例如,它仍然可以通过在 Linq 类上注释“DataContract”/“DataMember”在 wcf 项目中完成,但是如果我刷新我的数据库模型,我的所有注释都会消失(在 ASP.NET MVC 项目上也是如此,刷新服务参考删除所有添加的代码)。

此外,使用这些自动序列化程序真的更有效率吗?编写序列化器-反序列化器所花费的时间与注释类(DataContract/DataMember)和处理类 Guitar_1 到 Guitar_2 的转换一样多......再加上性能损失(循环和转换)......

你们有什么感想?因为这个,你们中的一些人会像过去一样编码吗?

更新:正如“Abhijit Kadam”所建议的,我在使用 web 服务时使用了部分类,但是,在使用 Linq2SQL 时我找到了一个更好的解决方案:POCO 类。

4

1 回答 1

2

如果主要关注的是框架创建的模型类会自动重新生成,并且您的更改就像此类类上的注释被清除了,那么在这种情况下,您可以使用部分类,请参见此处的信息。如果自动生成的类是 Employee。然后在单独的文件中创建一个部分类 Employee 并在此部分定义中包含要注释的字段。这个阶级不会被消灭和再生。但是,当您编译代码时,生成的 Employee 类将是原始 Employee 类 + 部分定义的 Employee 类的组合。

从 Guitar_1 类转换为 Guitar_2 也是可以的,有时我们必须这样做以满足特定要求。我更喜欢通过网络传输 JSON 数据,例如从 WCF 到 MVC Web,然后浏览器将从 MVC APP 获取 json 数据。然后我使用 jsrender 或 knockout 等框架在客户端(浏览器)上将数据呈现为 HTML。JSON 是可读的、紧凑的并且 javascript 和 javascript 库喜欢 json。

于 2012-06-10T15:20:52.647 回答