![]() |
1
3
如果您正在缓存的数据是多个服务所必需的,那么从面向服务的体系结构的角度来看,它似乎不属于您所调用的任何一个服务。 如果正在缓存的数据与任何一个服务都没有真正的关系,但是这两个服务都需要,那么它可能属于它自己的独立服务。您是否考虑将缓存封装到第三个服务中,并执行服务到服务的调用以检索所需的数据?好处包括…
总之,我建议这是最好的方法。唯一的缺点是额外的服务到服务调用开销,但是这肯定比从数据库中读取整个缓存要好。 或者,如果缓存中的数据与调用缓存的两个服务密切相关,即两个服务都添加/更改缓存中的数据等,那么可能应该将两个现有服务组合为一个服务。 如果我说的是有意义的话,那么我所采用的SOA原则是 Service Autonomy . |
![]() |
2
2
如果您的所有服务都是同一应用程序的一部分,那么您似乎没有任何理由不能通过共享对象引用直接共享缓存。最简单的方法是通过静态字段。 如果选择这种方法,需要非常小心的一件事是线程安全。如果通过两个WCF会话同时访问缓存,则必须确保两个会话不会同时更改缓存,从而相互干扰。如果缓存是只读的,那么这样做的需要会减少,但您仍然可能需要同步初始化缓存。 |