代理电子邮件服务的WCF服务。有状态?

时间:2011-06-26 07:58:50

标签: wcf imap

我必须创建代理IMAP服务的WCF Web服务(以便SL应用程序可以使用它)。

IMAP服务要求首先调用Login(credentials)方法,以便对IMAP服务器进行身份验证。调用Login方法后,连接将保持打开状态,并且可以执行其他操作。

有人知道如何通过WCF服务实现这一目标吗?

我想避免的一个解决方案是为每个必须执行的操作登录的代理(因为登录操作通常需要1-2秒)。我每次都必须通过凭证:GetMail(credentials), GetFolders(credentials),等。

我知道强烈建议WCF服务不是有状态的,但似乎我需要保持每个客户端的IMAP连接状态。我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是我认为使用WCF会话有意义的极少数情况之一:

  • 调用IMAP Login方法的第一个调用启动WCF会话
  • 任何后续通话都将使用相同的会话
  • 某些最终通话(例如DoneLogout之类的通话)会终止该会话

在WCF中进行会话时,服务器上的服务类会在整个会话期间保留在内存中,即不会不断重新创建,因此您可以将IMAP连接“保持”在服务类中。

资源:

请注意:WCF会话 ASP.NET会话 - 这两个是完全不同的东西!从一开始就要明确。

另外:只有少数WCF绑定支持会话 - netTcpBindingwsHttpBindingnetNamedPipeBinding(据我所知)