8

我正在使用 Service Stack 的框架开发一个 Rest API。所有层都是分开的,因此我们可以为业务逻辑层单元测试制作 DAL 模拟。

我正在使用控制反转配置缓存:

container.Register<ICacheClient>(new MemoryCacheClient());

Where是一个用几个方法MemoryCacheClient实现的简单类。ICacheClient

这里有一个问题:通过这种控制反转包含对缓存的调用的最佳层是什么?

  • 它可能在 BLL 中,但它不会给单元测试带来问题吗?

  • 它可能在 DAL 中,知道我将不得不失去 IOC?而且,在这种情况下,我将依赖网络服务器的缓存,这可能是错误的。

  • 它可能在 Web 界面中,知道我可以在这里有一些逻辑,甚至失去一些功能?

  • 它可能在 Web 界面和 BLL 之间,创建一个新层?

我搜索了很多并阅读了一些文章,但没有幸运:

谢谢

4

1 回答 1

6

您的缓存不需要位于任一层。您可以通过在装饰方法中包装将利用缓存的调用并在 IoC 容器中配置缓存装饰器的使用,将其保持在业务逻辑和数据访问逻辑之外。

我没有专门使用 ServiceStack 完成此操作,但该模式有据可查:

于 2013-03-11T19:33:55.413 回答