问题标签 [channelfactory]

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 投票
3 回答
1082 浏览

c# - 与单个请求相关的创建/关闭什么:ChannelFactory 或创建的 Channel?

我正在重构一个通过 wcf 进行进程间通信的大型程序。由于客户端可以直接访问服务接口,因此使用通道工厂来创建通道,因此不需要额外的客户端服务存根。通信包含许多高频请求的大消息(当前使用 NetTcpBinding,我正在考虑切换到 NetNamedPipeBinding)。

我的问题是关于创建/关闭频道与创建/关闭频道工厂之间的区别。更准确地说:channelfactory 创建了一个通道。现在,关于单个请求:我应该创建和关闭 channelfactory 以及与单个请求相关的通道(参见解决方案 2)还是仅创建/在性能方面更安全/更好?关闭与单个请求相关的通道,并使通道工厂为多个请求打开(参见解决方案 1)。

1)

2)

有什么实际区别?正确的方法是什么?还有更好的选择吗?

0 投票
1 回答
3338 浏览

wcf - ChannelFactory 的性能与使用 Svcutil 的预生成代理相比

Svcutil 生成的代理是否比运行时使用的 ChannelFactory 提供更好的性能?ChannelFactory 是否默认缓存代理?

我将 .NET 4 与一项服务一起使用,该服务有 100 多个操作和 500 多个数据合约参与其中。

当我使用ChannelFactory<T>时,需要很长时间才能将代理返回给我。有人可以建议哪种方法是创建代理的最佳方式吗?

我的代码如下所示:

0 投票
1 回答
2854 浏览

wcf - WCF ChannelFactory 没有准确报告故障状态?

我正在使用 ChannelFactory 打开/管理 WCF 通道(与客户端代理相比)。但是,当发生异常时,工厂状态不会报告通道发生故障...

IContract.DoWork() 看起来像:

我本来希望工厂状态在 catch(...) 块中返回 CommunicationState.Faulted。

最后,我正在寻找一种在使用 ChannelFactory 与 ClientProxy 时准确获取通道状态的方法,因为我想尽可能保留会话状态;如果合法的 FaultContact<ExceptionDetail> 出现,则不要循环整个会话...

当引发合法的 FaultContact<ExceptionDetail> 时,通道仍然有效并且我可以继续按预期使用它。但是,当引发非 FaultContract<ExceptionDetail> 时,通道不可用,应循环使用。但是,在这两种情况下 .State 属性都返回 CommunicationState.Open 所以没有一个很好的方法来判断通道是否应该循环......

一旦抛出非故障合同,即使 .State 属性顽固地报告通道处于打开状态,未来通过通道的调用也会引发“通道发生故障”错误。

提前感谢任何输入/想法/指针/想法,

0 投票
1 回答
1463 浏览

channelfactory - 使用 WebHttpBinding 的 ChannelFactory 在执行 ServiceContract OperationContract 时始终 POST

我有一个通过 WebServiceHost 托管的服务,我需要将一些调用委托给网络上的其他 REST 服务。

我构建了一个 ClientBase 具体类来处理这个问题。流程如下所示:

http://localhost:8000/users/my@email.com -> 我的 WebServiceHost 实例 -> ClientBase -> REST 服务

一切都运行良好,直到我意识到来自 ClientBase 的所有调用都使用 POST 作为动词。为了确保我没有对 ClientBase 做任何愚蠢的事情,我手动构建了一个 ChannelFactory 并使用它。不走运,无论 ClientBase、ChannelFactory 甚至 ServiceContract 装饰如何,每个调用仍然使用 POST。

然后我开始隔离代码,并意识到当原始调用不是来自我的 WebServiceHost 正在处理的请求中时,我的简单 ChannelFactory 工作。

这是一个蒸馏的 Program.cs,它展示了确切的问题,来自 Program.Main 的 MakeGetCall() 按预期工作,但来自 MyService.GetUser 的调用将始终 POST:

0 投票
2 回答
2880 浏览

performance - Azure Servicebus 中继性能

我正在使用带有 nettcprelaybinding 的服务总线。一方面是与服务总线有持续连接的 OnPremise 服务器。另一端是一个 Azure Web 角色,它通过打开相应的服务总线并从服务器获取信息来响应传入的 Web 请求。

我关心的是频道创建的性能。通过服务总线与本地服务器建立新连接需要几秒钟。缓存我的 ChannelFactory 似乎没有多大帮助。通道开通后的传输性能非常好。

关于如何提高性能的任何建议。Azure 中的缓存信息只能在一定程度上完成。我需要连接到本地服务器。

我可以以某种方式建立到服务总线的连接池吗?

更重要的是,有许多不同的本地服务器,因此它不仅仅是一个保持活动的连接。

0 投票
1 回答
729 浏览

asp.net - WCF 客户端代理,ASP.Net 中的客户端/通道缓存 - 代码审查

长时间 ASP.Net 界面开发人员被要求学习 WCF,正在寻找更多与架构相关的领域的教育——因为它不是我的强项,但我不得不处理。

在我们当前的 ASMX 世界中,我们采用了创建 ServiceManager 静态类的模型来与 Web 服务交互。我们开始迁移到 WCF,尝试遵循相同的模型。起初我正在处理性能问题,但我进行了一些调整,现在我们运行顺利,但我质疑我的策略。这是我们正在做的简化版本(删除了错误处理、缓存、对象操作等):

我们现在运行顺利,往返调用在 100 毫秒范围内完成。创建 PreloadContentServiceClient() 方法并添加到我们的 global.asax 使“第一次调用”性能下降到相同的水平。您可能想知道我们正在使用 DataContractSerializer 和“添加服务引用”方法。

我已经阅读了大量关于静态类、单例、共享数据契约程序集、如何使用 ChannelFactory 模式以及我可以对我们的使用模型做的一大堆其他事情......诚然,其中一些已经过去了我的头。而且,就像我说的,我们似乎进展顺利。不过,我知道我没有看到大局。有人能告诉我关于通道池、代理故障等方面的结果,以及为什么我应该走 ChannelFactory 路径吗?我的直觉告诉我去​​做,但我的脑袋无法理解为什么......

谢谢!

0 投票
2 回答
491 浏览

wcf - 如何使用 Silverlight 实现 ChannelFactory 和 WCF 程序集共享?

首选的 WCF 实现是程序集共享和 ChannelFactory - 合同的单个实例意味着任何服务更改只需要在一个地方进行,没有更新或维护的代理等。

我想用 Silverlight 实现 ChannelFactory。我已经受够了 RIA 域服务等。

我的 Silverlight 应用程序只能引用 Silverlight 程序集——这很公平。所以我把ServiceContract接口放在一个 Silverlight 程序集中,并从我的服务器和客户端引用它。

问题是当我去运行我的服务器(在这种情况下是 IIS 托管)时,我得到

无法加载文件或程序集“System.ServiceModel,Version=2.0.5.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

包含 的 Silverlight 程序集是使用与我的服务器使用ServiceContract的版本不同的版本System.ServiceModel(即 .NET 4.0)构建的。我怎样才能使这项工作?

0 投票
1 回答
2189 浏览

c# - WCF ChannelFactory 和 OperationBehavior

我有如下服务合同

问题是是否调用

是否会在调用之前隐式添加 MyCustomBehavior,仅通过我将 IService 传递给 ChannelFactory 还是需要更深入地挖掘并将 MyCustomBehavior 显式设置为 MyOperation 操作?

0 投票
1 回答
11521 浏览

java - java.lang.NoClassDefFoundError: org/jboss/netty/channel/ChannelFactory

我正在用 Netty 和 ant 制作一个应用程序。当我编译它时,没有错误。但是当我尝试运行 jar 文件时,它会收到以下消息:

这是我的 build.xml 我的项目:

这些是 netty 库的罐子:

任何人都可以帮助我吗?

谢谢。

0 投票
1 回答
1603 浏览

.net - 扩展 WCF 通道以在失败时自动重新创建(/重新连接)自身

我很难使用 NetTcpBinding 和超时。我知道这可以通过在每个服务调用周围编写 Try-Catch-block 来解决,并且在失败时使用 ChannelFactory 创建一个新通道并再次进行相同的调用。唯一的问题是,有数百个地方我不得不做这个丑陋的措施。

我知道必须有更好的解决方案。不幸的是,继承不是我的情况。方面会起作用,但在.net中没有对它们的真正支持..

我想知道是否可以扩展 WCF(通道模型?),如果抛出超时异常,通道会自动重新生成(或它尝试重新连接)并再次进行相同的调用。都在幕后。