问题标签 [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 投票
4 回答
797 浏览

wcf - WCF ChannelFactory 反对 SOA 原则?

是否共享一个包含 wcf 接口和数据合同的项目,并通过 ChannelFactory 使用这些来使用违反 SOA 原则的服务?

我的架构师建议最好使用添加服务参考生成代理。

0 投票
1 回答
2172 浏览

c# - 通过 NetNamedPipeBinding 连接到 WCF 服务的问题

我无法弄清楚如何让命名管道 WCF 服务正常工作。该服务与可执行文件位于单独的程序集中。

配置如下所示:

我正在使用 ChannelFactory 创建代理来访问服务主机:

我不确定创建 ChannelFactory 时我做错了什么。它似乎在配置中找不到“channel1”。当我手动创建绑定并将其传递给 ChannelFactory 构造函数时,会创建工厂和代理,但对 LoadData() 的调用失败(超时)。

谁能看到我在这里做错了什么?

编辑:我在 app.config 上方进行了编辑,以确保两个端点具有完全相同的数据。这解决了我的 Channelfactory 问题。但是,如上所述对服务方法的调用仍然超时。

0 投票
1 回答
1315 浏览

wcf - WCF 中的通道工厂

大家好,我是 WCF 的新手,我想知道我是否使用通道工厂,如果我对服务合同进行任何更改,这些更改是否会在客户端系统中自动更新???如果更改自动更新如何? ??

0 投票
1 回答
1457 浏览

.net - WCF:不关闭 ChannelFactory 与不断重新创建 ChannelFactory 并关闭它之间的比较

我有一个 WCF 服务,我在我的代码中使用它并生成为 ChannelFactory 类。我知道使用 WCF 的正确方法是创建 ChannelFactory(我们称之为 AwesomeClient),完成工作,然后在其上调用 Close()。这是我的片段:

但是,我希望 DoSomething 会被非常频繁地调用(比如每分钟 10 次?),所以我得到的建议是将 ChannelFactory 实例化为静态实例,并始终重用同一个实例,而不必关闭它(因为这比总是重新创建 ChannelFactory 然后关闭它“便宜”)。

我在这里征求第二意见,谁能告诉我为什么不调用 Close 并重用静态实例是个好主意?或者我应该坚持为每次通话重新创建 ChannelFactory 和 Close() 吗?

0 投票
1 回答
5322 浏览

c# - 如何在没有 ServiceHost 类的情况下使用 WCF 创建简单的 Web 服务器?

我已经开始学习 WCF,并希望通过直接使用通道堆栈创建一个简单的 Web 服务器来了解其内部结构。我在网上找到了很多理论,但我希望看到一个可以使用任何浏览器测试的接收和响应 httprequest 的工作示例代码。我希望通过组装绑定元素一直响应请求来显示自定义绑定的设置。

0 投票
4 回答
42443 浏览

c# - 创建 WCF ChannelFactory

我正在尝试将现有的 .NET Remoting 应用程序转换为 WCF。服务器和客户端共享公共接口,所有对象都是服务器激活的对象。

在 WCF 世界中,这类似于创建每次调用服务并ChannelFactory<T>用于创建代理。我正在为如何正确创建ChannelFactory<T>ASP.NET 客户端而苦苦挣扎。

出于性能原因,我想缓存ChannelFactory<T>对象并在每次调用服务时创建通道。在 .NET 远程处理的日子里,曾经有RemotingConfiguration.GetRegisteredWellknownClientTypes()一种方法可以获取一组客户端对象,然后我可以缓存这些对象。看来,在 WCF 世界中没有这样的事情,尽管我能够从配置文件中获取端点集合。

现在这是我认为可行的方法。我可以创建这样的东西:

ChannelFactory<T>我认为上面的代码会起作用,但如果它不在查找中,我有点担心多个线程试图添加新对象。由于我使用的是.NET 4.0,所以我正在考虑使用ConcurrentDictionary和使用GetOrAdd()方法或TryGetValue()先使用方法检查是否ChannelFactory<T>存在,然后再使用GetOrAdd()方法。不确定性能ConcurrentDictionary.TryGetValue()ConcurrentDictionary.GetOrAdd()方法。

另一个小问题是我是否需要ChannelFactory.Close()在 ASP.NET 应用程序结束后调用通道工厂对象的方法,或者我可以让 .NET 框架自行处理通道工厂对象。通过 using 方法调用服务方法后,代理通道将始终关闭((IChannel)proxy).Close()

0 投票
2 回答
511 浏览

silverlight - Silverlight中如何动态设置wcf服务的服务器名

我需要部署一个 silverlight 4 解决方案,它使用来自 WCF 服务的数据。挑战在于这将是一个生产安装,因此我无法控制服务的服务器名称,并且银灯应用程序不会与 WCF 安装在同一台服务器上。

到目前为止,从这条路开始是我想出的:

我将不得不通过 initParams 将 WCF 的服务器名称传递给我的 silverligth 应用程序。

在我拥有的 aspx 文件中

然后在 app.xaml.cs 中调用参数:

我在应用程序启动中调用了它,因此参数将在整个应用程序的范围内。

现在在主页中,我将此参数分配给一个变量

dswconnection = initParams["servicepoint"];

然后每当我查询服务时,我都会设置地址以覆盖服务 referencenece.config 文件中的默认值

我的问题是......这是最好的方法,还是当您不知道该服务器名称可能是什么时,是否有另一种方法可以动态识别服务的服务器名称。这是我无法使用某些功能来检测 channelfactory 中的主机名或地址的关键点,因为 silverlight 应用程序将驻留在与 WCF 不同的主机上。

现在,传递给 initparams 的值存储在 javascript 读取的配置文件中,然后将其分配为值。在我的代码中,为了简洁起见,我对其进行了硬编码。

感谢您的任何建议。

0 投票
0 回答
1261 浏览

c# - 与 REST 服务内的 REST 服务通信

我使用以下代码与 REST 服务进行通信:

它在简单的测试应用程序中运行良好,但在我的实际应用程序中,我想在我自己的 REST 服务中调用它:如果调用了我的 REST 服务,我的服务应该调用另一个 REST 服务。

事情变得很奇怪。在这种情况下,上面的代码不起作用,因为如果将它放在服务方法中,它会发送 POST 请求而不是 GET 请求,这当然会导致“方法不允许”错误。我的代码中的任何地方都没有属性 WebInvoke。

HTTP请求方式怎么会变?

0 投票
4 回答
7940 浏览

wcf - WCF:如何诊断故障通道?

我正在为我的实验室进行更改,希望能帮助诊断我们看到的一些奇怪的通道故障怪异。有一个测试应用程序使用 DuplexChannelFactory 连接到几个 Windows 服务,由于某种原因,这个测试应用程序上的通道似乎有很多错误。我计划在那里实现一些重试逻辑,但如果能弄清楚它们究竟为什么会出错,那就太好了。

我知道通道工厂和代理对象都实现了很多接口,我已经使用反射器爬过其中的一些,但是我没有找到任何像我要找的东西。有没有办法在这些对象出现故障后查询这些对象,以获取有关导致故障的原因的一些信息?

编辑:配置非常基本——绑定只是默认构造的 NetTcpBinding,服务实现具有[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant)],并且服务合同中的任何操作都没有特殊属性。但是,我更多地询问有关诊断通道故障的一般技术,而不是诊断这种特定情况。我不希望配置细节对此产生太大影响。如果有的话,配置详细信息将是所述诊断返回的内容,对吗?

0 投票
1 回答
1670 浏览

cookies - 使用 ChannelFactory 通过 WCF 发送 Cookie

我使用一个为我提供 IService 的 IOC 容器。在 IService 是 WCF 服务的情况下,它由通道工厂提供当 IService 位于同一台机器上时,它能够访问相同的 cookie,因此没有问题,但是一旦调用 WCF 服务,就需要发送这些 cookie。

我花了很多时间试图找到一种使用通道工厂发送 cookie 的方法,而我能找到的唯一方法是以下

我使用该方法的问题是我必须知道我正在调用 WCF 服务,但情况并非总是如此。我尝试为 ChannelFactory 编写一个包装器,它在创建新服务和各种其他解决方案时打开一个新的 operationcontextscope,但没有任何效果。

有人有通过 WCF 服务发送 cookie 的经验吗?

我找到了一个涉及使用 SilverLight 的解决方案,不幸的是我没有使用 silverlight,解决方案在这里: http: //greenicicleblog.com/2009/10/27/using-the-silverlight-httpclient-in-wcf-and-still -passing-cookies/ 不幸的是标准 .net 不包含 IHttpCookieContainerManager 接口

理想情况下,我可以使用类似的东西,即我可以告诉 channelfactory 在它打开时传递一个 cookie。

如果有人有更好的方法来传递用于身份验证的令牌,那也将不胜感激。