为非数据库应用程序创建RESTful OData API

时间:2017-07-05 02:14:35

标签: .net rest odata restful-architecture

我有一个现有的大型桌面C#应用程序,我想公开一些数据(主要用于其他本地应用程序,但也可能是网络或云应用程序),理想情况下是可查询/可过滤的REST格式,如OData。 (我喜欢客户能够轻松进行LINQ查询的想法。)

但是,我想提供的数据是持久业务对象和非持久状态对象(如计时器,计数器和其他统计信息)的混合。它使用自定义持久性,而不是数据库。

我可以为OData或其他实际RESTful系统(那些执行HATEOS并且不仅仅是伪装的RPC)找到的大多数示例似乎都假设后面有一个数据库,这不是这里的情况。或者类似WebAPI的东西,它只为您提供最小的HTTP路由,并要求您手动实现查询等。

(即使应用程序确实将数据库用于持久对象,但这对尝试呈现非持久对象没有帮助。)

我认识到我可能不得不在应用程序的“真实”对象模型和暴露给REST服务的模型之间放置某种转换层(因为某些属性存储在不同的地方或不同的地方)格式内部),但我不知道如何将其与REST框架集成。

有些属性会非常频繁地更新,而其他属性很少,所以我想像ETag和Last-Modified这样的东西才能正常工作,但尝试维护两个对象树似乎很难看。 (虽然根据API的需求重新同步也似乎有点难看,而且我不确定哪个更糟糕。)

(.NET OData库似乎需要实体框架,而实体框架似乎需要一个数据库,而不仅仅是一个对象树。)

有没有办法让这个工作正常,或者是否足够复杂以至于使用WebAPI并从头开始构建所有内容实际上是唯一的选择?

0 个答案:

没有答案