当前位置:首页 » 行业资讯 » 周边资讯 » 正文

WCF全面支持HTTPS加密通信

WCF全面支持HTTPS加密通信

一、引言

随着信息技术的快速发展,网络安全问题日益受到关注。

为了保护数据传输的安全性和隐私,越来越多的应用和服务开始采用HTTPS加密通信。

WCF(Windows Communication Foundation)作为Microsoft开发的服务端和客户端通信框架,也全面支持HTTPS加密通信。

本文将介绍WCF如何通过HTTPS加密通信来实现数据传输的安全保护。

二、HTTPS概述

HTTPS是一种通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对传输数据进行加密的通信协议。

HTTPS协议在HTTP协议的基础上,提供了数据加密、完整性校验和身份验证等功能,确保数据传输的安全性和可靠性。

三、WCF与HTTPS的结合

WCF作为Microsoft的通信框架,可以与HTTPS协议无缝结合,实现服务间的安全通信。

在WCF中,可以通过配置服务端的绑定(Binding)来使用HTTPS协议。

下面是在WCF中使用HTTPS的步骤:

1. 生成SSL证书:为了使用HTTPS协议,首先需要生成一个SSL证书。可以使用第三方证书颁发机构(CA)的证书,也可以自己生成自签名证书。

2. 配置WCF服务:在WCF服务的配置文件中,将服务的绑定配置为使用HTTPS协议。这通常涉及到指定SSL证书的存储位置、密码等信息。

3. 发布服务:将配置好的WCF服务发布到支持HTTPS协议的服务器上。服务器需要配置相应的SSL/TLS协议,以便接收和处理HTTPS请求。

四、WCF HTTPS的安全特性

WCF与HTTPS的结合,为服务间的通信提供了以下安全特性:

1. 数据加密:HTTPS协议对传输数据进行加密,确保数据在传输过程中不会被窃取或篡改。

2. 身份验证:通过SSL证书,可以验证服务端的身份,确保连接到的是合法的服务。

3. 完整性校验:HTTPS协议支持数据完整性校验,确保数据在传输过程中没有被篡改。

4. 重试机制:WCF在通信失败时,支持重试机制,确保服务的可靠性和稳定性。

五、WCF HTTPS的配置示例

下面是一个简单的WCF配置示例,演示如何在WCF中使用HTTPS协议:

1. 在WCF服务的App.config文件中,配置服务的绑定为HTTPS:


“`xml






<br>

<br>



<br>
</transport>

























“`

在上面的配置中,需要将`YourServiceName`替换为实际的服务名称,`YourServiceContract`替换为实际的服务契约接口名称,`YourCertificateThumbprint`替换为实际的SSL证书指纹信息。这样配置后,WCF服务就会使用HTTPS协议进行通信。具体的配置可以根据实际需求进行调整。示例中使用的绑定是wsHttpBinding,也可以使用其他支持HTTPS的绑定类型。还需要确保服务器已正确配置SSL/TLS协议以接收和处理HTTPS请求。通过修改配置文件中的相关参数,可以灵活配置WCF服务以满足不同的安全需求。需要注意的是,在生产环境中使用自签名证书时需要进行额外的安全配置和验证措施以确保安全性。通常情况下建议使用第三方证书颁发机构的证书来提高安全性。六、总结本文介绍了WCF如何全面支持HTTPS加密通信通过配置服务端的绑定生成SSL证书并在配置文件中指定相关信息将配置好的WCF服务发布到支持HTTPS协议的服务器上即可实现安全通信WCF与HTTPS的结合提供了数据加密身份验证完整性校验和重试机制等安全特性在实际应用中需要根据具体需求进行配置和调整以确保数据传输的安全性和可靠性需要注意的是在使用自签名证书时需要进行额外的安全配置和验证措施以确保安全性总之WCF作为Microsoft的通信框架与HTTPS协议的结合为服务间的安全通信提供了强有力的支持为应用程序提供了更加安全可靠的数据传输方式随着网络安全问题的日益突出对数据传输的安全保护变得越来越重要因此掌握WCF与HTTPS的结合使用对于开发人员来说是非常有必要的


Web Service和WCF的到底有什么区别

Web Service是早期的技术实现了,也是soap的东西,采用的主要是http协议,假如是在C#上开发的话,需要寄宿在IIS上来实现。

WCF的话是相对较新的技术,里面的basichttpbinding可以跟以前的ws进行通信,并且集成了大部分的通信协议(几种http协议的实现以及实现、msmq、命名管道等实现),另外寄宿的宿主可以是命令行控制台、IIS、桌面程序等。

差别的话,感觉有这以下几点[针对C#来说的]。

ws的话,编程模型没有wcf的那么好,具体的实现差别建议网络下,个人觉得wcf比较好。

wcf可以用契约的接口方式来进行实现,而ws的话主要是通过继承WebService的类来实现的,方法上添加WebMethod特性,WCF的话是通过服务契约来声明(可以是接口也可以是类对象) ws的话通用性比较强,跟java等ws也可以进行互相通信,然后假如是wcf发布的服务,除了basicHttpBinding这种绑定之外,其余的几种绑定基本上不能作为互相通信。

例如命名管道跟都是,值得说的是这里的跟原生的tcp是不一样的,内部实现上参考tcp的可靠连接机制进行了应用层的一套实现。

另外一点就是服务引用跟web引用上的,这个严格来说不能属于两者的区别,只是版本的区别,主要是针对客户端对服务端发布好的服务进行的引用,服务引用生成的时候,会在配置文件上存在一份配置项,可以进行ABC终结点的配置,假如是web引用的话,会在setting中添加上一个硬编码的地址。

建议用服务引用。

还有一个就是客户端调用服务端开发的时候,webservice的话,基本上只能通过服务端发布的地址来进行引用[应用的方式可以参考点3],或者通过服务端提供的wsdl文件来进行引用(该种方式一般比较少,因为需要提供文件,而不是通过公开的方式来进行接口的提供,无法应对服务变更后发布问题,但是确实有这个情况的存在)。

而wcf的话,还存在可以通过提供契约文件(就是声明了ServiceContract的那个接口文件)来进行服务的调用。

在接口层面的话,凡是IList以及IDictionary这一类的泛型实现都会在进行服务引用的时候,都会转换为数组的,例如void F(IList)会在引用后成为void F(int[])这种方式,而才用点4提供的契约文件的话就能保持方法的原始声明。

个人建议的话,假如是新开发的系统基本上都才用wcf比较好,一个是接口的思想,一个是假如需要转换为其他协议的话可以比较方便,只需要通过配置文件修改下就可以[当前前提是没有用到特定协议的特定属性,例如服务回调,有些协议是不支持双向通信的]。

而且也需要考虑发布的服务是否需要公开给别的语言进行通信。

另外楼上说的性能在下降的话,我大概说明下: 基本上针对应用的开发都是基于socket的开发,传统的socket开发的话,是需要自己去实现整个通信框架的,包括多线程处理,IOCP等的实现[基本上的异步通信模型在内部实现都会绑定好,IOCP是一个异步模型,自行网络],二进制流的编码处理[网络传输都是通过二进制的,例如utf8到二进制的转换],tcp无边界消息的处理[udp的话没有这个,但是包体的大小也是有限制],通信协议的约定处理[例如ws跟wcf是采用soap这种,各种ws的约定,例如多少个字节表示数据流的长度、数据的检验,还是数据加密位,也包括数据的位移处理],数据上抛模型跟数据回复模型[接受到数据后是需要上抛给业务层去进行处理的,然后也需要回复给客户端,不过也不一定是这样,看需求],还有各种针对性的处理,例如客户端socket的保存[有可能对长期不适用的套接字要进行自动断开的业务]。

类似wcf这种东西的话,还有序列化跟反序列化的情况[序列化跟反序列化是性能开销比较大的,例如序列化是通过反射来实现的,反射又是跟程序集的元数据有关的,属于运行时行为],假如是自己实现tcp通信模型,就不一定会有序列化跟反序列化的通信模型了,而且wcf为了让通信跟本地调用那样以及标准的方面,字节流都是比较大的,这里也会增加通信的带宽【好比自定义的协议4个字节的数据包长度+1个字节的加密压缩位+N个数据包位+X个字节的检验位,这种的话实际用到的字节就比较少了,因为在数据包里面,可以会用2个字节表示协议头,例如ox0A表示登录接口,再用4个字节表示登录名,4个字节表示密码等】。

以上是简单的对socket跟wcf\ws等协议的差别说明。

socket跟wcf\ws对比的话,socket性能是最高的,高并发高响应的时候,这里是有差距的,技术上的话,socket需要更加多的技术支持[开发周期长,对人员要求高],而wcf在应用层面上基本无难度,就是一些配置,出现问题也大部分可以通过网络来处理。

另外一个就是托管语言本身的问题,GC这块的,GC回收的时候,是需要挂起堆栈上的线程的,而且GC的线程优先级比你所能创建的所有线程的优先级都要高,等GC执行完毕的时候才能去执行你的线程,wcf在堆对象上申请的空间也会更加多,自然导致GC会受到的概率也会更加大,这里也会可能导致wcf性能不如socket。

基本上来说,C#的类都是引用对象,都是堆申请的,在引用计数超出的时候,都会被下一个GC[]操作去回收,真是个奇葩的事情。

总之,在ws跟wcf之间选择的话,个人觉得优先选择wcf好点。

如果是对性能要求较高[高并发等],或者是长连接再或者是需要用到UDP这种的话,就基本上无法用wcf跟ws这种了,wcf是没有udp协议的,http协议也只是在tcp协议下的上层协议,底层发送的数据包跟实作是不通的。

另外对于长连接,虽然wcf提供了类似回调这种情况机制,只是个人不推荐使用在这种长连接的场合下。

.NET 的 WCF 和 WebService 有什么区别?

微软论坛的斑竹回答如下:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。

微软的Web服务实现称为 Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。

WSDL来实现服务接口相关的描述。

此外Web services 可以注册到UDDI中心.供其客户查找使用。

后来微软做了 Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。

:其实一定程度上就是 Web Service,因为它支持Web Service的行业标准和核心协议,因此 Web Service和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。

但是WCF作为微软主推一个通讯组件或者平台,它的目标不仅仅是在支持和集成Web Service,因为它还兼容和具备了微软早期很多技术的特性。

根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。

它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。

WCF是微软分布式应用程序开发的集大成者,它整合了平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+) Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。

以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。

WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。

也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。

WCF现在用处怎么样?

很有 前景啊,他完全依照着service oriented(服务导向型)做分布式app,且全面支持SOAP。

WCF连同WPF,WF,CardSpace 四大体系架构绝对时未来微软和sun火拼服务市场的武器。

看看WPF的影响,就知道WCF同样应该不差! 不过中国未来几年肯定不会大规模应用,中国软件更新换代太慢,美国 现在 3.5加SQL Server 2008已经满天飞了,中国我还没见几个,全是2.0加2005的。

WCF会在未来称雄的!相信微软的最新口号:Your Passion,Our Potential!

未经允许不得转载:虎跃云 » WCF全面支持HTTPS加密通信
分享到
0
上一篇
下一篇

相关推荐

联系我们

huhuidc

复制已复制
262730666复制已复制
13943842618复制已复制
262730666@qq.com复制已复制
0438-7280666复制已复制
微信公众号
huyueidc_com复制已复制
关注官方微信,了解最新资讯
客服微信
huhuidc复制已复制
商务号,添加请说明来意
contact-img
客服QQ
262730666复制已复制
商务号,添加请说明来意
在线咨询
13943842618复制已复制
工作时间:8:30-12:00;13:30-18:00
客服邮箱
服务热线
0438-7280666复制已复制
24小时服务热线