实体框架Brainmush Kerfuffle壮观

Loo*_*ofy 5 .net c# wcf entity-framework

我一直在浏览.NET 4中所有新的EF和WCF,用于早期的一个重大项目,我认为我的大脑现在正式变成了污泥.这是自1.1天以来我在.NET中进行的第一次大规模开发工作.像往常一样,一切都需要在昨天完成,所以我正在追赶.

这就是我需要共同努力的结果 - 任何理智检查或指导将不胜感激.该项目本身可以被认为是一个豪华的电子商务系统,有多个客户端,包括基于Web和基于Windows,通过实时数据连接到中央服务器.

在服务器端:

  • 一个WCF服务,使用EF连接到SQL Server数据存储的实现(可能最终会有数百个表和复杂数据库系统的所有其他装备)
  • 用于EF和WCF的基础类必须在属性和类(即字段和记录)级别上可扩展,以用于验证,安全性,高级审计和其他自定义逻辑

在客户端:

  • WCF客户端
  • 底层类与服务器端相同,但某些自定义不存在
  • 在客户端上更新对象时,最好只将修改后的属性发送到服务器
  • 客户端WCF API详细信息可能最终会公开发布,因此敏感的服务器端实现提示不应该通过API泄露,除非绝对不可避免 - 这包括属性和类中的EF属性

一般要求:

  • 网络效率非常重要,因为我们不希望从第一天开始实现高效率 - 我可以预见数据流量和服务器工作量会在几年内呈指数级增长
  • 首先开发数据库,​​因此EF生成的(POCO,C#)类将基于它.不知何故,它们需要在客户端和服务器端都适合EF和WCF,并且具有各种自定义层,但看起来好像是为每个场景自定义编写的

对不起,这是如此开放,但正如我所说,我的大脑完全变成了污泥,我把自己弄糊涂到了我冻结的地步.

有人能指出我如何构建类来完成所有这些的大方向吗?老实说,非常非常感谢.

Joh*_*ais 2

一些提示(排名不分先后):

  • POCO 将是避免数据对象中对 EF 类依赖的方法。
  • 考虑添加一个基于数据传输对象的中间层来应对您传递的“仅修改的属性”(这个要求将是棘手的部分)。这些 DTO 将在服务和客户端之间传递以交换修改
  • 使用无状态通信模型(无 WCF 会话)能够非常轻松地实现负载平衡和故障转移。
  • 在客户端和服务之间共享 POCO,在服务器上使用子类化来添加内部定制信息。

您最终会在服务器端至少得到:

  • 服务合同和 DTO 项目(共享)
  • POCO 项目(共享)
  • WCF服务层的项目
  • 业务逻辑项目(由WCF层调用)