首页
学习
活动
专区
工具
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可靠会话编程模型余下两个主题:自定义绑定和对消息传递的强制约束。 一、为自定义绑定的可靠会话进行设置 绑定是一系列绑定元素的有序组合,但是系统绑定为我们提供适应了某种典型通信环境的绑定元素组合方式,可以看成是“套餐”。但是,如果套餐不符合您的胃口,你应该查看菜单点你喜欢的菜肴。自定义绑定给了你最大的自由度

    08

    C# WCF服务

    WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。 WCF是.Net框架中的技术,用来创建面向服务的应用程序,交换不同通信方案里的消息,以及执行服务操作生成的工作流。WCF应用程序由三部分组成 - WCF服务,WCF服务主机和WCF服务客户端。WCF平台有时也被称为服务模型。WCF的基本特征是互操作性。这是微软用于构建面向服务的应用程序的最新技术之一。根据基于消息的通信的概念中,一个HTTP请求可以被均匀地表示,WCF是一个统一的API而不管不同的传输机制。

    02

    [WCF的Binding模型]之三:信道监听器(Channel Listener)

    信道管理器是信道的创建者,一般来说信道栈的中每个信道对应着一个信道管理器。基于不同的消息处理的功能,将我们需要将相应的信道按照一定的顺序能组织起来构成一个信道栈,由于信道本身是由信道管理器创建的,所以信道对应的信道管理器也构成一个信道管理器栈,栈中信道管理器的顺序决定由它所创建信道的顺序。 对于WCF的信道层来说,信道管理器在服务端和客户端扮演着不同的角色,服务端的信道管理器在于监听来自客户端的请求,而客户端的信道仅仅是单纯的创建用于消息发送的信道。因此,客户端的消息管理器又称为信道监听器(Channel

    06

    WCF的Binding模型之五:绑定元素(Binding Element)

    在上面的内容中,先后介绍了信道、信道管理器、信道监听器和信道工厂。从对象的创建来讲,信道管理器是信道的创建者。说的再具体点,客户端的信道通过信道工厂创建,服务端的信道通过信道监听器创建。但是信道工厂和信道监听器又是如果被创建出来的呢? 我们在一开始就已经说过,作为终结点三要素的绑定对象实现了所有的通信细节,并且通过创建信道栈实现了消息的传递。从这一点来说,绑定对象无疑是信道层所有通信对象的最终缔造者,所以信道工厂和信道监听器最终的创建都是靠绑定对象实现的。关于这个创建过程又和另一个重要的对象密切相关,那就

    010

    通过“四大行为”对WCF的扩展[原理篇]

    整个WCF框架由两个基本的层次构成,即服务模型层和信道层。对信道层的扩展主要通过针对绑定的扩展实现,具体来说就是自定义绑定元素,以及相关的信道管理器(信道监听器和信道工厂)、信道来改变对消息的处理和传输方式。 而对于服务模式型层的扩展则主要体现服务端和客户端运行时框架的定制,进而让WCF按照我们希望的方式进行运作。由于整个运行时框架由一系列的可扩展组件构成,并且大部分运行时属性也可以改写,所以针对服务模型层的扩展具体体现在:根据具体的需要定义相应的组件,并以某种情形将这些自定义的组件应用到运行时框架相应的地

    08

    [WCF权限控制]WCF自定义授权体系详解[原理篇]

    到目前为止,我么介绍的授权策略都是围绕着安全主体进行的,基本上都是基于角色的授权。虽然角色是定义权限最为常用的形式,但是它解决不了授权的所有问题。基于角色的授权策略一般是这样的:需要进行访问控制的操作或者资源关联到某个角色上,那么只要访问者被分配了该角色,就被授予了相应的权限。那么假设我们的授权策略是这样的:访问权限和两个角色进行关联,访问者需要同时被分配了这两个角色才能被授权。这是一个很常见的授权策略,但是典型的基于单一角色的授权解决不了这个问题(除非为两个角色的交集创建新的角色)。而这仅仅是一种简单的授

    010

    [WCF权限控制]WCF自定义授权体系详解[原理篇]

    到目前为止,我么介绍的授权策略都是围绕着安全主体进行的,基本上都是基于角色的授权。虽然角色是定义权限最为常用的形式,但是它解决不了授权的所有问题。基于角色的授权策略一般是这样的:需要进行访问控制的操作或者资源关联到某个角色上,那么只要访问者被分配了该角色,就被授予了相应的权限。那么假设我们的授权策略是这样的:访问权限和两个角色进行关联,访问者需要同时被分配了这两个角色才能被授权。这是一个很常见的授权策略,但是典型的基于单一角色的授权解决不了这个问题(除非为两个角色的交集创建新的角色)。而这仅仅是一种简单的授

    010
    领券