代码之家  ›  专栏  ›  技术社区  ›  AgileJon

构建webapp对象模型的好方法是什么?

  •  1
  • AgileJon  · 技术社区  · 15 年前

    我正在努力寻找一种在我正在开发的webapp中构建我的对象模型/Web服务的好方法。我们有一个共同的问题,不同的页面需要一个标准对象的稍微不同的视图。例如,我们有团队和组织类型,其中一个组织可以有一到多个团队。在一页纸上,我只需要

    class Team {
        long TeamID { get; set; }
        string Name { get; set ;}
        TeamType TeamType { get; set; }
    }
    

    但在另一个页面中,我需要不同的数据投影,例如

    class Team {
        long TeamID { get; set; }
        string Name { get; set ;}
        string OrganizationName { get; set; }
        string TeamPicture { get; set; }
    }
    

    通常情况下,一个对象的投影跨越多个表。我的想法是,查询并传递团队和组织的所有数据,然后只使用页面上需要的部分是不好的。看起来我最终会得到大量不必要的数据被查询并在系统中流动。

    我当前的模型是为每个投影创建单独的类型。我喜欢类型安全,但我遇到的问题是,我有团队、简单团队、团队和组织等类型。我以团队/组织为例,但我发现系统中许多不同类型都存在相同的问题。

    你怎么处理这个?我使用wcf在webapp和后端系统之间传递数据。

    2 回复  |  直到 15 年前
        1
  •  2
  •   tvanfosson    15 年前

    一般来说,我认为按视图建模是一种很好的方法,但在服务的上下文中,我会稍微关注一下这一点。理想情况下,您希望您的服务更一般,我认为这样您就不会得到一个爆炸性的方法,每个视图一个。一般来说,如果这意味着我可以使我的服务更通用,我愿意提供比需要更多的数据。在我的例子中,我有不同类型的客户机(移动和标准Web应用程序),他们通常得到相同的数据,但移动应用程序使用的是减少的子集。在这种情况下,我不提供单独的模型,但移动应用程序只是不使用一些数据。

        2
  •  0
  •   duffymo    15 年前

    我不会将您的对象模型绑定到页面视图。一旦你这样做了,就很难或不可能改变你的页面。这是应该避免的层之间的细微耦合。

    也许可以过滤最终出现在客户机上的数据。数据库中的延迟评估也会有所帮助。