WCF发布到IIS,并有相应的SVC宿主文件 客户端软件通过CLICK ONCE发布到WCF的相同目录下 本例实现了:客户端自动发现WCF服务的功能 1 不通过配置文件绑定WCF服务 ICallCenter...地址的方法 代码详细如下 2 动态获取WCF地址 /// /// 获取WCF的服务路径 /// ...return "http://localhost:8080/CallCenterWCF.svc"; } } 3动态获取ClickOnce的版本号.../// /// 获取客户端发布版本号 /// /// 当前版本号版本号 version += "." + currDeployment.CurrentVersion.Revision.ToString();//修订号
如果我们需要使用WCF服务,那么我们就必须将服务寄宿与创建它并控制它的上下文和生存期的运行时环境当中,承载服务的环境,称之为宿主。WCF服务可以在支持托管代码的任意Windows进程中运行。...二、WCF宿主环境主要有以下几种 1、托管应用程序中的自承载 WCF服务可以承载与任何托管应用程序中,这是最灵活的选项,因为它需要部署的基础结构最少,在托管应用程序代码内嵌入服务代码,然后创建并打开 ServiceHost...例如,一个将 WPF 用于其用户界面并作为 WCF 服务主机的对等协作客户端,允许其他客户端连接到它并共享信息。...2、托管应用程序中的自承载代码实例 (1)、控制台应用程序代码实例 请参考WCF系列教程之WCF消息交换模式之单项模式 (2)、关于Windows Presentation Foundation (WPF...通过使服务从 ServiceBase 类以及从 WCF 服务协定接口继承,将该服务同时实现为 Windows 服务和 WCF 服务。
可自定义监控托管服务 通过 Windows IPv6 堆栈支持 Internet 协议版本 6 (IPv6) 自动启动应用程序以使服务延迟最小化 体系结构 AppFabric 由 Windows...,下面我们自底向上分析: IIS和WAS AppFabric 构建的基础是 IIS 和 WAS 提供的强大的托管环境。...从应用程序收集的信息可通过使用跟踪配置文件来进行自定义,使用跟踪配置文件可以捕获信息,例如活动状态(启动、停止和错误)、工作流内特定变量的内容或者应用程序通过使用自定义跟踪记录发出的自定义跟踪信息。...WCF 和 WF 应用程序可直接从 Web.config 文件激活,并且不要求单独的 .svc 文件。 虽然简化的托管服务不需要服务文件,但这并没有影响 WAS 所采用的基于消息的激活技术。...您必须具有对所有缓存服务器的管理员权限,才能使工具正常运行。 缓存客户端 任何运行支持缓存的应用程序的应用程序服务器都可以宽泛地称为缓存客户端。
他们还可以利用网络的高速缓存和代理的基础设施,通过提供适当的控制和实体头的方式,在下个版本的WCF(.NET 4.5)设计了RESTful风格的,并不强制开发人员使用Rest的应用程序,你的应用程序可以从...HTTP客户端 - WCF HTTP引入了一个用于发送HTTP请求和接收HTTP响应新的HTTP客户端。新客户端已建成非常紧密,与HTTP规范的规定,并允许开发者使用任何HTTP服务。...HTTP 通道堆栈 - WCF HTTP是不可知的托管环境,因为它可以在ASP.NET托管,直接在IIS或在桌面前端自托管,或像一个窗口服务后端进程。...在我们开发新的WCF HTTP版本可以直接访问底层的HTTP请求,并通过操作,而不是通过像WebOperationContext静态API的参数响应。...新的请求和响应测试友好使服务更容易单元测试。 *对于那些熟悉WCF,这可能类似于您对我们以前的版本中看到图。主要区别在于,在各个层次的组成部分,现在具体到HTTP。
2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本。对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束。...在3周结束时,Matt Connew 有了一个可以工作的玩具,可以使用BasicHttpBinding托管服务。然后,Matt Connew 的原型作为概念证明坐在那里收集灰尘,同时决定如何处理它。....随后,我们开始从社区获得一些较小的贡献。添加对未包含的狭窄方案的支持,或修复新代码无法处理的边缘情况。随着时间的流逝,社区贡献的规模和数量逐渐不断增加。...例如,我们尚不支持跟踪,您需要在 ASP.NET 核心中配置 HTTP 身份验证,而不是通过绑定。...自 0.4.0 以来的新增功能 自 Core WCF 0.4.0 发布以来,添加了以下新功能: WebHttpBinding 支持 OpenApi 功能 - Jonathan Hope, Digimarc
创建一个自托管(Self-Host)的WCF Service// Create WCF service hostUri baseAddress = new Uri("https://127.0.0.1:...OperationContract] string GetMessage(string name);}若确保上述self-host server能运行,需要用管理员权限开一个powershell,运行:# 创建 SSL/TLS...Servicestring serviceUrl = ConfigurationManager.AppSettings["serviceUrl"];// 创建服务终结点地址EndpointAddress...BasicHttpSecurityMode.Transport);binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;// 从证书存储区加载客户端证书...仅本地调试时使用//如不配置将报错:Could not establish trust relationship for the SSL/TLS secure channel with authority
从消息交换的角度来讲,会话通过消息识别机制判断调用某个服务的消息来源,从而将来自相同客户端的所有消息关联在一起。所以,会话实现了消息关联(Message Correlation)。...我们先撇开WCF,来简单介绍一下在托管的环境中,公共语言运行时(CLR)是如何进行托管对象的生命周期的。...如果采用单调实例上下文模式,对于每一个服务调用,不论是来自相同的客户端(服务代理)还是不同的客户端,WCF总是创建一个全新的服务实例和实例上下文对象来处理服务调用请求。...如果从消息交互的角度来讲,通过会话可以将来自相同客户端的多个消息关联在一起。...客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式。所以服务契约会通过元数据对外发布,而服务行为则对于客户端是透明的。
由于WCF采用.NET托管语言(C#和NET)作为其主要的编程语言,注定以了基于WCF的编程方式不可能很复杂。...)以便将异常信息发送回客户端,或在打开每个 Microsoft .NET Framework 3.0 SDK 文档的跟踪的同时检查服务器跟踪日志。”...图2 客户端捕获从服务端抛出的异常 从上面的实例演示中,我们可以获知WCF在默认情况下的异常处理行为:对于服务端抛出的异常(这里主要指应用异常),客户端捕获到的总一个具有相同异常消息的System.ServiceModel.FaultException...然后,不论对于开发阶段的调试,还是维护阶段的纠错、排错,如果在客户端调用某个服务操作后能够很直接地获取到从服务端抛出异常的所有细节,这无疑是一件很有价值的事情。那么,WCF能够做到这一点呢?...对于所有从服务端抛出的异常,只有FaultException和直接或间接继承自FaultException的异常才能被序列化,并最终通过消息返回给服务的调用端。
TLS、SSL和HTTPS 任何一本介绍WCF的书,在介绍Transport安全模式的时候,必然会提到SSL或者HTTPS,有时还会提到TLS。...接下来,我从消息交换的角度来说明上述的两个问题是如何通过TLS/SSL解决的。 我们以访问一个HTTPS站点为例。...步骤一:客户端向HTTPS站点发送协商请求,该请求中包括客户端所能够支持的加密算法列表; 步骤二:HTTPS站点从加密算法列表中选择自己支持的并且安全级别最高的算法(有时候站点也可能综合考虑性能和安全两者之间的平衡...在验证成功的情况下,客户端会生成一个随机随机数,作为会话密钥(Session Key),缓存在客户端。客户端随后并采用服务端发回的加密算法,利用从证书中提取的公钥进行加密。...有人可能会说,客户端为何不直接用从数字证书提取的公钥对所有的请求消息进行加密,服务端采用私钥进行解密。
托管服务 挑战 设置应用程序(包括基于 WCF 和 WF 的服务)的宿主环境可能是一个既复杂又耗时的过程。...这些功能包括缓存服务、缓存客户端和缓存管理工具。 AppFabric 缓存服务是高度可伸缩的服务,允许将许多计算机配置为缓存群集(可作为一个统一的内存缓存)的节点。...解决方案 通过 AppFabric 托管服务和托管管理,可以对正在运行的 WCF 和 WF 服务执行运行状况监控和故障排除,并控制这些服务。...跟踪参与者将事件写入 Windows 事件跟踪 (ETW) 会话,然后与 AppFabric 托管功能一起安装的事件收集服务从 ETW 会话读取事件,从而提供高性能的数据处理。...AppFabric 托管服务使用 .NET Framework 4 的行为合并功能,这使得服务可以从 IIS 层次结构的任何级别继承配置属性。
在前面我们已经谈到了,WCF中的认证属于“双向认证”,既包括服务对客户端的认证(以下简称客户端认证),也包括客户端对服务的认证(以下简称服务认证)。...客户端认证和服务认证从本质上并没有什么不同,无非都是被认证一方提供相应的用户凭证供对方对自己的身份进行验证。我们先来讨论服务认证,客户端认证放在后续的文章中。...在《从两种安全模式谈起》中,我们对TLS/SSL进行了简单的介绍。我们知道,客户端和服务在为建立安全上下文而进行的协商过程中会验证服务端的X.509证书如否值得信任。...如果选择Mixed安全模式,不论选择怎样的客户端凭证类型,WCF最终都会采用TLS/SSL来提供对传输安全的实现。也正是因为如此,在这两种情况下,你总是需要选择一个X.509证书作为服务的凭证。...二、创建基于TLS/SSL的WCF服务 ? 接下来我们会通过一个简单的例子来演示如何在WCF服务中使用基于TLS/SSL的Transport安全。
WCF是.Net框架中的技术,用来创建面向服务的应用程序,交换不同通信方案里的消息,以及执行服务操作生成的工作流。WCF应用程序由三部分组成 - WCF服务,WCF服务主机和WCF服务客户端。...简单的归结为四大部分 网络服务的协议,即用什么网络协议开放客户端接入。 业务服务的协议,即声明服务提供哪些业务。 数据类型声明,即对客户端与服务器端通信的数据部分进行一致化。 传输安全性相关的定义。...由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。...托管机制:WCF托管不同的激活机制,即IIS(Internet信息服务),WAS(Windows激活服务),自托管和Windows服务,而Web服务则只能由IIS托管。...异常处理:在WCF中,未处理的异常都是在一个更好的方式通过使用FaultContract处理,并没有得到Web服务SOAP(简单对象访问协议)故障返回给客户端等。
自2018年11月以来,Microsoft的.NET团队一直与gRPC团队密切合作,共同开发适用于.NET Core的gRPC的全新完全托管实现。...与服务器一样,gRPC客户端也从基于的软件包HttpClient的生态系统中 受益匪浅。...view=aspnetcore-3.0 前面我们提到了gRpc 取代WCF成为 .NET的一等公民,我们一定很怀念WCF那种利用代码定义服务锲约的方式,你一定会记得还有一个protobuf 开源实现protobuf-net...: https://github.com/protobuf-net , 我以前在腾讯IT 使用WCF + Protobuf 构建微服务的系统,用的也是protobuf-net 这个库,而不是用WCF自带的二进制序列化...protobuf-net.Grpc 使用本机Grpc.CoreAPI或完全托管的Grpc.Net.Client/ Grpc.AspNetCore.ServerAPI 在gRPC上添加对服务的代码优先支持
不过,一改传统对WCF的工作流程进行平铺直叙,我将另辟蹊径,借助于我们熟悉的ASP.NET作为请求处理平台,通过一个简单的托管程序模拟整个WCF客户端和服务端的架构。源代码从这里下载。...在客户端,我们具有两种典型的服务代理创建方式,其一是通过诸如SvcUtil.exe这样的工具导入服务的元数据生成相应的服务代理(一个继承自ClientBase的类型)代码和相关配置;其二是直接通过相应的终结点信息...[第16篇] 数据契约的等效性和版本控制 数据契约是对用于交换的数据结构的描述,是数据序列化和反序列化的依据。在一个WCF应用中,客户端和服务端必须通过等效的数据契约方能进行有效的数据交换。...服务寄宿的方式大体分两种:一种是为一组WCF服务创建一个托管的应用程序,通过手工启动程序的方式对服务进行寄宿,所有的托管的应用程序均可作为WCF服务的宿主,比如Console应用、Windows Forms...从消息交换的角度来讲,会话通过消息识别机制判断调用某个服务的消息来源,从而将来自相同客户端的所有消息关联在一起。所以,会话实现了消息关联(Message Correlation)。
提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛。...比如,在上面的代码中,如果后续版本的接口需要接受两个参数来执行DoSomething方法,或者说除了返回一个string外还需要返回其他信息。如果在原接口上修改的话,就会使得老版本的客户端无法使用。...在请求和相应的DTO对象中添加字段,不会破坏旧的客户端。 在WCF中RPC和DTO风格的WebService均支持,但是在ServiceStack中仅支持DTO风格。...建议您直接看,这里从里面截取了几张图: ?...服务客户端 服务端创建和托管好之后, 服务使用者就可以直接编写HttpWebRequest对象对这些服务通过Get或者Post方式进行直接访问了。
第24集 在控制台应用程序中自托管WCF服务 Self hosting a wcf service in console application 第23集比较简短,总共2分钟不到的样子,介绍了WCF托管的几种方式...方式 描述 self-hosting(自托管) 用控制台或者winform的应用程序来托管 windows 服务 用windows 服务的方式 IIS 可以用IIS服务来托管服务,只支持http 协议的...Binding Windows Activation Service(WAS) 用带WAS的IIS 7 来托管服务,支持所有的Binding 24集先讲一下第一种,self-hosting 所谓的self-hosting...就是把服务交给 .net的托管代码程序(比如console application,winform application,WPF application)来host的方式。...启用一下serviceMetadata让客户端能自己生成代理类。 ? 14. 添加完之后双击这个serviceMetadata,设置HttpGetEnabled = true ? 15.
WCF运行时的基础工作是监听处理来自网络位置的消息,并将他们传递给应用程序(服务),使用WCF开发REST应用程序是一项简单的任务。...有两种类型的托管服务、自寄宿web服务和与应用程序服务器(如 IIS)承载的 web 服务。...自寄宿web服务中, 大部分的安全方面都应该在代码中得到注意;另一方面, 在 iis 中托管时, iis中设置会处理安全问题。...轻量级 (相对使用 WSDL 使 soap 协议成为复杂服务的 soap)。 简单客户端 缺点 从开发者角度来说主要缺点是没有主数据。因而需要料及其中的实现细节。...从安全性的角度来说,RESTful服务依赖于HTT的安全性。 适于使用的情况 当我们计划设计一个专门在web上使用的应用程序时, 或者当我们需要快速客户端集成时, 可以使用REST。
此工具可从网络位置的当前解决方案的 web 服务中或从 WSDL 文件中检索元数据,并生成包含可用于访问 web 服务的 Windows Communication Foundation (WCF) 客户端代理代码的可兼容...系统必备 Visual Studio 2017 版本 15.5 或更高版本 如何使用扩展 备注 “WCF Web 服务引用”选项适用于使用以下项目模板创建的项目 : Visual C# > .NET...从“服务”框内的搜索结果列表中选择服务 。 如果需要,请在相应的“名称空间”文本框中为生成的代码输入命名空间 。 3c. 单击“下一步”按钮,打开“数据类型选项”页和“客户端选项”页 。...在显示进度的同时,工具: 从 WCF 服务下载元数据。 在名为“reference.cs”的文件中生成服务引用代码,并将其添加到“连接的服务”节点下的项目 。...进度完成后,可创建生成的 WCF 客户端类型的实例并调用服务操作。
先来看4.0: public partial class TaskWebServiceClient : System.ServiceModel.ClientBase 代理类继承自WCF服务Client对象...System.ServiceModel.ClientBase:提供用于创建可以调用服务的Windows通信基础(WCF)客户端对象的基本实现。...这里碰到一个问题,Soap版本的问题,因为自动生成的代理类只支持soap1.1,可我们Java web服务是基于高版本的soap协议, 结果调研失败。 Java服务端改回1.1版。 接着继续。...又发现一个坑,本来应该从.Net Client 传送到Web Service上的参数,服务器接收不到。 使用Soap工具跟踪,发现soap消息里根本就没有。...建议大家使用Restful /Json方式进行服务器和客户端数据交互,尤其是在跨语言的情况行下,更方便,更简单,也不需要关心soap版本之类的东东。 请关注公众号:程序你好
当客户端第一次获取一些数据的时候,如ASP.NET应用程序用户提供一些信息资料,或者从数据库中读取的信息,它可以使用AppFabric Caching Services客户端类库将一个唯一的名称和这些信息一起存放在缓存群集中...对于客户端来说,缓存集群中的所有缓存服务器就是单一的逻辑存储。客户端既不知道也不关心的哪台物理服务器的缓存哪些数据。...AppFabric 托管服务结合 WAS 使用,为中间层 WCF 和 WF 应用程序提供可靠的宿主环境。WAS 提供的功能有: 应用程序和工作进程的基于消息的激活。...WCF 和 WF 应用程序可直接从 Web.config 文件激活,并且不要求单独的 .svc 文件。 虽然简化的托管服务不需要服务文件,但这并没有影响 WAS 所采用的基于消息的激活技术。...所需的特定版本取决于您希望使用的功能: 托管服务需要 Microsoft .NET Framework 4 托管管理需要 Microsoft .NET Framework 4 缓存服务需要 Microsoft
领取专属 10元无门槛券
手把手带您无忧上云