代码之家  ›  专栏  ›  技术社区  ›  Chen Kinnrot

FluentHibernate 3层以上应用程序的筛选基础结构

  •  1
  • Chen Kinnrot  · 技术社区  · 15 年前

    我有一个三层的应用程序,需要能够根据用户请求进行数据过滤,我正在与FluentHibernate合作管理我的实体的CRUD。

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

    fn的筛选器类不可序列化。

    有什么解决办法吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jeremy McGee    15 年前

    简而言之:创建一个包含过滤器规范的可序列化对象。对于简单的过滤器,枚举应该做得很好。然后,在您的WCF服务中,将这个过滤器规范映射到应用程序较低层理解的内容。

    nhibernate(和其他对象关系映射器)与数据库检索相关联。对于您的客户机用户界面来说,与持久性系统紧密耦合,并且通过尝试使用NHibernate过滤器对象,您将使用这些对象来实现它们不是为之设计的目的,这是没有意义的。

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

    例如,您可能需要对数据类型进行折衷,以使对象跨服务边界进行序列化。在这里使用不同于在UI和业务逻辑层中使用的对象可以隐藏任何丑陋之处。