【问题标题】:Should I be using wsHttpBinding or wsDualHttpBinding for methods that return values?对于返回值的方法,我应该使用 wsHttpBinding 还是 wsDualHttpBinding?
【发布时间】:2014-01-05 12:30:41
【问题描述】:

我正在尝试使用 WCF 编写主机/客户端样式系统,我目前想使用 wsHttpBinding,但是当我遇到这条线时,我正在阅读其他内容(isOneWay 布尔值):

'HTTP 不能用于回调,因此不能通过 BasicHttpBinding 或 WSHttpBinding 使用回调'

我的大多数方法都会返回值,例如客户端会调用一个方法,该方法会根据调用的方法从服务器发回特定数据。像这样,在:

public string SayHello(string name)
{
    Console.WriteLine(">>> SayHello has been called");
    return string.Format("Hello, {0}!", name);
}

返回线是否会使其成为回调,所以我必须使用不同的绑定吗?或者只有当客户端向服务器发送“消息”并且服务器发送回“消息”时才进行回调?在我的代码中,它只是调用返回数据的方法,所以它不会被归类为回调,我可以继续使用 wsHttpBinding 吗?谢谢

【问题讨论】:

    标签: c# .net wcf wcf-binding


    【解决方案1】:

    您绝对不需要wsDualHttpBinding 来返回值。 BasicHttpBinding 甚至更好的WSHttpBinding 是您所需要的

    wsDualHttpBinding 用于实际从服务器调用客户端(回调)。它在网络世界中没有被广泛使用,因为它有局限性,并且有更好的选择,比如 WebSockets 和 SignalR

    【讨论】:

    • 啊,谢谢,这样就搞定了。那么它基本上就像一个提示,告诉主机将数据发送给客户端?
    • wsDualHttpBinding?这更像是一种回信的方式。不一定要在客户端调用服务器之后。
    • 您可以将它用于例如通知或类似的东西。
    • 不,wsHttpBinding 就像一个提示,告诉该方法向客户端发送数据,因此它不会是回调。
    • 哦.. 类似的东西。客户端发送一条 http 消息并获得包含结果的响应。但是所有这些都是为您抽象的。您只需调用客户端上的方法并“神奇地”从该方法中获得结果。
    猜你喜欢
    • 1970-01-01
    • 2014-09-26
    • 2012-03-16
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2014-08-31
    相关资源
    最近更新 更多