2009-07-10 66 views
1

我有一个3层应用程序需要能够根据用户请求进行数据过滤,我正在与fluentnhibernate一起管理我的实体的垃圾。过滤3层应用程序流程的基础设施

我的问题是我如何将客户端的过滤器传递给服务器(通过wcf)。

fn的过滤器类不可序列化。

任何解决方案?

+0

删除WPF标记为问题与该技术没有任何关系。 – 2009-07-11 06:18:14

回答

1

简而言之:创建一个包含过滤规范的可序列化的对象。对于简单的过滤器来说,枚举应该没问题。然后,在您的WCF服务中,将此过滤器规范映射到应用程序的较低层理解的内容。 NHibernate(和其他对象关系映射器)与数据库检索绑定在一起。对于你的客户端UI来说,它与你的持久性系统紧密耦合并且试图使用NHibernate的过滤器对象,你将会使用它们来实现他们没有设计的东西。

我见过的一些应用程序有多个层,每个层都有自己的数据类型:一个用于UI,一个用于UI上的验证逻辑,一个用于客户端和服务之间的数据传输,一个用于在服务器上的域名,以及一个用于持久性的域名。这可能看起来极端,但这意味着对象可以正确反映每个特定问题的需求。

例如,您可能需要妥协您的数据类型以使对象在服务边界上序列化。使用UI和业务逻辑层中使用的不同对象可以隐藏任何丑陋。

+0

你不觉得它更好地使用nhibernate的abstarvct restrest吗? – 2009-07-17 17:16:31