2014-01-29 118 views
0

我有一个关于基本HTTP绑定wcf服务的基本问题: 当客户端同步调用wcf服务(basichttpbinding)时,如何在两者之间接收请求和响应?在服务器上的2和端口之间建立的套接字连接是否绑定直到客户端收到响应为止?如何将响应发送回等待的客户端?服务器上的IF端口对于长时间运行的操作是不可用的,那么它是否会阻碍服务能力接受来自其他客户端的请求?另外,如何在通过wcf服务进行异步调用时发生通信?我读了这个通道,因此端口/套接字应该在两端保持打开状态。WCF客户端服务通信

回答

0

使用basichttpbinding,它与浏览器和Web服务器之间的普通http通信非常相似。如果您点击网页上的链接,则来自浏览器的请求会发送到相应的Web服务器,该服务器会处理该请求,并将该内容作为响应返回给等待的浏览器。

这与WCF basicHTTPBinding一样。 WCF客户端向指定的Web服务(http:// webservice:port/ServiceObj/MethodName)发送post或get请求,并等待响应。当Web服务完成收集数据时,数据将在打开的连接上的响应中发送回客户端,然后由主机关闭。没有持续的连接。因此,basichttpbinding是无状态的。一旦Web服务发送响应,连接就会被回收,并且服务已准备好进行下一个请求。

如果客户端完成其通信,它可以明确地关闭其连接;这是最好的。但是如果它没有关闭它的连接,它将不会对主机产生任何影响。

+0

谢谢,我仍然有一个查询,当你说连接被回收的意思。如果在服务器上使用其Web服务端口80来侦听请求。如果有多个客户端向服务器发送请求,并且每个客户端都与服务器有连接,直到收到响应,我们是否在服务器端进行连接?连接只是客户端IP和端口以及服务器IP和端口的组合。服务器端端口和IP相同,所有客户端都连接到服务器上相同的IP和端口组合。那么我回收的连接是什么? – user1855287

+0

回收可能是错误的词,因为这意味着重新使用。根据我的理解,在响应被发送回客户端后,连接在服务器端关闭。 WCF主机可以在主机端运行许多并发连接。如果在给定的时间内有太多的请求进入,请求会自动排入WCF队列,并在系统有机会时处理。 – Brian