首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何根据 if 条件以编程方式声明不同的 WCF 绑定类型?

这是一个关于如何根据条件以编程方式声明不同的WCF绑定类型的问题。WCF(Windows Communication Foundation)是一个微软推出的通信框架,用于构建面向服务的应用程序。绑定类型是WCF中的一种配置,用于将数据绑定到服务端。

在WCF中,绑定类型可以分为两大类:基本绑定类型和自绑定类型。基本绑定类型包括:SOAP、HTTP、TCP、UDP、Msmq等,自绑定类型则包括:NetTcp、NetNamedPipe、NetTcpSecurity等。

要声明不同的绑定类型,可以使用ServiceBehaviorAttribute特性来指定。例如,如果您想将服务公开为TCP端口,可以使用以下代码:

代码语言:csharp
复制
using System.ServiceModel;

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class MyService : IMyService
{
    // ...
}

这里,InstanceContextMode指定了实例的上下文模式,ConcurrencyMode指定了并发模式。

然后,您可以在ServiceEndpoint中指定要使用的绑定类型。例如,如果您想将服务公开为TCP端口,可以使用以下代码:

代码语言:csharp
复制
using System.ServiceModel;
using System.ServiceModel.Channels;

[ServiceEndpoint(Binding = BindingDirection.InOut, Contract = "IMyService")]
public class MyServiceEndpoint : IMyServiceEndpoint
{
    public ChannelFactory<IMyService> ChannelFactory { get; set; }
}

这里,Binding属性指定了要使用的绑定类型,Contract属性指定了服务的协定名称。

最后,您可以在ChannelFactory中指定要使用的绑定类型。例如,如果您想将服务公开为TCP端口,可以使用以下代码:

代码语言:csharp
复制
using System.ServiceModel.Channels;

public class MyServiceChannelFactory : ChannelFactory<IMyService>
{
    public MyServiceChannelFactory(BindingContext context)
        : base(context)
    {
    }

    protected override System.ServiceModel.Channels.ChannelFactory<IMyService> CreateChannelFactory<TChannel>(BindingContext context)
    {
        return new MyServiceChannelFactory(context);
    }
}

这里,BindingContext对象包含了当前绑定的信息,可以使用它来创建自定义的绑定。

以上就是使用编程方式声明不同绑定类型的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使命必达: 深入剖析WCF可靠会话(上)

但是,WCF并不能依赖于可靠会话被显式地被终止,而设定一个超时时限,在该时间范围内如何没有活动消息交换,WCF会将可靠会话关闭。...可以根据计算往返时间来调整第一次尝试重新传输时间,因此这些尝试所经历时间将会相应地发生变化。这样,可以使重新传输时间动态地适应不断变化网络条件。...由于基于请求/回复模式HTTP传输不能够独立提供对双工通信支持,WCF采用是双通道方式。...我们可以通过编程方式开启或者关闭终结点使用除WSDualHttpBinding之外其他系统绑定(限于支持可靠会话系统绑定可靠会话开关,以及设置InactivityTimeout和Ordered...但是,如果套餐不符合您胃口,你应该查看菜单点你喜欢菜肴。自定义绑定给了你最大自由度,是能能够根据具体通信环境自由组合需要绑定元素。关于如何为自定义绑定可靠会话进行设置,敬请关注《下篇》。

73160

WCF技术剖析》博文系列汇总

[第11篇] 异步操作在WCF应用[上篇][下篇] 按照操作执行所需资源类型,我们可以将操作分为CPU绑定型(CPU Bound)操作和I/O绑定型(I/O Bound)操作。...所以WCF序列化(Serialization)解决就是如何将数据从对象表现形式转变成XML表现形式,确保数据正常交换。...[第21篇] WCF基本异常处理模式[上篇][中篇][下篇] 由于WCF采用.NET托管语言(C#和NET)作为其主要编程语言,注定了基于WCF编程方式不可能很复杂。...WSDLBinding元素来源于终结点绑定对象,那么这些基于Binding元数据以及相应策略断言是如何被写入WSDL呢?...元数据发布,针对这两种不同协议,元数据获取实现方式也是不同,本片文章中通过自己方式进行元数据获取,可以看成是对WCF客户端元数据框架模拟。

1.4K100
  • WCF技术剖析(卷2)》目录

    WCF事务编程 3.4.1. 通过服务契约决定事务流转策略 3.4.2. 通过绑定实施事务流转 3.4.3. 通过服务(操作)行为控制事务 3.4.4....WCF同步上下文与线程亲和性 4.3. 流量限制(Throttling) 4.3.1. 如何进行限流控制? 4.3.2. WCF限流控制是如何实现?...Windows用户组授权与认证关系 8.2.2. Windows用户组授权编程 8.2.3. 实例演示:基于Windows用户组声明式授权(S801) 8.2.4....ASP.NET Roles授权与认证无关性 8.3.3. ASP.NET Roles授权 编程 8.3.4. 实例演示:不同认证方式ASP.ENT Roles授权 8.3.5....通过定义四种行为对WCF扩展 9.3.1. WCF四种类型行为 9.3.2. 行为方法执行 9.3.3. 实例演示:通过扩展确保语言文化一致性(S901) 9.4.

    1.3K90

    WCF技术剖析(卷1)之前言

    当然,对于基于WCF编程介绍,对于任何一本WCF专著是必需,《WCF技术剖析》也不例外,只是和哪些完全介绍WCF编程不同是,相关内容仅仅只占所有内容一半左右。...在本章中,我们会谈到基于不同网络协议地址之间差异,以及如何在服务寄宿和服务调用时候通过代码或者配置方式设定终结点地址。...本章涉及内容还包括:如何为数据契约序列化器设定已知类型(KnownType),以及已知类型在序列化和反序列化过程中所起重要作用;如何定义基于范型数据契约和集合数据契约;等价数据契约在WCF消息交换中意义...通过本章介绍,你将对这两种服务调用方式具有一个全面的认识,本章还将深入剖析ClientBase和ChannelFactory这两个重要类型。...我们还会根据PetShop,介绍如何通过WCF扩展实现与微软开源开发框架企业库集成,比如通过与Unity继承将DI容器引入WCF应用服务实例创建;通过与EHAB(Exception Handling

    1K100

    WCF绑定模型》博文系列汇总

    WCF是所有的这些通信技术集大成者,它充分地整合了所有这些使用于不同领域、不同场景通信技术,提供了一个统一编程模型。...[第2篇] 信道与信道栈(Channel and Channel Stack) WCF采用基于消息交换通信方式,而绑定则实现了所有的通信细节。...绑定通过创建信道栈实现了消息编码与传输,以及对WS-*协议实现。WCF绑定模型涉及多种类型组件,比如信道、信道监听器、信道工厂等等。...组成信道栈单个信道对象基于对某项单一功能实现,在不同环境中,我们需要根据具体需要创建相应信道,并根据一定顺序把这些信道组成一个完整信道栈。...对于绑定对象来说,如何实现这种灵活、自由信道常创建方式,这得益于基于绑定元素设计模式。

    514100

    WCF学习笔记 2

    在学习WCFABCB之前,我们先创建一个NetNamedPipeBinding绑定方式服务。...理解契约式编程 契约合同能保障双方利益,对客户来说,合同规定了供应者要做工作;对供应者来说,合同说明了如果约定条件不满足,供应者没有义务一定要完成规定任务。该道理同样也适用于软件....所以,契约式编程编程一种方法。 ?...引入契约观念之后,这种Client 与 Server 关系被打破,大家都是平等,你需要我正确提供服务,那么你必须满足我提出条件,否则我没有义务“排除万难”地保证完成任务。...WCF服务契约 服务契约描述了暴露给外部类型、以及所支持操作、使用消息交换模式和消息格式。每个WCF服务必须实现至少一个服务契约。

    39820

    使命必达: 深入剖析WCF可靠会话

    WS-RM定义了一种消息传输协议(Messaging Protocol),实现在可靠消息传输过程中对消息识别、追踪和管理。并在此基础上,定义了SOAP绑定实现了互操作。...下篇将关注点聚焦到单个消息上,看看在整个基于序列上下文中进行不同类型消息具有怎样结构… 阅读全文 【编程篇-上】 在《实例篇》给出例子中,我们实际上是通过对终结点绑定进行相应配置让整个消息交换过程在一个可靠会话中进行...本篇文章主要为你讲述基于绑定可靠会话编程… 阅读全文 【编程篇-下】 整个可靠会话机制是完全在信道层实现,而整个信道层最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行。...《上篇》对实现可靠会话绑定元素已经如何使用系统绑定实现可靠会话进行了介绍,下篇将和你探讨WCF可靠会话编程模型余下两个主题:自定义绑定和对消息传递强制约束… 阅读全文 【原理篇-上】 可靠会话编程仅仅围绕着一个对象...绑定是由一系列绑定元素有序组合,不同保定元素具有各自目的,而实现可靠会话是一个叫做ReliableSessionBindingElement绑定元素… 阅读全文 【原理篇-下】 上面一部分我们站在信道层角度剖析了

    58360

    WCF传输安全(Transfer Security)基本概念和原理:认证(Authentication)

    WCF是一个消息作为通信手段分布式编程平台,使我们可以将某些可复用功能以服务方式进行定义,并最终部署于分布式网络环境中某个节点,供潜在服务消费者调用。...如何服务端将接收到消息当成是正常转账请求,后果可想而知; 敏感信息泄漏:消息往往中包含一些敏感信息,比如信用卡号、身份证号等,如何这些消息明文方式在网络中被传输,被网络拦截工具捕获后很自然地会被恶意黑客看到...认证方能够根据本认证方提供身份证识别对方真实身份,必须满足三个条件:其一,被认证人声称是身份证上注明那个人;其二,身份证持有者就是身份证拥有者;其三,身份证本身是合法有效,即使通过公安机关颁发...上述三个条件本质上也反映了,能够基于用户凭证认证过程中凭证本身应该具有的属性,以及凭证和本认证人关系,即:凭证与声明一致性,被认证人对凭证拥有性,以及凭证合法性。...为了简单,我们不妨简称为用户凭证三个属性。用户凭证类型决定了认证方式WCF支持一系列不同类型用户凭证,满足不同认证需求。

    85690

    WCF学习笔记 5

    WCF宿主环境ServiceHost 服务通过 ServiceHost 进行寄宿。可以添加终结暴露可被调用寻址和调用资源。...ServiceHost 类型和基类 ServiceHostBase 中定义了几个 AddServiceEndpoint 方法重载实现不同方式添加终结点: public abstract class ServiceHostBase...终结点在WCF编程接口中通过 ServiceEndpoint 类型表示,ServiceEndpoint 具有分别代表终结点地址、绑定和契约三个核心属性: namespace System.ServiceModel.Description...WCF 在进行基地址行和相对地址匹配时,就会根据终结绑定类型从基地址列表中获取与传输协议前缀相匹配地址。...契约Behavior和操作Behavior被定义成了特性对应应用在类或接口和方法上。 服务Behavior既可以采用声明方式应用也可以采用配置方式应用。

    71920

    默认终结点

    很多WCF初学者是从之前Web服务上转移过来,他们非常怀念.asmx Web服务无配置服务寄宿方式。...但是对于WCF来说,在进行服务寄宿时候,你必须编程或者配置方式为服务添加至少一个终结点,而终结点需要具备基本ABC三要素。...对于最新版本WCF编程人员来说,你也可以采用无配置服务寄宿了,这主要得益于WCF提供默认终结点机制。...所谓默认终结点,顾名思义,就是在你尚未为寄宿服务添加任何终结点时候,WCF会自动根据服务基地址(Base Address)为你创建一个或者多个默认终结点。...对于自动创建终结点,其地址和服务契约分别来源于指定基地址和服务实现契约,那么采用绑定又是如何确定呢? 一、默认终结点绑定如何确定

    77560

    WCF技术我们应该如何以正确方式去学习掌握

    由于WCF技术知识点太多了,就纯基础概念性知识都可以单独出一本书来讲解,本次分享课程《C#面向服务编程技术WCF从入门到实战演练》开课之前,阿笨还是希望从没了解过WCF技术童鞋们提前先了解一下WCF技术...二、WCF技术绑定协议(Binding)那么多,那我该如何去学习?...阿笨回答就是:"取其精华"+"抽丝剥茧",千万不要"囫囵吞枣",最终导致“因噎废食”,这里阿笨给出建议是学习下面几种绑定: 1)、BasicHttpBinding: 最简单绑定类型,通常用于 Web...三、C# WCF如何通过优雅方式进行统一入口调用 采用WCF服务代理工厂(WCFServiceProxyFactory),通过服统一入口给我们调用者提供服务吧。...五、实战演练之C# WCF如何通过优雅方式进行统一入口调用) 客户端调用WCF服务可以通过添加服务引用方式添加,这种方式使用起来比较简单,适合小项目使用。

    46320

    C# WCF服务

    根据基于消息通信概念中,一个HTTP请求可以被均匀地表示,WCF是一个统一API而不管不同传输机制。...简单归结为四大部分 网络服务协议,即用什么网络协议开放客户端接入。 业务服务协议,即声明服务提供哪些业务。 数据类型声明,即对客户端与服务器端通信数据部分进行一致化。 传输安全性相关定义。...通信双方沟通方式,由合约来订定。通信双方所遵循通信方法,由协议绑定来订定。通信期间安全性,由双方约定安全性层次来订定。 3:WCF有什么优势 1:互操作性。...WCF服务提供增强可靠性和安全性,WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,用于用户认证,数据完整性验证,数据隐私等多种安全因素...绑定WCF支持多种类型,如 basicHttpBinding,WSDualHttpBinding,WSHttpBinding等绑定,而Web服务仅支持SOAP或XML。

    91520

    WCF学习笔记 1

    WCF为.Net Framework提供了一个基础,使其能够编写代码,在组件、应用程序、系统之间进行通信。 WCF设计遵循是面向服务原则。 服务是指可以通过消息与之进行交互一段代码。...数据契约:服务中参数; 消息契约:使用SOAP协议特定消息部分; 服务契约:服务中方法; 策略与绑定:策略设置安全或其他条件绑定指定传输方式与编码。...消息传递层由通道(信道)组成,通道是对消息进行处理组件,负责一致方式对消息进行整理和传送。通道用于传输层、协议层、及消息获取。各层次通道组成了信道栈。...终结点包括一个定义消息可以发送到目的地位置(地址); 一个描述消息应如何发送通信机制规范(绑定); 以及对于可以在该位置发送或接收(或两者皆可)一组消息定义(服务协定)—该定义还描述了可以发送何种消息...当客户端添加WCF服务引用时候,会首先通过元数据取得服务器端契约信息、终结点信息,然后根据这些信息在客户端创建了代理类,我们在客户端调用WCF服务过程实际上就是通过代理类调用WCF服务过程。

    92340

    WCF之旅(1):创建一个简单WCF程序

    为了使读者对基于WCF编程模型有一个直观映像,我将带领读者一步一步地创建一个完整WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用基本结构。...WCF广泛采用基于自定义特性(Custom Attribtue)声明编程模式,我们通过在接口上应用System.ServiceModel.ServiceContractAttribute特性将一个接口定义成服务契约...在上面的代码中,在创建ChannelFactory时候再在构造函数中指定终结点相关要素(契约通过范型类型表示,地址和绑定则通过参数指定)。...,现在我们来演示如何WCF服务寄宿到IIS中。...Web.config所有配置内容如下所示,可以看出,这基本上和上面通过自我寄宿方式定义配置一致。唯一不同是在添加终结点中无须指定地址,因为.svc所在地址就是服务地址。

    66021

    使用自定义行为扩展 WCF

    您可以通过编写能以声明方式应用到服务中自定义行为来使用这些扩展点。本月将为您介绍这一流程工作原理。...WCF 可扩展性 在上期专栏中,我重点介绍了 WCF 绑定概念,您可以为 WCF 服务上各个终结点指定绑定绑定控制该终结点消息传递详细信息(发生在网络上情况)。...参数检查器 在 Lookup 方法自身中实现邮政编码 + 4 验证逻辑并不困难,但是,如果结果是接受邮政编码大量操作,最好是将验证逻辑作为能够声明方式应用到任意操作 IParameterInspector...每个类型都允许在不同作用域应用扩展(请参见图 8)。每种行为类型也是通过不同接口定义来模拟,但它们都共用一组相同方法(请参见图 9)。...自定义绑定元素能够访问这些绑定参数,并可以对自定义绑定元素进行设计查找这些参数(关于自定义绑定详细信息,请参阅我在 2007 年 7 月一期WCF 深度绑定”专栏,网址是:msdn.microsoft.com

    1.8K70

    WCF技术剖析(卷1)之目录

    构建一个简单WCF应用            步骤一:构建整个解决方案            步骤二:创建服务契约            步骤三:创建服务            步骤四:通过自我寄宿方式寄宿服务...)            3.1.3  案例演示3-1:如何直接通过绑定进行消息通信            3.1.4  WCF绑定模型        3.2  绑定编程           ...是CLR类型与厂商无关服务描述适配器        4.2  服务契约编程接口            4.2.1  ServiceContractAttribute与OperationContractAttribute...  WCF客户端是如何进行服务调用            8.1.5  案例演示8-2:创建一个托管应用模拟最简单WCF框架     8.2  ChannelFactory和DuplexChannelFactory...会话简介            9.4.2  WCF会话编程模型            9.4.3  会话(Per-Session)实例上下文模式        9.5  会话模式、绑定与实例上下文模式

    95490

    WCF技术剖析之八:ClientBase中对ChannelFactory缓存机制

    WCF采用基于终结点(Endpoint)服务消费方式WCF服务通过一个或者多个终结点暴露给潜在服务消费者,服务消费中通过与之匹配终结点与之交互。...在客户端,我们具有两种典型服务代理创建方式,其一是通过诸如SvcUtil.exe这样工具导入服务元数据生成相应服务代理(一个继承自ClientBase类型)代码和相关配置;其二是直接通过相应终结点信息...在本例中,先后相同方式(调用相同构造函数,传入相同参数)创建并开启了两个CalculatorClient对象,然后检验它们ChannelFactory是否是相同对象。...三、如何有效利用ChannelFactory缓存机制 为了能够充分利用ChannelFactory缓存机制,获得更好服务调用性能,我们可以得出以下两个最佳实践: 避免通过人为指定绑定对象创建...WCF技术剖析之十:调用WCF服务客户端应该如何进行异常处理 WCF技术剖析之十一:异步操作在WCF应用(上篇) WCF技术剖析之十一:异步操作在WCF应用(下篇) WCF技术剖析之十二:数据契约

    945110

    WCF系列教程之WCF服务配置

    文本参考自:http://www.cnblogs.com/wangweimutou/p/4365260.html 简介:WCF作为分布式开发基础框架,在定义服务以及消费服务客户端时可以通过配置文件方式...当然WCF也提供硬编程方式,通过在代码中直接设置相关对象属性来完成服务端与客户端配置,然而这种方式并不利于后期程序更改和扩展。...(2)、binding:设置与终结点通信通信方式,通信方式分为两种,一种是系统提供绑定类型,另一种是用户自定义绑定类型。...客户端只需要根据Web Service地址,便可获取服务相关信息,反序列话本地代码,通过服务代理进行服务调用。WCF服务主要特性之一就是跨平台服务交互。...绑定信息可能很复杂,也可能很简单,一般来说绑定包含的如何连接到终结点信息属于以下类别中一种: (1)、协议:确定使用安全机制,可靠消息传递或事务上下文流设置 (2)、编码:确定消息编码(文本或者二进制

    1.4K60

    使命必达: 深入剖析WCF可靠会话(下)

    《上篇》对实现可靠会话绑定元素已经如何使用系统绑定实现可靠会话进行了介绍,下篇将和你探讨WCF可靠会话编程模型余下两个主题:自定义绑定和对消息传递强制约束。...但是,如果套餐不符合您胃口,你应该查看菜单点你喜欢菜肴。自定义绑定给了你最大自由度,是能能够根据具体通信环境自由组合需要绑定元素。...虽然我们可以通过编程方式之间将创建ReliableSessionBindingElement对象添加到绑定绑定元素集合中,但是我们还是强烈建议你通过配置方式来对可靠会话相关选项进行定制。...如果你认真阅读过《WCF技术剖析(卷1)》第3章,你会知道消息编码绑定元素并不参与信道创建,而是将编码方式传入绑定上下文,传输信道据此采用相应编码方式进行消息编码或者解码。...我们说WCF可靠会话编程完全就是围绕着绑定进行,可以说得更加具体点,是围绕着ReliableSessionBindingElement进行

    56780
    领券