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中对数组的操作大致有 ...
随机推荐
- LeetCode:复原IP地址【93】
LeetCode:复原IP地址[93] 题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: [&qu ...
- Python界面常用GUI包
作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的 1.tkin ...
- 解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'
下面是我在学习中遇到的问题,给大家分享一下: ''' 这里是测试代码 '''# coding = utf-8from selenium import webdriverfrom selenium. ...
- 查看端口被哪个程序占用的DOS命令
netstat -aon | findstr 80Proto Local Address Foreign Address State PID==== ============ ============ ...
- QT_QML_常见问题
1. qml文件中,如果要添加信号连接,如果与控件x有丁点关联,则将Connections{}最好放到该控件的{}内部,不这样做曾经遇到接受不到信号的奇葩问题. 2. 使用TabView时,在每个Ta ...
- 02_四大组件之Activity
四大组件之Activity 1. 理论概述 1.1 Activity的理解 Servlet的理解回顾 狭义 Servlet是一个interface,我们的Servlet类都必须是此接口的实现类 广义 ...
- PMBOK(第六版) PMP备考知识总汇!
记录本人学习PMBOK第六版的学习笔记. 备考知识总汇! PMBOK序章 PMP备考指南之相关事项介绍 PMP备考指南之第一章:引论 PMP备考指南之第二章:项目运作环境 PMP备考指南之第三章:项目 ...
- MySQL中主键id不连贯重置处理办法
MySQL中有时候会出现主键字段不连续,或者顺序乱了,想重置从1开始自增,下面处理方法 先删除原有主键,再新增新主键字段就好了 #删除原有自增主键 ALTER TABLE appraiser_info ...
- C++ 多态详解及常见面试题
今天,讲一讲多态: 多态就是不同对象对同一行为会有不同的状态.(举例 : 学生和成人都去买票时,学生会打折,成人不会) 实现多态有两个条件: 一是虚函数重写,重写就是用来设置不同状态的 二是对象调 ...
- Ubuntu下载搜狗输入法
实在...因为百度上写的就很好了,所以这里就直接“链”了.. https://jingyan.baidu.com/article/2d5afd6933a67b85a2e28e9f.html