仅供参考:这将是我第一次真正涉足Async / Await;很长时间以来,我一直在为熟悉的BackgroundWorker领域做好准备。是时候继续前进了。
我希望构建一个WCF服务,在同一局域网中的远程计算机上运行的Windows服务中自托管,这样做:
我必须支持大到10GB的档案。毋庸置疑,这种情况并未被基本的WCF设计所涵盖;我们必须采取额外措施来满足要求。我们必须在存档构建时消除超时,并在发送时记忆错误。这两种情况都发生在基本的WCF设计下,具体取决于返回文件的大小。
我的计划是继续使用task-based asynchronous WCF calls和streaming mode。
我有两个问题:
对于#2,显然我希望前者(保持活着)。但经过一番搜索,我不容易找到答案。也许你知道。
答案 0 :(得分:2)
您需要为大型有效负载进行流式传输。这是正确的方法。这与异步IO没有任何关系。这两个是独立的。 The client cannot even tell that the server is async internally.
我将添加关于是否使用异步IO的标准答案:
每个请求都在一个保持活动状态的连接上运行。这既适用于流式传输大量数据,也适用于大量初始延迟。不确定为什么你担心路由。你的路由器是否会终止此类连接那是个问题。
关于保持活力,没有什么可以通过电线来做到这一点。 TCP会话可以无限期保持开放,没有任何线路流量。