【问题标题】:WCF service to proxy an email service. Stateful?用于代理电子邮件服务的 WCF 服务。有状态的?
【发布时间】:2011-06-26 07:58:50
【问题描述】:

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

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

有人知道如何使用 WCF 服务实现这一点吗?

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

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

谢谢!

【问题讨论】:

    标签: wcf imap


    【解决方案1】:

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

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

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

    资源:

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

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

    【讨论】:

    • 好!这就是我需要的。你知道我是否可以将 Sessions 与 DuplexService 一起使用(我需要它是双工的以向 SL 客户端发送异步消息)?
    • @Matias:我相信是的,你应该可以在会话中使用 wsDualHttpBinding。
    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多