首页
学习
活动
专区
圈层
工具
发布

WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

在《基于IIS的WCF服务寄宿(Hosting)实现揭秘》中,我们谈到在采用基于IIS(或者说基于ASP.NET)的WCF服务寄宿中,具有两种截然不同的运行模式:ASP.NET并行(Side by Side...对于前者,WCF通过HttpModule实现了服务的寄宿,而对于后者,WCF的服务寄宿通过一个HttpHandler实现。...那么对于ASP.NET兼容模式下的WCF也一样,要想让服务端能够识别会话,就需要让每个服务调用的HTTP请求携带Session的识别信息,我们也可以通过传递Cookie的方式来解决这个问题。...对于WCF来说,Cookie传递能够通过Binding来控制,对于WsHttpBinding来说,默认情况下并不允许Cookie的传递。...我们可以通过WsHttpBinding的AllowCookies来控制是否允许传递Cookie,该属性可以通过配置进行设置。为此,我们对客户端的配置进行了如下的修改。

914100

提高WCF服务并发能力的简单处理办法

步骤: 1.把同样的WCF服务,在多个端口上"启动"(即同时运行多个wcf的实例,但每个实例都监听不同的端口) 2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本...,我们在web.config中的wcf配置节,做如下处理:             wsHttpBinding"                 bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService...服务端的实例,配置多个name的endpoint节点 3.修改客户端的调用代码 把原来类似这样的代码: using (AstroServiceClient _client = new AstroServiceClient...服务端的host中挑一个,生成代码类实例 大功告成,说白了就是把一个wcf的host分身成了3个,并且客户端随机调用3者之一

1K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果?

    我们想对WCF具有一定了解的人都会知道:在客户端通过服务调用进行服务调用过程中,服务代理应该及时关闭。但是如果服务的代理不等得到及时的关闭,到底具有怎样的后果?什么要关闭服务代理?...数据报信道(Datagram Channel) WCF通过信道栈实现了消息的编码、传输及基于某些特殊功能对消息的特殊处理,而绑定对象是信道栈的缔造者,不同的绑定类型创建出来的信道栈具有不同的特性。...对于WCF客户端来说,如果进行基于会话信道的服务调用,有一些问题需要引起足够的重视,如果使用不当,不但影响客户端本身的服务调用,还会对服务处理请求的吞吐量造成很大的影响。...二、服务代理的关闭与并发会话(Concurrent Sessions)的限制 基于会话信道服务调用须要注意的第一个问题和WCF流量限制有关,为了使读者对这个问题先有一个直观认识,我们照例通过一个简单的实验来重现须要解决的问题...实践出真知,照例通过具体的例子来说明问题。我们知道绑定是信道的创建者,信道的特性通过组成绑定的元素(绑定元素)决定,所以信道对会话支持的特性也不例外。

    61520

    系统上线后WCF服务最近经常死掉的原因分析总结

    后来就开始分析问题。...得到的初步解决方案如下:   1、在Web端调用WCF服务使用后,未释放未关闭导致新的链接无法访问   2、增加默认的连接数,系统默认的链接数比较小   3、提供同一个WCF服务的不同实例 1、在Web...那么请不要使用传统的using语句中来调用WCF,这里@dudu大神也曾经有遇到过这个问题 http://www.cnblogs.com/dudu/archive/2011/01/18/1938144....如果要考虑到大量并发的情况下,伪随机数可能确实有一些问题,不过,这个应该也不难解决,自己另外写一个类似伪随机数的算法,只要保证生成指定范围内不重复的数字(或字符)就可以了。...总结  暂时这三种方式有效地防止了WCF服务的再次挂掉,至少最近几天服务一直在稳定的运行,没有太大的异常,很是让人欣慰。不知道针对WCF服务的处理是否还有其他方式,也让博客园的大牛们来指点一二吧。

    1.1K41

    WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效

    问题是这样的,他说他采用ASP.NET应用程序的方式对定义的WCF服务进行寄宿(Hosting),并使用配置的方式对服务的BaseAddress进行了设置,但是在创建ServiceHost的时候却抛出InvalidOperationException...结果如我所想,一切正常,个人觉得这应该是WCF的一个Bug。今天撰文与大家讨论,看看大家对这个问题有何见解。...一、问题重现 问题很容易重现,假设我们通过ASP.NET应用对服务CalculatorService进行寄宿,为了简单起见,我将服务契约和服务实现定义在一起。...要解答这个问题,首先要解释一下WCF的BaseAddress在不同服务寄宿(Service Hosting)方式下的定义方式。...对于WCF服务的自我寄宿(Self Hosting)或者采用Windows Service进行服务寄宿,我们可以通过代码或者形如上面的配置为服务指定一系列的BaseAddress(对于一个既定的URI

    70280

    x.509证书在WCF中的应用(WebIIS篇)

    在上一篇"x.509证书在WCF中的应用(CS篇)"里,我们知道了如何在应用程序中,利用x.509证书来验证WCF的消息安全(没看过的朋友建议先看下,地址https://cloud.tencent.com...WCF宿主在IIS和普通应用程序里,原理虽然没什么不同,但在实际测试中发现,如果服务端与客户端都采用x.509证书来验证,服务端设置的自定义验证客户端证书的方法总是不起作用,无奈之下,只能在客户端采用了一种变相的方法来验证客户端证书.../yjmyzz/archive/2008/08/21/1273201.html),这里要注意的是服务端证书的"颁发给"的对象一定要和最后运行的url里的计算机名(或域名)信息一致,如下图,否则IE7会认为该证书有问题...--设置成Certificate后,启动WCF时,总是提示出错[ 服务“SslRequireCert”的 SSL 设置与 IIS“Ssl”的 SSL 设置不匹配。]无奈只能设置成None--> 的元数据,httpsGetUrl标明了取得WCF元数据的地址  <serviceCertificate findValue="JimmyCntvs" storeLocation="LocalMachine

    1.4K50

    利用WCF改进文件流传输的三种方式

    WCF在跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库中获取大量数据时)是一种痛苦的选择。...在WCF中引入了一种专门针对数据流进行优化编码的MTOM模型。下面我们使用编码模型和调用模型三种方式来改写文件流的传输,以提高WCF应用程序的性能。...在WCF中MTOM模型的操作契约中只能使用单个Stream对象作为参数或者返回类型。 ?...这里在服务契约中通过设置属性CallbackContract来实现客户端的回调功能。...也就是说后两种方式只是一种提高WCF应用程序响应性能的方式,它的传输数据量会有明显的膨胀。具体设计中要看在传输效率和响应性能两者取舍来选取其一而用。

    1.5K60

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

    客户端通过另一个控制台应用模拟(进程为Client.exe)。接下来,我们就一步一步来构建这样的一个WCF应用。 步骤一:构建整个解决方案 通过VS 2008创建一个空白的解决方案,添加如下四个项目。...一个终结包含了实现通信所必需的所有信息,我们可以这样认识终结点的ABC: 地址(Address):地址决定了服务的位置,解决了服务寻址的问题,《WCF技术剖析(卷1)》第2章提供了对地址和寻址机制的详细介绍...WCF中具有一系列的系统定义绑定,比如BasicHttpBinding、WsHttpBinding、NetTcpBinding等,《WCF技术剖析(卷1)》第3章提供对绑定的详细介绍; 契约(Contract...WCF服务的描述通过元数据(Metadata)的形式发布出来。WCF中元数据的发布通过一个特殊的服务行为ServiceMetadataBehavior实现。...图4 通过HTTP-GET的方式获取WCF服务的元数据 在进行真正的WCF应用开发时,一般不会直接通过编码的方式进行终结点的添加和服务行为的定义,而是通过配置的方式进行。

    83721

    WCF技术剖析之五:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

    在《基于IIS的WCF服务寄宿(Hosting)实现揭秘》中,我们谈到在采用基于IIS(或者说基于ASP.NET)的WCF服务寄宿中,具有两种截然不同的运行模式:ASP.NET并行(Side by Side...对于前者,WCF通过HttpModule实现了服务的寄宿,而对于后者,WCF的服务寄宿通过一个HttpHandler实现。...那么对于ASP.NET兼容模式下的WCF也一样,要想让服务端能够识别会话,就需要让每个服务调用的HTTP请求携带Session的识别信息,我们也可以通过传递Cookie的方式来解决这个问题。...对于WCF来说,Cookie传递能够通过Binding来控制,对于WsHttpBinding来说,默认情况下并不允许Cookie的传递。...我们可以通过WsHttpBinding的AllowCookies来控制是否允许传递Cookie,该属性可以通过配置进行设置。为此,我们对客户端的配置进行了如下的修改。

    1.1K100

    WCF后续之旅(6): 通过WCF Extension实现Context信息的传递

    这虽然能够解决问题,但决不是一个好的解决方案,因为API应该只和具体的业务逻辑有关,而context 一般是与非业务逻辑服务的,比如Audit、Logging等等。...WCF后续之旅: WCF后续之旅(1): WCF是如何通过Binding进行通信的 WCF后续之旅(2): 如何对Channel Layer进行扩展——创建自定义Channel WCF后续之旅(3...实现Localization WCF后续之旅(6): 通过WCF Extension实现Context信息的传递 WCF后续之旅(7):通过WCF Extension实现和Enterprise Library...Block 的集成 WCF后续之旅(9):通过WCF的双向通信实现Session管理[Part I] WCF后续之旅(9): 通过WCF双向通信实现Session管理[Part II] WCF后续之旅...的--消息筛选(Message Filter) WCF后续之旅(17):通过tcpTracer进行消息的路由

    95170

    WCF后续之旅(1): WCF是如何通过Binding进行通信的

    如果说《我的WCF之旅》主要是对WCF基本原理概括性介绍,而对于这个新的系列,我将和大家分享我对WCF的一些实现机制、设计原理的理解,以及我在实际的项目开发中的一些实践经验(比如在后续的一些文章中,我将介绍通过...我们已经很清楚了,WCF的通信是通过Endpoint来完成的:Service Provider将WCF service通过Endpoint暴露出来供Service consumer调用,而Service...就Endpoint包含的这3个元素而言,Address解决了寻址的问题,代表如何定位和标识对应的Endpoint,而Contract在对Service提供的功能、操作(Service Contract)...实现Localization WCF后续之旅(6): 通过WCF Extension实现Context信息的传递 WCF后续之旅(7):通过WCF Extension实现和Enterprise Library...Block 的集成 WCF后续之旅(9):通过WCF的双向通信实现Session管理[Part I] WCF后续之旅(9): 通过WCF双向通信实现Session管理[Part II] WCF后续之旅

    1.1K100

    WCF后续之旅(6): 通过WCF Extension实现Context信息的传递

    这虽然能够解决问题,但决不是一个好的解决方案,因为API应该只和具体的业务逻辑有关,而context 一般是与非业务逻辑服务的,比如Audit、Logging等等。...WCF后续之旅: WCF后续之旅(1): WCF是如何通过Binding进行通信的 WCF后续之旅(2): 如何对Channel Layer进行扩展——创建自定义Channel WCF后续之旅(3...实现Localization WCF后续之旅(6): 通过WCF Extension实现Context信息的传递 WCF后续之旅(7):通过WCF Extension实现和Enterprise Library...Block 的集成 WCF后续之旅(9):通过WCF的双向通信实现Session管理[Part I] WCF后续之旅(9): 通过WCF双向通信实现Session管理[Part II] WCF后续之旅...的--消息筛选(Message Filter) WCF后续之旅(17):通过tcpTracer进行消息的路由

    90580

    WCF系统内置绑定列表与系统绑定所支持的功能

    WCF系统内置绑定列表 绑定 配置元素 说明 传输协议 编码格式 BasicHttpBinding 一个绑定,适用于与符合 WS-Basic Profile的Web...此绑定使用HTTP作为传输协议,并使用文本/XML作为默认的消息编码 HTTP/HTTPS Text,MTOM WSHttpBinding wsHttpBinding> 一个安全且可互操作的绑定,适合于非双工服务约定...TransactionFlow绑定元素提供支持 HTTP/HTTPS Text,MTOM WSDualHttpBinding 一个安全且可互操作的绑定,适用于双工服务协定或通过...并支持联合安全性 HTTP/HTTPS Text,MTOM NetTcpBinding 一个安全且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 TCP Binary...NetNamedPipeBinding 一个安全,可靠且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 IPC Binary MsmqIntegrationBinding

    84310

    WCF服务上应用protobuf

    虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。...通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。...在TCP网络编程中这是必须面对的问题。在tcp网络编程中,要反序列化业务消息,就要先知道业务数据的大小。而且在实际应用中可能在一个发送操作中,发送多个业务消息,而且每个业务消息的大小、类型都不一样。...而且可能发送很大的数据流,比如文件。显然消息边界的确认问题和protobuf库无关,还得自己搞定。...一个最小的可以工作的例子就是protobuf-net提供的(client, server),它使用的是共享契约的方式,通过WCF的配置方式,添加一个Endpoint-behavior,引用一个自定义的WCF

    89060

    WCF中的Binding模型之六(完结篇):从绑定元素认识系统预定义绑定

    二、 WsHttpBinding 我们通过与BasicHttpBinding的方式来分析WsHttpBinding,先通过下面的方式列出在默认条件下(通过默认的构造函数创建WsHttpBinding对象...在WS-*体系中,WS-AT为事务定义了规范,而在WCF中,则通过TransactionFlowBindingElement实现了WS-AT规范。...WS-*通过WS-RM(Reliable Messaging)为可靠传输定义了规范,在WCF中WS-RM通过可靠会话(Reliable Session)实现了WS-RM,而WS-RM在WCF的实现通过ReliableSessionBindingElement...下面的代码中,我们通过另一个构造函数设定WsHttpBinding对可靠会话的支持(第二个参数代表是否支持可靠会话)。...WCF中的绑定模型: [WCF中的Binding模型]之一: Binding模型简介 [WCF中的Binding模型]之二: 信道与信道栈(Channel and Channel Stack) [WCF

    1.1K100

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

    客户端通过另一个控制台应用模拟(进程为Client.exe)。接下来,我们就一步一步来构建这样的一个WCF应用。 步骤一:构建整个解决方案 通过VS 2008创建一个空白的解决方案,添加如下四个项目。...一个终结包含了实现通信所必需的所有信息,我们可以这样认识终结点的ABC: 地址(Address):地址决定了服务的位置,解决了服务寻址的问题,《WCF技术剖析(卷1)》第2章提供了对地址和寻址机制的详细介绍...WCF中具有一系列的系统定义绑定,比如BasicHttpBinding、WsHttpBinding、NetTcpBinding等,《WCF技术剖析(卷1)》第3章提供对绑定的详细介绍; 契约(Contract...WCF服务的描述通过元数据(Metadata)的形式发布出来。WCF中元数据的发布通过一个特殊的服务行为ServiceMetadataBehavior实现。...图4 通过HTTP-GET的方式获取WCF服务的元数据 在进行真正的WCF应用开发时,一般不会直接通过编码的方式进行终结点的添加和服务行为的定义,而是通过配置的方式进行。

    1.2K90
    领券