Jon*_*way 12 .net wcf soa entity-framework wcf-data-services
好的,我们正在使用实体框架,并希望将这些实体的数据暴露给消费者.这些数据非常常见,虽然最初仅由WPF应用程序使用,但未来可能会被其他技术(如Silverlight,ASP.NET,Office等)使用.
通常,您将构建WCF服务,该服务公开了许多显式方法,以根据使用者的需求返回数据.例如,GetCustomersById(int Id),GetAllCustomers()等.如果您将来需要添加其他方法,这将导致必须重写WCF服务并处理版本问题的开销.您还可以使用DTO返回数据.
因此,我们正在考虑通过WCF数据服务公开实体.这似乎有道理.它通过消除必须构建实现各种接口的显式服务来节省开发工作.如果发生对实体的修改,它还可以保护您不必重写这些接口.
这一切似乎很容易,我相信我们错过了一些东西.这种方法有哪些缺点?此外,如果我们返回实体而不是DTO,我们还会失去什么?
然后有关于您可能还有的更新和删除操作的明显问题.是否值得为这些操作考虑WCF数据服务?
感谢您的任何见解!
我认为你有一个有效的数据服务案例.它们旨在以最适合标准的格式向最终用户公开数据.
话虽如此,反对......
缺点是你基本上给他们免费的统治来查询他们想要的数据.因此,他们可以做愚蠢的事情,并为其他用户造成瓶颈.想想编写一个结合内存和数据库操作的错误LINQ查询是多么容易.
另外,反对使用数据服务和使用传统服务的论点是当你有很多业务逻辑,或者你想传递实体模型之外的数据类型时(你可以在4.0中这样做,但这很痛苦).
最后,在使用数据服务进行插入/删除时,我总是感到不舒服,因为您需要最终用户对数据的存储方式有很多了解.你必须相信他们,而且我已经知道信任通常会回来伤害你.
总而言之,当您不必向最终用户(业务逻辑或管理)强制执行大量"规则"时,数据服务非常棒.