WCF基础知识

简介: <pre><span style="font-family:KaiTi_GB2312; font-size:18px"><strong>【学习背景】</strong><span style="white-space:pre"> </span>在之前的几篇博客中,我们了解到了WCF从哪里来,什么是WCF,这篇博客,我们继续学习有关WCF的基础知识。<strong>【学习内容】</stro
【学习背景】
	在之前的几篇博客中,我们了解到了WCF从哪里来,什么是WCF,这篇博客,我们继续学习有关WCF的基础知识。
【学习内容】
	一.地址
	1.地址格式
		地址通常采用如下格式:
			[基地址] / [可选的URI]
		基地址(Base Address)通常的格式如下:
			[传输协议] : // [机器名或域名] [:可选端口]
	ITOO学籍管理示例:

                       

	含义是:
		采用HTTP协议访问localhost机器,BasicStudentService服务在8335端口处等待用户的调用。
	2.地址类型:
		TCPHTTPPeer network(对等网)、IPC(基于命名管道的内部进程通信)、MSMQ
 
	.契约
	1.是什么:
		与平台无关,是描述服务功能的标准方式。
	2.契约类型:
		服务契约(Service Contract):描述了客户端能够执行的服务操作。
		数据契约(Data Contract):定义了与服务交互的数据类型。
		错误契约(Fault Contract):定义了服务抛出的操作,以及服务处理错误和传递错误到客户端的方式。
		消息契约(Message Contract):允许服务直接与消息交互。极少使用
	3.定义与使用:

                       


.托管

1.有何而来:

每个WCF服务都必须托管。在Windows进程中,该进程被称为宿主进程(Host Process。单个宿主进程可以托管多个服务,而相同的服务类型也能够托管多个宿主进程中。宿主可以由IIS提供,也可以由WindowsVistaWindows激活服务提供,或者开发者直接将它作为应用程序的一部分。

2.IIS托管:

优势:宿主进程可以在客户端提交第一次请求的时候自动启动,还可以借助IIS管理宿主进程的生命周期。

缺点:只能使用HTTP协议。

3.Web.Config文件:

配置文件中必须列出需要公开为服务的类型。类型使用类型全名,如果服务类型来自于一个没有被引用的程序集,则还需要包括程序集名:

ITOO学籍管理模块:

.绑定

1.从何而来:

服务之间的通信方式多种多样,可能存在多种通信模式。

同步/异步请求、即时/持久消息;

传输协议也有多种;消息编码格式也存在多种,消息的安全保障也有多种策略。

客户端与服务必须合理的组合这些选项,才能保障通信的顺畅。

为了简化这些选项,使它们易于管理,WCF引入了绑定。

2.是什么:

一个绑定封装了诸如传输协议、消息编码、通信模式、安全性等相关选项的集合,使它们保持一致。

3.9种标准绑定:

基本绑定(Basic Binding):由BasicHttpBinding类提供。

其它绑定:TCP/对等网/IPC/Web服务/WS联邦/WS双向/MSMQ/MSMQ集成绑定。

    基本绑定的格式与编码:

BasicHTTPBinding: HTTP/HTPPS协议,Text/MTOM编码格式,支持互操作性。

五.终结点:

     1.是什么:
     服务与地址、绑定以及契约有关。
     其中,地址定义了服务的位置,绑定定义了服务通信的方式,契约定义了服务的内容。
     WCF中便用终结点表示这样一种组成关系,终结点就是地址、契约与绑定的混成品。
2.管理方式配置终结点:

ITOO中终结点的配置:

学习心得】

通过这一次的学习,算是把WCF的基础知识系统的学习了一遍。之前总是在代码中知道,有个模板怎么写,自己也就跟着那么写,并不清楚,代码的具体内涵。而现在有了代码和基础知识的结合,自己也明白了为什么会这么写,以及这么写的含义。这些基础知识点,还是需要自己点点滴滴去积累的。


目录
相关文章
|
SQL 消息中间件 Kafka
流数据湖平台Apache Paimon(二)集成 Flink 引擎
流数据湖平台Apache Paimon(二)集成 Flink 引擎
1450 0
|
Kubernetes 安全 Linux
使用kubeadm快速部署一个k8s集群
使用kubeadm快速部署一个k8s集群
|
语音技术 数据安全/隐私保护 Python
语音识别---数据输入(input语句),布尔类型和比较运算符,if语句的基本格式,Python通过空格缩进来判断代码块的归属关系,我要买票吗讲解?if_elif_else
语音识别---数据输入(input语句),布尔类型和比较运算符,if语句的基本格式,Python通过空格缩进来判断代码块的归属关系,我要买票吗讲解?if_elif_else
java202304java学习笔记第六十六天-ssm-mybatis中dao层实现-动态sql-foreach之1
java202304java学习笔记第六十六天-ssm-mybatis中dao层实现-动态sql-foreach之1
162 0
|
NoSQL Redis Sentinel
从哨兵Leader选举学习Raft协议实现(下)(二)
从哨兵Leader选举学习Raft协议实现(下)
92 0
|
C语言 C++
经典递归 - 汉诺塔问题
经典递归 - 汉诺塔问题
149 0
经典递归 - 汉诺塔问题
|
Linux
I.MX6 Kernel BUG at include/linux/netdevice.h:520!
/*************************************************************************** * I.MX6 Kernel BUG at include/linux/netdevice.h:520! * 声明: * 导致这个问题的原因是对应网卡控制器上的phy已经被移除。
1626 0
|
Java Shell Android开发
监听自身卸载,弹出用户反馈调查
1,情景分析         在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。不知
1241 0