ASP.NET - 将对象传输到WCF时是否需要使用数据传输对象?

时间:2010-08-19 17:54:27

标签: c# wcf

这是非常必要的,还是有任何框架可以帮我完成这项工作? 谢谢

2 个答案:

答案 0 :(得分:0)

要考虑的是WCF数据服务,您可以通过网络访问实体。我不确定这是否符合您的要求或愿望,但这是可能的。如果您正在使用Entity Framework 4(.NET 4),那么通过WCF数据服务公开部分实体模型非常容易。

一些好处

  • 您获得了CRUD功能;
  • 通过XML或JSON向客户端公开的数据;
  • 您可以将CRUD操作锁定到实体级别(例如,将订单暴露给完整的CRUD操作,但只允许读取和更新产品);
  • 利用REST(例如HTTP动词GET,PUT,POST,DELETE);
  • 一致的OData数据格式(AtomPub);
  • 使用查询字符串轻松查询您的数据(不确定是否有人认为这是专家或骗子!);
  • 可能还有一些我忘了

一些否定

  • 您无法访问完整的WS- *功能,因为这是WCF REST;
  • 安全性在这方面有点自负 - 您可以捎带现有网站的安全模型(如表单身份验证),也可以手动插入并从请求标头中读取令牌。 (还有其他关于保护WCF数据服务的博客,所以我可能在这里遗漏了一些项目);
  • 如果您没有使用EF4,那么暴露您的实体以进行插入/更新/删除是更多的工作,因为您必须实现IUpdateable接口。您还必须通过公开IQueryable方法公开您的实体以进行阅读。

所以我不确定这是否是您正在寻找的东西,但也许这是值得考虑的事情。 MSDN上的文档相当不错,而且每个月似乎都会变得更好(4-5个月之前这个版本非常稀疏!)。另外,也可以在线查看OData规范。

WCF数据服务的MSDN - http://msdn.microsoft.com/library/cc668792.aspx OData规范 - http://www.odata.org/ Pablo CibaroPablo Castrodata services team的博客(他们有关于身份验证/授权的系列文章)。

我希望这有帮助!

答案 1 :(得分:0)

你不需要。您只需要使用服务已知的可序列化类型,但它不必是专门用于通信的特殊DTO。 DTO的使用仅仅是应用程序架构的问题。当应用程序和暴露逻辑的复杂性上升时,您会发现DTO是有用的设计功能,但对于简单的应用程序,它只是开销。