WCF(学习笔记)【参见WCF教程】
WCF:基于SOA(面向服务编程 )的一个.net框架产品 一种分布式通讯的统一模型(分布式通讯就是对多种 操作系统和平台的的兼容) 通信范围比较广
Web service .net Remoting
其他 WCF 其他
定义一个wcf服务后 它会对外发布一个
端点 协议 绑定
宿主程序:asp.net exe wpf window forms......
WCF可以支持的协议:TCP HTTP 跨进程 自定义协议
在WCF框架下 开发基于SOA的分布式系统
.net Remoting :能够高性能的实现.net 和.NET之间的通讯 受语言限制, Web Service:基于SOAP(协议), 可以跨平台调用:
WCF 是面向服务的产品 ,
那么WCF也是基于SOAP的通讯机制 ,这保证了系统之间的互操作性
WCF最重要的是能够快捷的额创建一个服务, WCF 包括三部分:
1,Service Class :一个标记了[ServiceContract]Attribute的类[契约标签]
[ServiceContract] [OperationConstract] 服务契约
[DataContract] [DataMember] 数据契约
2,Host(宿主):可以使应用程序 它是WCF Service运行的环境
也就是说 服务器上(的程序)
3,Endpoints:可以使一个 也可以是一组 wcf实现通讯的核心要素
WCF 由一组Endpoints集合组成 每个endpoint就是用于通信的入口
客 服 通过endpoint交换信息
一个endpoint(端点) 由三部分组成 : (where)address(地址):是endpoint的网络地址 它标记了消息发送的目的地
(what) contract (契约):描述消息包含的内容 以及消息的组织和操作方式
(how) Binding (绑定):描述如何发送消息 ,例如消息发送的传输协议(如TCP,HTTP) 安全(如ssl,soap消息安全)
opration操作
那么WCF是怎样通讯的呢????
WCF管理的是服务端和客户端的通信
对于服务端 WCF提供了类ServiceDescription用于描述一个WCF Service
对于客户端 WCF管理的是发送消息 时 需要使用到得通道Channel, 类channelDescription描述了这样一个通道
ServiceDescription Service Type ISerciceBehavor ServiceEndpoint EndpointAddress Binding ContractDescription
下面要写一个wcf的程序 首先要添加引用 system.ServiceModel
一般我们要定义wcf服务时 先把一个接口定义为一个服务 这样为了更好的面向对象(服务)编程 在接口中添加[ServiceContract] [OperationContract] [DataContract] [DataMember]
在实现接口类中就不需要 在添加标签啦
接下来:一个WCF Service 必须有host作为它的运行环境 ,这个host可以是
ASP.NET Windows Service 不通的应用程序 例如控制台程序
host实现
using System.ServiceModel
//创建一个SerciceHost对象 参数(服务实现类的类型typeof,url对象)
ServiceHost host =new ServiceHost(typeof(MyMethod),new Url("http://localhost:8080/HelloService"));
新建两个项目 一:wcf服务应用程序 服务端 二:控制台 客户端
服务端:接口 服务契约:标签
1,ServiceContract 声明接口或类在客户端可见 2,OperationContract 声明具体的方法在客户端可见
数据契约:标签
1,DataContract 把某个类或结构声明为数据契约 ,这个类就可以再客户端可见并可用来声明变量
2, DataMember 把服务端类中的变量 字段 标记为在客户端可见
客户端:
在客户端 控制台程序中 添加服务引用
在 发现 中会去寻找可用的服务
在最下面会有服务引用的命名空间 ServiceReference1
在客户端调用服务 1,定义通信管道 client 就是通过它来调用服务端提供的方法的
ServiceReference1.ServiclClient client =new ServiceReference1.ServiclClient ();
client.studentlClass();
2,服务端提供给客户端使用的类
ServiceReference1.student1(服务端的类) stu==
问题:
1,要想在客户端使用服务端里自定义的类型,除了用 [DataContract]声明之外 还要有一个服务契约(方法)[OperationContract]的返回值是这个类型的。 2,在接口类中(对客户端开发并可以调用的类型),在接口该类中,定义一个字段并赋默认值
定义一个属性并给它赋默认值
那么在客户端调用时 输出该类中的属性值
为空 默认值丢失???????
序列化的问题??????
WCF(学习笔记)【参见WCF教程】相关推荐
- 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)
数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...
- WCF学习笔记(2)——独立WCF服务
本文将建立一个silverlight与wcf通讯的简单实例,wcf服务将被独立出来,而不再寄放在Web中.以下是详细步骤: 新建Silverlight应用程序,名称WCFtest,在解决方案上右键添加 ...
- WCF学习之旅—WCF服务的WAS寄宿(十二)
上接 WCF学习之旅-WCF服务部署到IIS7.5(九) WCF学习之旅-WCF服务部署到应用程序(十) WCF学习之旅-WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...
- x%3e=y%3e=z的c语言表达式,我的C语学习笔记-C语言教程(三).doc
我的C语学习笔记- C语言教程(三) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...
- c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc
我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...
- java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...
- 【Unity学习笔记】UnrealToUnity教程:(网上购买的素材导入Unreal+插件转Unity)
[Unity学习笔记]UnrealToUnity教程: 最近想从Unreal那边化点缘借借素材,没想到踩到一个大坑 一,素材导入Unreal 这个教程比较多,根据素材的来源,传送门是以下这几个: 1. ...
- html5教程 w3cschool,W3Cschool学习笔记——HTML5基础教程
HTML5 建立的一些规则:新特性应该基于 HTML.CSS.DOM 以及 JavaScript. 减少对外部插件的需求(比如 Flash) 更优秀的错误处理 更多取代脚本的标记 HTML5 应该独立 ...
- 【应用篇】WCF学习笔记(一):Host、Client、MetadataExchage
虽然已经在多个项目中成功应用过WCF,但是感觉自己对WCF的知识只知道一些皮毛而已.上次学习WCF也是为了项目需要,囫囵吞枣.这不是我学习方法的态度.所以时至今日,又重新拾卷,再仔细的将WCF一些细节 ...
- WCF学习笔记(一):WCF Service Application和WCF Service Library的区别
近来在学习WCF,遇到了不少问题,有的让我焦头烂额,不过解决问题的过程就是学习的过程,收获也不少. 昨天有个问题开始困扰我--WCF Service Application和WCF Service L ...
最新文章
- VirtualBox上装CentOS5.8网络不通问题
- iOS最好用的引导页
- 偏差/方差、经验风险最小化、联合界、一致收敛
- linux mysql卸载_Linux环境下安装Mysql8.0数据库
- zImage与uImage的区别
- Chrome现在也能编辑pdf文件了!64位安卓版上线
- Runnable和Thread基础---多线程学习笔记(二)
- javascript乘法和加法_js 大整数加法、乘法、除法
- DataFrame字符串之分割split()、清洗drop()、合并concat()、重新建立索引reset_index() - (Python)
- java架构师进阶之独孤九剑:数据结构以及书籍推荐
- kk服务器信息及端口,kk服务器设置
- [TypeScript] Interface and Class
- 收费版APP三年总结(个人经验)
- 【前端react 粒子特效】
- 服务器布线属于搬迁项目吗,弱电机房服务器搬迁建设整体规划与合理布局
- 阶乘 java_Java 实例 – 阶乘
- 编辑修改PDF文件的简单方法
- 贴吧怎么引流_教您如何快速搭建自己的引流池-万能的小胡
- 利用logisim-evolution软件学习数字电路(一)
- 一篇文章吃透:为什么加载数据库驱动要用Class.forName()
热门文章
- 1、SpringBoot整合JPA
- 信息流媒体变现_百度联盟陈一凡:今年联盟分成仍将破峰,未来视频变现可期...
- lvdt 运放全波整流接线方式_20种电工最常见照明灯接线电路图另附开关、插座安装技术交底...
- html5列表去掉符号,从Python字符串中删除不在允许列表中的HTML标记
- 神策数据荣登 2020 IDC 中国 Fintech 50 强榜单
- mysql数据库怎么安装到自己的电脑上?
- 阿里云云市场双11战报:30分钟破100万,单品销量暴涨300倍!
- [Angularjs]视图和路由(三)
- 函数计算 【题目描述】
- if with large data project