首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WCF DataContracts中使用集合/列表

在WCF DataContracts中使用集合/列表
EN

Stack Overflow用户
提问于 2011-03-29 19:58:12
回答 1查看 1.5K关注 0票数 1

我不太了解WCF..。

我想做一个干净的工作,使用DataContracts为客户端的实体服务。设想两个DataContracts“系统”和“建筑物”:“系统”可能有许多“建筑物”,“建筑物”可能有许多“系统”。所以,他们之间有很多种关系。

在服务合同模式中,“系统”有一个“建筑物”属性,即一个集合。“建筑物”也有“系统”的集合。

WCF使用DataSets进行底层数据访问(CRUD的存储过程),我在系统和表示关系的构建之间有一个表。

那么,我如何干净地实现这个场景呢?我希望客户能够在“系统”中获得“建筑物”的简单表示,例如,我可以使用:

代码语言:javascript
复制
system = GetSystem(id);
foreach (Building building in system.Buildings) {
    // do whatever with each buildings...
}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-03-30 06:29:48

我认为这个问题太宽泛,不足以详细讨论,但我可以给你一些提示,让你开始。

  1. 忘记了WCF,构建了数据访问层(DAL)。这应该是一个库,它包含查询数据库和返回强类型对象的代码。这个库可能包含一个名为GetBuildings()的方法,它返回一个Building对象列表。库可以使用DataSets (和其他特定于数据库的类型),但不应该向外部调用方公开DataSets。
  2. 既然有一个库可以从数据库获取数据,就编写WCF服务。服务组件中的代码应该调用DAL,并将该信息转换为要通过web服务边界发送的DataContract对象。不要试图在DataContract对象中表示所有数据--您希望数据包相对较小,所以不要包含不需要的信息。平衡这一点,尽量少做web服务调用。在设计DataContract类时,请考虑客户端应用程序将如何处理数据。
  3. 编写服务客户端组件。这是调用WCF服务并将该信息转化为实体对象的代码。
  4. 最后(也是最值得的一步)是编写客户端应用程序逻辑。现在,关于如何构造客户端代码(我建议使用MVVM),您还需要面对另一个问题。客户端应用程序应该调用Service组件,并使用数据来满足application.

的需求

通过遵循上述四个步骤,您将得到以下结果:

服务访问层:与数据库对话的数据访问层。服务层,它不了解数据库,但能够从数据访问层获取数据;服务客户层,它不了解数据库,但知道如何从服务Layer.

  • Application代码中获取数据,该代码不知道数据库或web服务,但调用服务客户层获取数据,并将数据呈现给用户界面。

每个人都会有不同的做法,但最主要的是通过使用分层架构来分离关注点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5478176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档