WCF 学习系列——WCF的学习基础
这个系列的博客由WCF4 高级编程学习记录,如有错误请指正。
首先介绍一些概念:
SOA: (Service-Oriented Architecture 面向服务架构),一种架构方法,也是一种编程模式。SOA架构允许用户一定的方式组织分布是应用程序。SOA基本思想就是构建一个松耦合的系统,SOA构架的技术基础是SOAP标准。
SOAP:(Simple Object Access Protocol 简单对象访问协议),交换数据的一种协议,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议。使用XML语言来定义一个服务操作所发送和接收消息的内容。一个SOAP包含一个消息头(可选)和一个消息体(必须),消息头与业务无关,消息体包含有用数据。
XSD: 指XML结构定义 ( XML Schemas Definition )
WS-* Protocols:WS-*是一系列标准协议,他们规定了使用分布式消息传递时如何实现某个需求和行为;描述了如何通过SOAP头元素实现安全、可靠、事务性的消息交换等。
WSDL:对契约的XML格式的定义,包括服务接口的元数据,函数名称、参数名称、数据类型、函数返回值类型等。WSDL文档主要作用就是按跨平台方式定义契约,因为它是按照XML格式定义的。
SOAP架构的原则:
- 1. 边界显示定义:服务运行时所处的进程和内存空间必须独立于引用服务的客户端程序所在的进程和内存空间,客户端通过地址访问服务。通俗的讲:客户端和服务运行在完全不同的两个地方,服务告诉客户端地址。
- 2. 服务自动化: 服务是不依赖其他服务的行为的独立程序模块。服务之间没有任何耦合,且每个服务的不同版本相互独立。
- 3. 服务共享的是模式和契约,而不是实现类:模式是对服务操作的定义,它以独立于平台的方式来描述签名。契约是服务的元数据,是服务作为黑盒的对外接口。我的理解是:客户端和服务共享的只有接口,而不是具体的实现类。
- 4. 基于策略的服务兼容性: 也就是说服务决定在满足一定条件的情况下才能处理客户端发送的消息。如消息的格式和对安全方面的要求,必须使用策略。
服务的生态系统:

SOA服务生态系统组成示意图
- 1. 应用程序由服务组成:整个系统的核心就是服务,由服务组成的模块构建起完整的应用程序。
- 2. 服务的状态管理: 服务的任务和操作就是持久化数据和读取数据。
- 3. 服务的实施策略:服务幽泉制定与服务逻辑有关的策略,策略定义了服务使用者行为模式的先决条件。该策略大多数是安全方面的协议。
- 4. 策略实施操作要求:客户端必须实施某种安全策略才能调用服务。
- 5. 服务是由契约绑定的: 当服务描述的操作签名存在时,服务才存在。契约显示定义,并且在运行时要绑定到服务。
- 6. 契约定义了消息交换模式:消息交换模式分为三种:
1. 请求-相应模式: 最常见的模式,每次调用都返回消息。
2. 单向模式: 服务没有返回结构,可以异步调用。
3. 双向模式: 服务和客户端可以项目调用。
- 7. 契约包含模式,而模式定义消息的结构: 模式采用XSD文档格式来描述参数。XSD用来描述传入服务操作的参数和返回的结果。
- 8. 消息交换模式是一个消息集: 消息的组合和调用顺序可以用一个更加复杂的交换模式来描述。消息交换模式定义哪个操作先调用,哪个操作后调用。
- 9. 服务交换信息: 交换信息意味着调用一个操作和接收来自此操作的相应。交换信息也就是,一个消息把客户端的输入参数传输给服务,另一个消息把相应传送给调用者。
这篇文章介绍了基本的SOA程序的构成部分和服务在SOA程序中的作用,下一篇文章介绍WCF的基础内容。
WCF 学习系列——WCF的学习基础的更多相关文章
- Python学习系列(二)(基础知识)
Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...
- 《Python爬虫学习系列教程》学习笔记
http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...
- 【深度学习系列】迁移学习Transfer Learning
在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...
- Python学习系列(一)(基础入门)
Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频 ...
- Python 学习系列----第一章:基础知识
1.1 常量-----不能改变它的值 1.2 数 在Python 中数可以分为整数.浮点数和复数. PS:在Python中不用区分'long int'类型.默认的整数类型可以任意长.(译者注:长度应该 ...
- 【Spring源码深度解析学习系列】容器的基础XmlBeanFactory(二)
一.配置文件封装 Spring的配置文件读取是通过ClassPathResource进行封装的,如new ClassPathResource("test.xml"),那么Class ...
- [jQuery学习系列五 ]5-Jquery学习五-表单验证
前言最近总是有一个感觉,虽然这些东西都自己学习并一个案例一个案例的去验证过了.但是总觉得不写成博客记录下来这些都不是自己的东西(心理作用,哈哈).所以每当学习或者复习相关的知识我都喜欢记录下来,下面开 ...
- Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取
https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...
- [jQuery学习系列二 ]2-JQuery学习二-数组操作
前言 上一篇内容 已经对于Jquery 有了一些认识, 包括Jquery的选择器和DOM对象, 那么这一篇继续来看下Jquery中很实用的Jquery对于数组的操作. Jquery中对数组的操作大致有 ...
随机推荐
- [计算机视觉][神经网络与深度学习]R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
R-FCN.SSD.YOLO2.faster-rcnn和labelImg实验笔记 转自:https://ask.julyedu.com/question/7490 R-FCN paper:https: ...
- python的进修之路
PYTHON目录篇 本篇主要在个人学习python中的一些总结性的总线,包括python的基础,python的基础进阶,除了帮助和我一样学习python的同学,也是对自己的一种要求! python基础 ...
- 使用qmlscene命令来快速查看编辑的qml文件的实际效果图
一片金灿灿的树叶落下来,仿佛飞来了许许多多翩翩起舞的黄蝴蝶. Qt SDK 提供 了 一个 命令行 环境, 给那些 有 特殊 需求 的 开发者, 方便 他们 在 不 使用 Qt Creator 集成 ...
- lambda表达式已经成为了开发者必须要掌握的技能?
lambda表达式 lambda表达式是什么 引用百度百科 “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的la ...
- [转帖]Linux中的find(-atime、-ctime、-mtime)指令分析
Linux中的find(-atime.-ctime.-mtime)指令分析 https://www.cnblogs.com/zhangjinjin01/p/5505970.html https://w ...
- linux net通信 基于密钥
配置SSHD服务 SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来进行远程登录 ...
- 27 多线程(一)——创建进程的三种方法、线程锁(同步synchornized与lock)
线程的流程 线程的创建 有三种方法,重点掌握前两种: 继承Thread类 实现Runnable接口(推荐使用:避免单继承的局限性) 实现Callable接口 根据java的思想,要少用继承,多用实现. ...
- VirtualBox安装文档教程
1找到安装包双击打开 2 3 这里可以更改安装路径 4 5 6 7 等待安装 8
- Geoserver 跨域设置
1.下载跨域jar包jetty-servlets.jar(下载geoserver使用的对应jetty版本——可以查看<Geoserver>\lib下jetty-servlet.jar的版本 ...
- ssh密码正确无法连接
新建了一个虚拟机,准备用ssh 连接管理,提示权限不足, 账号密码没问题,防火墙没有开 打开ssh服务的配置文件,默认在 /etc/ssh/sshd_config (不是 ssh_config) 检 ...