
你都会写代码了,这个基础知识不应该不懂啊。要么就是我对你的问题理解错了?
所谓双工通讯,其实就是双向调用。
那如何进行双向调用呢,WCF给出了一个解决方案:客户端也起一个服务监听!
呵呵,当然这个只是打个比方,实际处理没有那么重量级。
但是,所谓“CallbackContract”,的确是一个动态的客户端的“服务”契约,用这个契约,服务就可以主动访问客户应用了,这个和标准的回调函数很相似吧,估计名字也就是这么来的:)
以上是基础知识解释。好了,下边正式回答你的问题:
首先,如果服务端不需要“回调”,那就不要在声明里使用CallbackContract,那么客户端自然也不需要在new的时候写入需要执行的具体回调处理方法名了。
第二,如果只是部分不需要,那么,最好把服务契约做一个明确划分,确定客户端访问时是否需要提供回调契约。
第三,即使声明了回调契约,客户端也实现了,DoWork内部也可以不调用契约接口啊,对系统性能没有任何影响。
如果没说清楚,你再问:)
很久以前,有一家小商店,靠卖些水果过日子。竞争是如此激烈,为了生存,他们不得不自己进货,把货堆到自己的房间内,如果顾客需要,他们有时还不得不给顾客送货,总而言之,他们将所有该干的活都干了,只为了能赚到点生活费,这就是艰辛的人生。
一个web程序或者一个winform程序,简单模式的程序,我们通常都如那个水果店的老板一样,把所有的功能都集中到这个程序里,在简单的状况下,这很好。
水果店生意越来越好,老板的资金慢慢雄厚了,他注意到了卖其他东西比卖水果更赚钱,比如说家电、服装。于是,老板一口气又开了几家店。生意规模越来越大,钱也越赚越多,老板心花怒放。然而好景不长,亚洲金融风暴来袭,利润率急剧下降。老板忧心忡忡,既然外部开源不太可能,那就看看内部能不能节流了。老板考察一番,注意到,为了销售,每个店都配置了一个仓库,每个店都配置了一帮送货的人马,这,是不是太浪费了。于是,老板将所有的仓库撤销,成立了一个总仓库,不管是水果,家店,服装,都可以存储到这个仓库。管理一个仓库的费用比管理N个仓库的费用显然是要少很多的。然后,每个店的送货人员都辞掉,另外成立一个运输公司,专门负责送货,不过水果还是家店还是服装,装到纸箱后,他们都是一个样。经过这么一折腾,成本一下就降了下来,而且还便于管理了,真是一举两得,老板又绽放了笑容。
当程序涉及的范围越来越大时,也许就要考虑将服务分离出去。WCF是应对分布式开发的,就如水果店老板,生意大了后,他就是个分布式的了,这边一家水果店,那边一家服装店,他们之间有区别,卖的东西不同,也有共性,都是卖东西,不管是哪家店,他们都需要仓库,都需要送货。这时,你就可以单独成立公司,只提供这两种服务。如果写成程序,那么就如同你开发了一个运输的WCF,把这个服务放在服务器上,这样不管是谁,是Web程序也好,是Winform程序也好,只要接口对应,理解你的服务内容条款(服务契约),都可以要求你这个服务模块提供标准的服务。
懒得写了,就这样。
首先:
WCF的全称是Windows Communication Foundation,Windows通信基础的意思,是Microsoft为构建面向服务的应用程序而提供的统一编程模型,它整合NET平台下所有和分布式系统有关的技术。
其次:
WCF本质是面向服务的。主要分为服务端和客户端两部分。服务端和客户端进行通信的过程如下图所示:
在上图中,主机进程就是服务端,在其中需要创建服务,然后将服务通过EndPoint(终结点)与客户端进行通信。客户端在使用服务时,需要首先创建一个代理服务,然后调用这个代理服务。
EndPoint(终结点)在WCF中是非常重要的部分。它包含了服务地址(Address)、绑定格式(Binding)和契约(Contract)。其中,地址定义了服务的位置,绑定定义了服务通信的方式,契约定义了服务所提供的功能。为了便于记忆,我们将终结点的这三个要素简称为服务的ABC。
服务端提供了什么服务,都具备什么功能,这被称为WCF服务的契约。
WCF服务不能凭空存在。每个WCF服务都必须托管(Hosting)在一个Windows进程中,该进程被称为宿主进程。
WCF服务宿主可以由IIS提供,可以由Windows服务提供,也可以由Windows Vista的Windows激活服务提供。其中,使用IIS托管只能使用>
WPF:下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。 使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。
WCF:由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。
WF:工作流开发平台。
什么叫这三个都是调用Ajax除了第三个是经常用来弄ajax,前两个跟ajax有啥关系
不过3者有一个共同点,就是代码实际上都要到服务器上去执行,然后可以在前段用js获取结果,传输数据都是用xml。
ashx貌似我见过的基本上都是为ajax服务。
而wcf和webservice实际上是为了分布式、跨平台的程序服务。
简单的说,微软做出wcf这样一个东西,你可以理解为
wcf的优点=remoting(局域网使用很爽)+webservice(分布式、跨平台)+安全性
提供一个技术实现方案,具体还要看你的应用场景
方案一:适合互联网聊天
(1)webservice(也可以是其他服务技术,如WCF,但是WCF更适合异地集团网络解决方案)技术,提供服务端数据处理,接收存储所有客户端交互数据(中转)
(2)客户端使用多线程,提供用户体验,在定时刷新聊天记录是,客户端不会卡住不能交互
方案二:适合局域网
(1)secket通讯技术,通过Ip地址和端口监听实现服务端与客户端数据交互
(2)客户端使用多线程,提供用户体验,在定时刷新聊天记录是,客户端不会卡住不能交互
Visual Studio 和基础Microsoft NET Framework 提供了新工具 并支持Windows Communication Foundation(WCF) 它们并未改变WCF (与 NET Framework 一起发布)的基本功能 而是对其进行了扩展和完善
Visual Studio 可自动执行WCF手动任务 包括更新代理引用和消除重复任务(例如创建简单托管项目) Visual Studio还能解决跨目标和数据协定类型共享等一些困难问题 在本专栏中 我将逐步介绍其新功能及优势 并对其任何缺陷和解决方法做出解释 尽管我将在此使用C#项目设置 但除非我另行说明 否则所有设置同样适用于Visual Basic
NET Framework跨目标
Visual Studio的早期版本通常针对随其一起提供的 NET Framework 版本 例如 Visual Studio 只能生成针对 NET Framework 的程序集 而此惯例并不能反映大多数开发人员所面临的真实情况 通常 开发人员需要在维护针对早期版本的 NET 而编写的旧版应用程序的同时 还要在其新版应用程序中使用新版 Visual Studio
此外 此惯例还意味着开发人员在维护为早期版本的 NET Framework 而编写的应用程序时 无法从效率增强功能(例如 Visual Studio 中引入的代码重构支持)中获益
问题在于 NET Framework 各版本不支持跨目标功能 您要么必须安装多个版本的 Visual Studio 要么使用独立的测试和部署内部版本进行补偿 Visual Studio 尝试通过为多个版本的 NET Framework提供充分支持(虽然不完美)来解决这一问题 由于实际上 NET Framework 和 NET Framework 使用的CLR版本与 NET Framework 使用的相同 唯一的区别在于新引用的程序集 因此Visual Studio仍可针对相同运行库 而为 NET Framework版本 和 (其中 NET Framework版本号对应的是发行版本 而不是运行库版本 运行库版本仍为CLR )提供跨目标功能
NET编程免费提供,内容来源于互联网,本文归原作者所有。
以上就是关于wcf双工通信问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!全部的内容,包括:wcf双工通信问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!、求教:wcf是干什么用的啊...、跪求WCF的工作原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)