我正在努力决定在我正在开发的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; }
}
对象的投影通常跨越多个表。我的想法是,查询并传递团队和组织的所有数据然后只使用我在页面上需要的部分是不好的。看起来我最终会在系统中查询和流动大量不必要的数据。
我目前的模型是为每个投影创建单独的类型。我喜欢类型安全,但我遇到的问题是我有Team,SimpleTeam,TeamAndOrganization等类型。我使用团队/组织作为示例,但我发现同样的问题有很多不同我系统中的类型。
你怎么处理这个?我使用WCF在webapp和后端系统之间传递数据。
答案 0 :(得分:2)
虽然我认为每次观看模型都是很好的方法,但在服务环境中我会对此有点关注。理想情况下,您希望您的服务更加通用,我认为这样您就不会获得大量方法,每个视图一个。一般来说,如果这意味着我可以使我的服务更加通用,我愿意提供比必要更多的数据。在我的情况下,我有不同类型的客户端(移动与标准网络应用程序),他们通常获得相同的数据,但移动应用程序使用减少的子集。在这种情况下,我不提供单独的模型,但移动应用程序只是不使用某些数据。
答案 1 :(得分:0)
我不会将您的对象模型绑定到页面视图。一旦你这样做,很难或不可能改变你的页面。这是层之间的微妙耦合,应该避免。
也许可以过滤最终在客户端的数据。来自数据库的懒惰评估也可以提供帮助。