【发布时间】:2011-05-31 19:07:56
【问题描述】:
我有一个基本的好友列表类型应用程序,它是 WCF 中的 pub/sub 交易。我的问题是一两个调用长时间运行,这会阻塞整个服务器应用程序(gui 更新等)。
这是我的代码:
[ServiceContract(SessionMode = SessionMode.Required,
CallbackContract = typeof(IBuddyListContract))]
public interface IBuddyListPubSubContract
{
[OperationContract]
string GetABunchOfDataZipped(String sessionId); // this can take > 20 seconds
....
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple)]
public class BuddyListPubSubContract : IBuddyListPubSubContract
{
string GetABunchOfDataZipped(String sessionId)
{
// do some calculations and data retrival
return result;
}
}
到目前为止,我对如何去做有一个想法,但有没有更简单的方法?
想法 1:让 GetABunchOfDataZipped(String sessionId) 成为无效,当它完成时,在我命中的双工合同上有另一个端点。我不喜欢这样,因为如果我的架构发生了根本性的变化,并且如果字符串是通过慢速互联网连接的大块文本,它仍然会遇到同样的问题吗?
【问题讨论】:
标签: c# wcf nettcpbinding