2011-06-26 71 views
2

我必须创建一个代理IMAP服务的WCF Web服务(以便它可以被SL应用程序使用)。WCF服务代理电子邮件服务。有状态?

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

有谁知道如何用WCF服务实现这一点?

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

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

谢谢!

回答

1

这是那些比较罕见的情况下,我认为使用WCF会话让人感觉:

  • 你调用IMAP Login方法首先调用启动
  • 任何后续调用将使用一个WCF会话同一会话
  • 一些最后的呼叫(例如像一个DoneLogout)将终止该会话

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

资源:

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

另外:只WCF绑定支持会话了一把 - netTcpBindingwsHttpBindingnetNamedPipeBinding(据我所知)

+0

好!这就是我需要的。 你知道我是否可以使用会话与DuplexService(我需要它是双工发送异步消息到SL客户端)? – Matias

+0

@Matias:我相信是的,你应该可以在会话中使用wsDualHttpBinding。 –