在WCF服务之间共享会话

Aru*_*run 8 wcf

我一直致力于拆分Web应用程序的应用层和Web层.在应用层中,我设法将业务逻辑分离为使用WCF代理公开的一堆服务.问题是这些服务与另一个使用大型CLR对象作为其主要通信方式的遗留应用程序进行通信.为了保持快速,我在第一次创建对象后,一直在会话中保留此对象的副本.现在我知道WCF可以进行会话,但是会话存储是按服务进行的,而我的业务逻辑现在被分成多个服务(应该是这样).

现在的问题是:

  1. 有没有办法在同一主机上托管的WCF服务之间共享会话存储?
  2. 这甚至是我应该做的事情吗?
  3. 如果没有,那么这里的最佳做法是什么?

这可能不是第一次有人在服务器上拥有大型业务对象.不幸的是,我确实需要为每个用户缓存此对象(因此会话).

答案很明显,我只是没有看到它.请帮忙!

Ric*_*ich 0

如果您希望能够将应用程序分散到整个农场中,那么将事物分解为子服务似乎是一个好主意。然而,重要的是要记住,每当一个对象至少跨越应用程序域边界时,它就必须被复制到内存中。

这完全取决于对象有多大以及它保存的数据类型。

如果您不想传递该对象,因为它太大,您可能需要为接收该对象的服务创建一个查询 API。通过这种方式,您可以操作该对象,而无需进行昂贵的序列化或远程处理。