我必须创建代理IMAP服务的WCF Web服务(以便SL应用程序可以使用它)。
IMAP服务要求首先调用Login(credentials)
方法,以便对IMAP服务器进行身份验证。调用Login
方法后,连接将保持打开状态,并且可以执行其他操作。
有人知道如何通过WCF服务实现这一目标吗?
我想避免的一个解决方案是为每个必须执行的操作登录的代理(因为登录操作通常需要1-2秒)。我每次都必须通过凭证:GetMail(credentials), GetFolders(credentials),
等。
我知道强烈建议WCF服务不是有状态的,但似乎我需要保持每个客户端的IMAP连接状态。我怎么能这样做?
谢谢!
答案 0 :(得分:1)
这是我认为使用WCF会话有意义的极少数情况之一:
Login
方法的第一个调用启动WCF会话Done
或Logout
之类的通话)会终止该会话在WCF中进行会话时,服务器上的服务类会在整个会话期间保留在内存中,即不会不断重新创建,因此您可以将IMAP连接“保持”在服务类中。
资源:
请注意:WCF会话不 ASP.NET会话 - 这两个是完全不同的东西!从一开始就要明确。
另外:只有少数WCF绑定支持会话 - netTcpBinding
,wsHttpBinding
和netNamedPipeBinding
(据我所知)