用于多平台开发的WCF OData?
本问题中的OP询问如何使用WCF/OData作为内部数据访问层 响亮的回答似乎是不要这样做。我的立场与OP类似,但有一个问题没有在原始问题中提出。我正在尝试为许多不同的平台开发(本机),但希望尽可能多地保留服务器端的数据和业务逻辑。因此,我将使用iOS/Android/Web(MVC)/桌面应用程序。目前,我有一个带有ORM数据访问层(LLBLGen Pro)的WinForms应用程序 我设想将我的大部分业务/数据访问逻辑(可能仍然使用LLBLGen或其他ORM)移到WCF/OData接口后面。然后使我在不同平台上的所有不同客户端都非常精简(基本上是UI和WCF调用)用于多平台开发的WCF OData?,wcf,architecture,orm,odata,Wcf,Architecture,Orm,Odata,本问题中的OP询问如何使用WCF/OData作为内部数据访问层 响亮的回答似乎是不要这样做。我的立场与OP类似,但有一个问题没有在原始问题中提出。我正在尝试为许多不同的平台开发(本机),但希望尽可能多地保留服务器端的数据和业务逻辑。因此,我将使用iOS/Android/Web(MVC)/桌面应用程序。目前,我有一个带有ORM数据访问层(LLBLGen Pro)的WinForms应用程序 我设想将我的大部分业务/数据访问逻辑(可能仍然使用LLBLGen或其他ORM)移到WCF/OData接口后面
这也是过度设计的吗?我缺少一个更简单的解决方案吗?如果您正在运行多平台开发,那么您可能会发现选择平台无关的通信协议(如HTTP)比使用多个驱动程序和ORM直接访问数据源更为实际。此外,由于OData是一个REST协议,所以在客户端不需要太多:任何可以格式化ODataHTTP请求和解析HTTP响应的东西。但是,有几个方面需要注意:
<>我在你的体系结构中看不到任何问题,或者认为它超出了ODATA是一个标准协议,并且你的概念也符合干原理。p> 我改变了这个问题:为什么您要在每个客户机中实现相同的业务逻辑,从而引入更多可能的bug,并在单个集中的位置修复错误。您的想法使您能够只实现一次安全层
OData是一种跨平台标准,您可以为每个开发平台找到OData库(,)。此外,您可以使用ODataFunctionImports/Service方法和实体级方法,这将简化您的查询。Vagif——感谢您的回复。我可能不清楚——我当然不打算让OData层取代我的SQL数据存储,而是创建一个服务器端中间层,通过OData与各种本机客户机通信,并通过ORM访问数据层。(我实际上需要支持几个不同的数据库,这也是ORM的一部分原因)。关于(1)你的观点肯定是我会考虑的。我的很多应用程序都是CRUD,所以我承认或多或少会直接暴露DB实体。我现在也在仔细研究。我应该补充一点,我最终选择在这个项目中使用ServiceStack.NET。马特·考恩(Matt Cowan)为生成ServiceStack.NET提供了出色的LLBLGen模板库,这对我产生了很大的影响:我也非常关注OData的性能、灵活性和可伸缩性。