2014-10-18 52 views
0

我早先开发了一个公开一组RESTful服务的应用程序。我设计的业务逻辑实现类和相应的存储库类完全无状态,并且每次有客户请求时都会实例化。现在我正在开发另一个应用程序,只有很少的RESTful服务。在这种情况下,其中一个服务会从某些其他外部服务获取数据,并需要将该数据缓存一段时间。我正在考虑将这些数据缓存在我的应用程序数据库中,并通过创建一个新的业务类对象为每个请求提供它。但在这里我有一个疑问 - 这是正确的设计?我应该创建业务逻辑类singleton并维护状态(即缓存数据在内存中)吗?REST风格的服务设计 - 单身服务?

请分享您的想法。

谢谢

+0

为什么你必须首先缓存这个信息'一段时间? – Sebas 2014-10-18 05:02:55

+0

@ Sebas:我们不想经常打电话给外部服务,因为我们知道需要时间来生成这些数据,我们的客户需要非常频繁地使用这些信息。顺便说一句,如果你投下了这个票,你能告诉我为什么吗? – 2014-10-18 13:26:49

回答

0

经过一番文学研究,我得出结论说单身人士课程没有错。 RESTful服务只是外部世界的资源接口,但它们如何管理完全是内部的。此外,我意识到不需要将数据传输对象(即接收请求和发送响应)的端到端映射到数据库列。在很多情况下,我的DTO映射到映射到数据库表的模型对象,但我也设计了不同的三个项目。

0

我会使用web服务器级缓存来代替。在asp.net中,您可以使用缓存对象,由内存或您选择的外部缓存提供程序支持。

+0

感谢您的回复。我将使用OWIN作为Windows服务托管此服务,而我对ASP.Net(及其相关的Cache对象)完全陌生。所以,我不确定我是否可以使用来自ASP.Net的缓存设施,但我会检查。检查我是否遇到过https://github.com/filipw/AspNetWebApi-OutputCache/。它看起来很有希望,但我的问题是我需要缓存一部分响应,但不是整个响应。任何指针? – 2014-10-18 13:40:03