问题标签 [nettcpbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1558 浏览

c# - WCF 中使用非单向方法的竞争条件

我正在设计一个客户端-服务器聊天应用程序(实际上我不是,但让我们假装我是:)),我对我所经历的一些竞争条件感到有些困惑。

假设我有以下代码:

这是绑定配置的摘录:

这当然是某种伪 c#,为了清楚起见,我删除了很多不相关的代码。

现在切入正题:此代码不起作用。当我调用 BroadcastMessage 时,该方法永远不会返回,并且我最终在客户端出现超时。如果我在服务器端进行调试,一切似乎都很好(我完全按照预期从 BroadcastMessage 方法返回,并且我不会阻止任何 ReceiveMessage 单向调用)

以下是修复此代码的两种方法:

  1. 删除 FaultContract 并将 BroadcastMessage 方法声明为 oneway=true
  2. 向所有人广播消息,但最初的发件人

我的第一个猜测是客户端正在等待服务器返回,因此无法处理来自服务器的传入 ReceiveMessage 调用,从而阻塞服务器,但 ReceiveMessage 被声明为单向,并且调试服务器表明它不会阻止对 ReceiveMessage 的任何调用

现在,我的问题:

  • 这是怎么回事?

  • 还有其他方法可以解决这个问题吗?(也许通过调整绑定配置?)

  • 假设我选择了修复 2(即不向发送者广播),如果服务器在我等待自己的 BroadcastMessage 调用完成时调用我的 ReceiveMessage 回调(因为其他人向我发送了消息)会发生什么?

  • 我读过 OneWay 调用并不完全是单向的,服务器仍在等待来自另一端的 HTTP 响应。有这方面的详细信息吗?具体来说,当远程呼叫被阻止时,客户端是否能够响应此类 http 响应?

编辑:服务器端的控制台 .net 3.5,客户端的 Winforms .net 3.5

0 投票
1 回答
1400 浏览

wcf - WCF 的 NetTCPBinding 是否支持 Socks 代理?

我有一个要在公司环境中部署的客户端/服务器 WCF 应用程序。

他们通常不允许直接的 Internet 连接,所以我必须使用他们的 SOCKS 代理。

是否可以通过 socks 代理使用 netTcpBinding 通道?

0 投票
2 回答
5912 浏览

wcf - 具有 netTcpBinding 和证书传输安全性的 WCF

我需要保护使用 netTcpBinding 并直接与基于 Windows 窗体的应用程序连接的 WCF 服务。我只需要在传输层保护它。

我很确定我让它在本地工作,即我可以在本地运行该服务,并与客户端连接到它。

当我尝试设置服务以使其在服务器而不是本地计算机上运行时,我遇到了证书问题。错误日志表明证书必须具有能够进行密钥交换的私钥,并且该进程必须具有对私钥的访问权限。

我正在使用使用 makecert 创建的开发证书。

我必须承认我对使用证书很陌生。有没有人对我如何解决这个问题有任何指示,或者有更好的方法来使用证书向使用 netTcpBinding 的 WCF 服务添加传输安全性?

谢谢。

0 投票
2 回答
2733 浏览

wcf - 连接到 WCF 的匿名客户端

Microsoft 的这篇文章详细介绍了如何使用匿名客户端实现传输安全性

http://msdn.microsoft.com/en-us/library/ms729789.aspx

我想知道是否可以使用netTcpBinding而不是WsHttpBinding并将服务托管为 Windows 服务来实现相同的目标。

0 投票
2 回答
1582 浏览

wcf - WCF 自托管性能

我正在使用 WCF 和 NetTCP 服务编写企业级应用程序。我最初出于好奇选择了 NetTCP,但后来确定它对我来说是最佳选择,因为由于涉及的数据处理量,我可以拥有需要 5 个多小时才能返回结果的调用服务。

我目前产生我的服务的方式是一个多步骤的过程。我有一个配置部分(使用 System.Configuration),它指定了一些默认内容(端口号、连接客户端的服务器名称、是否启用 HTTP 以及 NetTCP 等),并且在下面有一个“服务”集合它。例如,这是一个基本的样子:

基本上这里发生的事情是我的 Windows 服务启动并查看 <services /> 集合中的所有内容,并为每个服务生成一个线程以加快启动时间,每个线程都包含一个 AppDomain 服务真正存在的地方,所以如果服务有某种类型故障它不会使系统停机。

我遇到的“问题”是这个应用程序托管了大约 20 个服务,并且所有服务都需要 15-20 秒才能启动并运行。我做了线程和 AppDomain 部分以将其降低到该值(过去通常需要一分钟,因为每个服务都是按顺序打开的),但在我看来,这实际上可以快得多。

有人有什么建议吗?谷歌必应有大量托管一项服务的示例,但我在现实世界的应用程序中没有找到太多的例子(遗憾的是,“Hello World”对最终用户没有吸引力)。如果您当前通过 Windows 服务和 NetTCP 托管多个服务,您是如何做到的?

0 投票
2 回答
6942 浏览

wcf - 使用 netTcpBinding 在 IIS 7.0 中托管 WCF 服务到底需要做什么?

我已经尝试了一个多星期没有任何成功,使用 netTcpBinding 托管一个非常简单的类似 HelloWorld 的 wcf 服务。

使用http,一切正常。我什至可以从远程机器访问我的服务。但是随着tcp问题出现了。

为了在 WAS 中托管我的服务,我已经执行了所有我应该执行的步骤:

  • .Net 3.0 功能已启用,包括 http 和非 http 激活

  • 我已授予“网络服务”和“IIS_IUSRS”对包含该站点的文件夹的以下权限:

    • 读取和执行
    • 列出文件夹内容
  • 在防火墙中打开了 de 端口 8100 和 8086。

  • 在 IIS 管理器/操作/绑定中设置了以下绑定:

    • http 8100:*
    • net.tcp 8086:*
  • 在 IIS 管理器/管理网站/高级设置中,http 和 net.tcp 协议均已启用。

我最初遇到的问题是我能够通过 http 访问该服务,但是在尝试使用 tcp 时出现以下错误:

“无法分派消息,因为端点地址‘net.tcp://myDomain/HelloWorld.Hello.svc’的服务对协议地址不可用。

我在这个网站上发现了一个帖子,作者有同样的问题,通过重新安装 .net 3.0 功能解决了。所以我试了一下。为了以防万一,我还尝试重新安装 IIS 7.0。现在,情况比开始时还要糟糕。如果我在我的 Web.Config 中使用 tcpBinding 配置一个端点,我什至无法使用 IE 在它的 http 地址访问我的服务!我收到以下消息:

找不到与具有绑定 NetTcpBinding 的端点的方案 net.tcp 匹配的基地址。注册的基地址方案是 [http]。

Web.Config 文件如下:


.svc 文件是这样的:

谁能给我一个关于发生了什么的线索?我真的不知道还能做什么。这是一个真正令人头疼的问题,因为使用 http 绑定不是一种选择。提前致谢。

0 投票
2 回答
7823 浏览

wcf - 没有 Windows 凭据的 netTcpBinding?

我有一个机器控制应用程序,其中我有一台客户端计算机和五个在机器子网上通信的服务器盒。没有域控制器。我想使用netTcpBinding来实现可靠性和事务支持。

当域控制器不存在时,是否可以通过此绑定使用用户名/密码身份验证?我不想使用证书,因为我不想管理 900 台不会连接到办公室 LAN 的计算机(150 台机器)的证书。

0 投票
1 回答
1705 浏览

c# - .net 分布式网格计算迁移,关于库、架构的建议

我有一个c# 多线程蒙特卡罗模拟,应用程序已经结构化,可以将其划分为独立执行的任务,任务控制器执行任务,聚合中间结果,检查收敛(早期终止标准)然后返回最终结果,目前这是使用 ThreadPool 实现的。

我想利用不止一台计算机来帮助计算。我没有使用 IIS 的批准或基础设施(这是不会改变的策略),但我可以使用例如WCF 和 NetTcpBinding端点绑定,我已经测试了这种跨服务器的通信,它具有适当的权限和工作。

首先,我想在其他服务器上有一个主 exe(控制台应用程序)和几个从属服务器作为专用工作人员(这些应该是 exes 吗?还是 windows 服务?),最终我可以让这个设置在数百个工作站上运行(以及作为服务器)在公司空闲时间(或屏幕保护程序处于活动状态时)。

我可以自己写这个,但我必须处理通信,1、2 路?提前终止(中间收敛结果检查)、取消不再需要的任务、部署工作、发现用于部署工作的可用和就绪机器、如果工作站不再空闲则限制/暂停工作?分布式系统中的所有其他内容?

主人(任务控制器)应该知道所有奴隶工人的地址(ip)并告诉他们工作(如果它们可用的话),还是奴隶工人应该只知道主人地址并在他们有能力时请求工作这样做,还是沟通应该双向流动?这将按24 小时制运行,每天启动约 9 次运行,以支持不同的业务区域。

我正在寻找可以提供帮助的.net 网格/分布式库的建议以及一些架构建议。

更新

有没有人使用以下任何一种体验?

或使用来自 .net 的 JavaSpaces、Jini 或找到等效的 .net 技术

谢谢

0 投票
1 回答
1863 浏览

wcf - 是否可以将 netTcpBinding 与 VS 2008 开发服务器一起使用?

是否可以有这样的 WCF 服务配置:

它是否托管在 Visual Studio 2008 附带的 ASP.NET 开发服务器上,还是我必须在 IIS 7 中托管该服务或在托管应用程序/Windows 服务中自行托管它?

感谢您的见解!

0 投票
1 回答
2773 浏览

wcf - netTcpBinding 最快的安全配置是什么?

我正在运行一个 WCF 服务,除其他外,它被用作网站的后端。因为网站和 WCF 服务都运行在同一台机器上,为了性能,我设置了一个 netTcpBinding。

现在的问题是,因为它们存在于同一个盒子上,我真的不关心传输级安全性或消息级加密;截获消息的唯一可能方式是如果有人进入网络服务器本身,如果他们这样做,我已经遇到了更大的问题。

所以我的问题是:当客户端和服务器已经在一个受信任的子系统上时,可以使用什么配置来确保 netTcpBinding 尽可能快?

当然,答案可能是使用“无”的安全性。但在我的特殊情况下,我仍然需要对自定义数据库使用 UserName 身份验证。是否可以将其配置为仍然使用 UserName 身份验证,但不打扰证书或保护端点之间的数据?或者我是否可能需要使用自定义 SOAP 标头实现自定义行为来存储用户名/密码,然后我真的可以将安全设置为“无”?

服务器配置

它使用自定义用户名身份验证 - 基本上每个调用都针对自定义数据库进行身份验证和授权。服务端还使用证书与其客户端进行协商,例如:

客户端配置