2011-08-01 84 views
1

我们正在努力将旧项目改为新技术。我们决定使用EF + WCF + WPF和SOA方法。面向企业应用架构的WPF,WCF和实体框架

经过一番研究,我们决定采用以下结构:

  • EF数据库操作(CRUD) - 服务器
  • DTO数据传输(在这里,我们有2个映射:DTO-EF & EF-DTO)。
  • 业务对象将在客户端上 -
  • 验证将在部分 - 实施WPF界面(IEditableObject,INotifyPropertyChanged的,等等)(DTO-BO & BO-DTO在这里,我们再次将两个映射转换)班客户端,服务器上的一部分。

有人可以告诉我,如果这是一个平均规模的企业应用程序正确的方法,如果不是什么问题。

回答

0

两点意见:

  • 有两个DTO和BO似乎没有必要,你可以到的DTO执行INotifyPropertyChanged和切出的中间人。你还将在这些之上创建ViewModel类,它很快就会变得难以管理。它也容易出现映射错误。

  • 你没有提到使用任何映射库DTO < - > EF副本。考虑使用AutoMapper或ValueInjecter。

+0

我正在使用Automaper。将DTO用作BO是什么意思?把它们放在一个项目中,并在服务器端和客户端引用它们?另外我不知道如何在DTO之上构建ViewModels。你能给我一个例子,一个链接,也许我可以看到如何正确地做到这一点?感谢您的回答。 – Razvan

+0

1)您将返回服务方法中的这些DTO,或者将它们作为参数在客户端从服务代理默认使用。2)对于客户端的每个视图,将有ViewModel具有将这些DTO暴露给该视图并且具有对其采取行动的命令。假设您有客户添加/删除屏幕,您将在EditCustomersViewModel中创建ObservableCollection 并绑定到网格以允许添加/编辑。 – anivas

+0

1)如果你在服务上扩展DTO,接口的实现将不会通过服务引用。2)如果你想要一个更通用的方法......假设一个用于编辑一些表(实体)的通用窗口。我的意思是如果你的数据库中有100个表格,并且你需要一个1对1的窗口来编辑这些表格(实体)......那么在建立一个窗口时,最好使用一个通用的方法(带有列表/细节控件的自动生成窗口) )foreach表。 – Razvan