草庐IT

wcf - 为什么 Tcp 比 http 快?

我和我的经理讨论过,他说tcp比http快,因为tcp工作在比http低的层上。然后我想起了OSIModel我在大学学到的,所以我认为他的意思是因为http在应用程序层工作,而tcp在传输层(低于2层)工作,所以速度更快...所以我的问题是:下层比上层工作得更快是因为在两台计算机之间进行数据传输时需要访问的层较少吗?如果是这样,这意味着当我们使用tcp(即使用WCF)时,通信将从传输层开始=>向下到物理层=>另一台计算机的物理层=>向上到传输层?但是我觉得数据还是需要被应用理解,所以还是要上应用层?提前致谢。 最佳答案 TCP之上总

c# - KeepAlive 与 WCF 和 TCP?

我有一个Windows服务托管一个高级WCF服务,该服务通过TCP(netTCP)与protobuf.net通信,有时还与证书通信。receiveTimeout设置为无限,永远不会因不活动而断开连接。但据我所知,无论如何连接都可能被断开,所以我创建了一个简单的双向keepalive服务方法,客户端每9分钟调用一次以保持连接有效。连接永不中断非常重要。这是正确的方法吗?或者我是否可以因为receiveTimout设置为无限而简单地删除我的keeplive?编辑:WCF服务的当前app.config:http://1drv.ms/1uEVKIt 最佳答案

wcf - 更改 WCF net.tcp 绑定(bind)上的套接字选项

我有一个.net4.0WCF应用程序,它使用net.tcp绑定(bind)并实现了一些服务。我想为该绑定(bind)设置一个TCP套接字选项(ReuseAddress选项。relatedquestion解释了我为什么要这样做)。如果我使用原始套接字,我可以使用Socket.SetSocketOption方法。有没有办法以某种方式从net.tcp绑定(bind)中提取底层原始套接字以更改其选项?或者其他一些方式来设置这个选项? 最佳答案 Amir,感谢您提出的添加ReuseAddress选项的建议。但是,我们需要更好地了解您的具体情况

wcf - 保持 wcf 回调 channel 无限期打开/如果出现故障则从客户端重新连接

我目前正在尝试设置这样的东西:服务器端Windowswcf服务挂起并通过tcp监听来自客户端Windows服务的连接。当收到连接(客户端调用服务的CheckIn方法)时,服务通过OperationContext.Current.GetCallbackChannel获取回调channel此channel连同唯一键一起存储在一个集合中(具体来说,我将回调接口(interface)、channel和键存储在List中,其中每一个都是一个属性)现在应该可以根据所述唯一key将调用传递给该客户端服务这起初有效,但过了一会儿就停止了——我无法再将调用传递给客户。我假设这是因为连接已在内部断开,我正

wcf - WCF 服务如何监听与 IIS 相同的端口?

我可以运行一个Windows服务托管的WCF服务监听http://localhost:80/MyService而IIS在http://localhost:80上提供页面并且两者都有效。但是互联网上的很多地方(比如this和this)都说只有一个进程可以同时监听每个端口。他们错了吗? 最佳答案 HTTP.sysmakesthispossible.来自文章:...becauseWCFandIIS6.0bothusethekernel-modeHTTPstack(HTTP.sys),IIS6.0canshareport80withothe

c# - WCF 性能、延迟和可伸缩性

我正在尝试将F#中的简单异步TCP服务器移植到C#4。服务器接收连接,读取单个请求并在关闭连接之前返回一系列响应。C#4中的异步看起来乏味且容易出错,所以我想我会尝试改用WCF。该服务器不太可能在野外看到1,000个并发请求,因此我认为吞吐量和延迟都值得关注。我用C#编写了一个最小的双工WCFWeb服务和控制台客户端。虽然我使用的是WCF而不是原始套接字,但与原始代码的80行相比,这已经是175行代码。但我更关心性能和可扩展性:WCF的延迟是原来的154倍。WCF的吞吐量降低了54倍。TCP可以轻松处理1,000个并发连接,但WCF只能处理20个。首先,我对所有内容都使用默认设置,所以

wcf - 为什么我不能使用 net.tcp 连接到 WCF 服务,但可以使用 http?

我有一个WCF服务在IIS上运行,带有ServiceHostFactory。它在WSHttpBinding上运行良好,但由于速度和一切都在同一个网络上(没有防火墙),我想使用NetTcpBinding来加快速度。当我尝试这样做时,出现了这个错误:Couldnotconnecttonet.tcp://zzz.xxx.yyy/MyService.svc.Theconnectionattemptlastedforatimespanof00:00:01.0464395.TCPerrorcode10061:Noconnectioncouldbemadebecausethetargetmachin

.net - 如何将基于套接字的客户端与 WCF (net.tcp) 服务一起使用?

我开发了一个使用net.tcp适配器并监听特定端口的WCF服务。我想使用普通的.net客户端连接到该服务,该客户端使用套接字将数据发送到端口并监听响应。当我尝试向该服务发送数据时,出现错误:“现有连接被远程主机强行关闭”。但是,我能够通过使用WCF服务的地址/绑定(bind)/契约(Contract)的另一个客户端连接该服务。有没有一种方法可以让我使用基于套接字的普通客户端与WCF服务进行通信? 最佳答案 关键决定是让WCF服务符合socket客户端还是让socket客户端符合WCF服务。尝试符合WCF服务将是最简单的,而不是尝试在

java - WCF Java 客户端和 IncludeTimestamp

最近我们向Java客户端公开了一项服务。我们的服务利用传输安全以及用户名/密码验证。当尝试调用我们的服务时,客户端收到有关安全header的异常。进一步的研究表明,WCF期望时间戳包含在从客户端传递的SOAPheader中。如果不存在(或差异大于5分钟),它将抛出异常。我们还发现Java客户端没有传递WCF预期的时间戳。我们发现的唯一解决方法是实现CustomBinding并将IncludeTimestamp设置为false。这允许客户端成功调用该服务。今天,在查找WCF安全性最佳实践时,我在MSDN上看到以下内容:SetSecurityBindingElement.IncludeTi

java - Java 工具创建的 WSDL 文件的 WCF 序列化问题

我的团队的任务是让几个内部开发的.NET客户端应用程序连接到一些新的JavaWeb服务。JavaWeb服务是第三方供应商提供的WSDL文件,我们的团队修改/控制的能力有限......这意味着我们可能有权要求我们的供应商对WSDL进行轻微调整,但可能会进行重大更改不可行或难以请求。也就是说,我们正在尝试利用WCF/.NET4.0生成客户端所需的.NET代理类文件。代理客户端类文件生成过程执行没有问题。问题是当我们尝试在客户端应用程序中使用代理类文件时。我已通过网络跟踪工具Fiddler验证原始SOAP消息请求无法通过网络发送到服务器。我在尝试调用有问题的Web服务方法时收到的特定.NET