《Web GIS原理与应用开发》读书笔记(1)
第一章 Web GIS 概述
以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著
1.1 GIS的发展
20世纪60年代,世界上第一个地信系统:加拿大地理信息系统(CGIS)
发展历程:
- 1970-1980年,大量试验开发阶段
- 1980-1990年,商业开发和运作阶段
- 1990-2000年:以用户为主导的阶段
现阶段GIS的地位:采集、管理、分析空间数据,共享全球信息资源,为政府管理提供决策、科学研究和实施可持续发展战略的工具和手段
内涵的变化:狭义的地理信息系统(管理地理信息的计算机系统) 到 更广泛的空间信息系统(Spatial Information System),形成了地球信息科学(GeoInformation)
技术发展
第一代:单机单用户(如同单机游戏一般)
第二代:引用网络,实现了多级多用户,
C/S结构
(用户们在局域网内共享数据)C/S(Client-Server模式)
:每人一个客户端,与服务器传递数据第三代:引入互联网技术,实现较低层次的
B/S结构
,中间件技术与空间数据库B/S(Browser-Server模式)
:大家通过浏览器共同访问一个页面,与服务器传递数据第四代:引入Web服务,分布式互操作与数据/服务集成
此处可参阅该博客:https://blog.csdn.net/orangelizq/article/details/6915111
1.2 Web GIS 及其发展
在之前的地理信息系统中,各GIS软件的数据模型、数据组织结构不同
,给数据共享带来了巨大的困难
数据模型、数据组织结构不同
:不同类型的文件内部,对空间属性的表达不同
Web GIS是一个交互式的
、分布式的
、动态的
地理信息系统
交互式的
:并非只是展示数据,允许用户更新数据。用户请求,服务器返回相应的结果分布式的
:不同的数据、程序分别放在不同的服务器上,可以很好地解决数据异构问题动态的
:实时从服务器获取数据,并非加载本地静态数据
Web GIS的基本思想:在互联网上提供地理信息服务
1.2.1 传统Web GIS 的不足
与传统相比,分布式地理信息系统优点:更广泛的访问范围
、平台独立性
、低系统成本
、更简单的操作
平台独立性
:不依赖运行环境,如用户浏览空间数据并不需要在本地安装空间数据库
新一代GIS的重要发展方向:分布式
、可互操作性
1.2.2 从Web站点发展为Web服务
xml的出现,帮助web服务构建了一个通用的、与平台和语言无关的技术层
OGS:Open Geospatial Consortium,开放地理空间信息联盟
OGS规则由server到service的转变
server
#mermaid-svg-DwR2NaP7BKxcJYnh .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .label text{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .node rect,#mermaid-svg-DwR2NaP7BKxcJYnh .node circle,#mermaid-svg-DwR2NaP7BKxcJYnh .node ellipse,#mermaid-svg-DwR2NaP7BKxcJYnh .node polygon,#mermaid-svg-DwR2NaP7BKxcJYnh .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-DwR2NaP7BKxcJYnh .node .label{text-align:center;fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .node.clickable{cursor:pointer}#mermaid-svg-DwR2NaP7BKxcJYnh .arrowheadPath{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-DwR2NaP7BKxcJYnh .flowchart-link{stroke:#333;fill:none}#mermaid-svg-DwR2NaP7BKxcJYnh .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-DwR2NaP7BKxcJYnh .edgeLabel rect{opacity:0.9}#mermaid-svg-DwR2NaP7BKxcJYnh .edgeLabel span{color:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-DwR2NaP7BKxcJYnh .cluster text{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-DwR2NaP7BKxcJYnh .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-DwR2NaP7BKxcJYnh text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-DwR2NaP7BKxcJYnh .actor-line{stroke:grey}#mermaid-svg-DwR2NaP7BKxcJYnh .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-DwR2NaP7BKxcJYnh #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .sequenceNumber{fill:#fff}#mermaid-svg-DwR2NaP7BKxcJYnh #sequencenumber{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh #crosshead path{fill:#333;stroke:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .messageText{fill:#333;stroke:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-DwR2NaP7BKxcJYnh .labelText,#mermaid-svg-DwR2NaP7BKxcJYnh .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-DwR2NaP7BKxcJYnh .loopText,#mermaid-svg-DwR2NaP7BKxcJYnh .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-DwR2NaP7BKxcJYnh .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-DwR2NaP7BKxcJYnh .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-DwR2NaP7BKxcJYnh .noteText,#mermaid-svg-DwR2NaP7BKxcJYnh .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-DwR2NaP7BKxcJYnh .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-DwR2NaP7BKxcJYnh .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-DwR2NaP7BKxcJYnh .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-DwR2NaP7BKxcJYnh .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .section{stroke:none;opacity:0.2}#mermaid-svg-DwR2NaP7BKxcJYnh .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-DwR2NaP7BKxcJYnh .section2{fill:#fff400}#mermaid-svg-DwR2NaP7BKxcJYnh .section1,#mermaid-svg-DwR2NaP7BKxcJYnh .section3{fill:#fff;opacity:0.2}#mermaid-svg-DwR2NaP7BKxcJYnh .sectionTitle0{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .sectionTitle1{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .sectionTitle2{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .sectionTitle3{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-DwR2NaP7BKxcJYnh .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .grid path{stroke-width:0}#mermaid-svg-DwR2NaP7BKxcJYnh .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-DwR2NaP7BKxcJYnh .task{stroke-width:2}#mermaid-svg-DwR2NaP7BKxcJYnh .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .taskText:not([font-size]){font-size:11px}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-DwR2NaP7BKxcJYnh .task.clickable{cursor:pointer}#mermaid-svg-DwR2NaP7BKxcJYnh .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DwR2NaP7BKxcJYnh .taskText0,#mermaid-svg-DwR2NaP7BKxcJYnh .taskText1,#mermaid-svg-DwR2NaP7BKxcJYnh .taskText2,#mermaid-svg-DwR2NaP7BKxcJYnh .taskText3{fill:#fff}#mermaid-svg-DwR2NaP7BKxcJYnh .task0,#mermaid-svg-DwR2NaP7BKxcJYnh .task1,#mermaid-svg-DwR2NaP7BKxcJYnh .task2,#mermaid-svg-DwR2NaP7BKxcJYnh .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutside0,#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutside2{fill:#000}#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutside1,#mermaid-svg-DwR2NaP7BKxcJYnh .taskTextOutside3{fill:#000}#mermaid-svg-DwR2NaP7BKxcJYnh .active0,#mermaid-svg-DwR2NaP7BKxcJYnh .active1,#mermaid-svg-DwR2NaP7BKxcJYnh .active2,#mermaid-svg-DwR2NaP7BKxcJYnh .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-DwR2NaP7BKxcJYnh .activeText0,#mermaid-svg-DwR2NaP7BKxcJYnh .activeText1,#mermaid-svg-DwR2NaP7BKxcJYnh .activeText2,#mermaid-svg-DwR2NaP7BKxcJYnh .activeText3{fill:#000 !important}#mermaid-svg-DwR2NaP7BKxcJYnh .done0,#mermaid-svg-DwR2NaP7BKxcJYnh .done1,#mermaid-svg-DwR2NaP7BKxcJYnh .done2,#mermaid-svg-DwR2NaP7BKxcJYnh .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-DwR2NaP7BKxcJYnh .doneText0,#mermaid-svg-DwR2NaP7BKxcJYnh .doneText1,#mermaid-svg-DwR2NaP7BKxcJYnh .doneText2,#mermaid-svg-DwR2NaP7BKxcJYnh .doneText3{fill:#000 !important}#mermaid-svg-DwR2NaP7BKxcJYnh .crit0,#mermaid-svg-DwR2NaP7BKxcJYnh .crit1,#mermaid-svg-DwR2NaP7BKxcJYnh .crit2,#mermaid-svg-DwR2NaP7BKxcJYnh .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-DwR2NaP7BKxcJYnh .activeCrit0,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCrit1,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCrit2,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-DwR2NaP7BKxcJYnh .doneCrit0,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCrit1,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCrit2,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-DwR2NaP7BKxcJYnh .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-DwR2NaP7BKxcJYnh .milestoneText{font-style:italic}#mermaid-svg-DwR2NaP7BKxcJYnh .doneCritText0,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCritText1,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCritText2,#mermaid-svg-DwR2NaP7BKxcJYnh .doneCritText3{fill:#000 !important}#mermaid-svg-DwR2NaP7BKxcJYnh .activeCritText0,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCritText1,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCritText2,#mermaid-svg-DwR2NaP7BKxcJYnh .activeCritText3{fill:#000 !important}#mermaid-svg-DwR2NaP7BKxcJYnh .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-DwR2NaP7BKxcJYnh g.classGroup text .title{font-weight:bolder}#mermaid-svg-DwR2NaP7BKxcJYnh g.clickable{cursor:pointer}#mermaid-svg-DwR2NaP7BKxcJYnh g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-DwR2NaP7BKxcJYnh g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-DwR2NaP7BKxcJYnh .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-DwR2NaP7BKxcJYnh .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-DwR2NaP7BKxcJYnh .dashed-line{stroke-dasharray:3}#mermaid-svg-DwR2NaP7BKxcJYnh #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh .commit-id,#mermaid-svg-DwR2NaP7BKxcJYnh .commit-msg,#mermaid-svg-DwR2NaP7BKxcJYnh .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-DwR2NaP7BKxcJYnh g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-DwR2NaP7BKxcJYnh g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-DwR2NaP7BKxcJYnh g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-DwR2NaP7BKxcJYnh .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-DwR2NaP7BKxcJYnh .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-DwR2NaP7BKxcJYnh .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-DwR2NaP7BKxcJYnh .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-DwR2NaP7BKxcJYnh .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-DwR2NaP7BKxcJYnh .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-DwR2NaP7BKxcJYnh .edgeLabel text{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DwR2NaP7BKxcJYnh .node circle.state-start{fill:black;stroke:black}#mermaid-svg-DwR2NaP7BKxcJYnh .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-DwR2NaP7BKxcJYnh #statediagram-barbEnd{fill:#9370db}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-state .divider{stroke:#9370db}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-DwR2NaP7BKxcJYnh .note-edge{stroke-dasharray:5}#mermaid-svg-DwR2NaP7BKxcJYnh .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-DwR2NaP7BKxcJYnh .error-icon{fill:#522}#mermaid-svg-DwR2NaP7BKxcJYnh .error-text{fill:#522;stroke:#522}#mermaid-svg-DwR2NaP7BKxcJYnh .edge-thickness-normal{stroke-width:2px}#mermaid-svg-DwR2NaP7BKxcJYnh .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-DwR2NaP7BKxcJYnh .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-DwR2NaP7BKxcJYnh .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-DwR2NaP7BKxcJYnh .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-DwR2NaP7BKxcJYnh .marker{fill:#333}#mermaid-svg-DwR2NaP7BKxcJYnh .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-DwR2NaP7BKxcJYnh {color: rgba(0, 0, 0, 0.75);font: ;}Client ApplicationWeb ServerWeb Feature ServerOGC Feature Datastoreservice
#mermaid-svg-Lua5Cru5QJBCkl82 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .label text{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .node rect,#mermaid-svg-Lua5Cru5QJBCkl82 .node circle,#mermaid-svg-Lua5Cru5QJBCkl82 .node ellipse,#mermaid-svg-Lua5Cru5QJBCkl82 .node polygon,#mermaid-svg-Lua5Cru5QJBCkl82 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Lua5Cru5QJBCkl82 .node .label{text-align:center;fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .node.clickable{cursor:pointer}#mermaid-svg-Lua5Cru5QJBCkl82 .arrowheadPath{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Lua5Cru5QJBCkl82 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Lua5Cru5QJBCkl82 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Lua5Cru5QJBCkl82 .edgeLabel rect{opacity:0.9}#mermaid-svg-Lua5Cru5QJBCkl82 .edgeLabel span{color:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Lua5Cru5QJBCkl82 .cluster text{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Lua5Cru5QJBCkl82 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Lua5Cru5QJBCkl82 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Lua5Cru5QJBCkl82 .actor-line{stroke:grey}#mermaid-svg-Lua5Cru5QJBCkl82 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Lua5Cru5QJBCkl82 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .sequenceNumber{fill:#fff}#mermaid-svg-Lua5Cru5QJBCkl82 #sequencenumber{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .messageText{fill:#333;stroke:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Lua5Cru5QJBCkl82 .labelText,#mermaid-svg-Lua5Cru5QJBCkl82 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Lua5Cru5QJBCkl82 .loopText,#mermaid-svg-Lua5Cru5QJBCkl82 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Lua5Cru5QJBCkl82 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Lua5Cru5QJBCkl82 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Lua5Cru5QJBCkl82 .noteText,#mermaid-svg-Lua5Cru5QJBCkl82 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Lua5Cru5QJBCkl82 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Lua5Cru5QJBCkl82 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Lua5Cru5QJBCkl82 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Lua5Cru5QJBCkl82 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .section{stroke:none;opacity:0.2}#mermaid-svg-Lua5Cru5QJBCkl82 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Lua5Cru5QJBCkl82 .section2{fill:#fff400}#mermaid-svg-Lua5Cru5QJBCkl82 .section1,#mermaid-svg-Lua5Cru5QJBCkl82 .section3{fill:#fff;opacity:0.2}#mermaid-svg-Lua5Cru5QJBCkl82 .sectionTitle0{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .sectionTitle1{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .sectionTitle2{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .sectionTitle3{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Lua5Cru5QJBCkl82 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .grid path{stroke-width:0}#mermaid-svg-Lua5Cru5QJBCkl82 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Lua5Cru5QJBCkl82 .task{stroke-width:2}#mermaid-svg-Lua5Cru5QJBCkl82 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .taskText:not([font-size]){font-size:11px}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Lua5Cru5QJBCkl82 .task.clickable{cursor:pointer}#mermaid-svg-Lua5Cru5QJBCkl82 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Lua5Cru5QJBCkl82 .taskText0,#mermaid-svg-Lua5Cru5QJBCkl82 .taskText1,#mermaid-svg-Lua5Cru5QJBCkl82 .taskText2,#mermaid-svg-Lua5Cru5QJBCkl82 .taskText3{fill:#fff}#mermaid-svg-Lua5Cru5QJBCkl82 .task0,#mermaid-svg-Lua5Cru5QJBCkl82 .task1,#mermaid-svg-Lua5Cru5QJBCkl82 .task2,#mermaid-svg-Lua5Cru5QJBCkl82 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutside0,#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutside2{fill:#000}#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutside1,#mermaid-svg-Lua5Cru5QJBCkl82 .taskTextOutside3{fill:#000}#mermaid-svg-Lua5Cru5QJBCkl82 .active0,#mermaid-svg-Lua5Cru5QJBCkl82 .active1,#mermaid-svg-Lua5Cru5QJBCkl82 .active2,#mermaid-svg-Lua5Cru5QJBCkl82 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Lua5Cru5QJBCkl82 .activeText0,#mermaid-svg-Lua5Cru5QJBCkl82 .activeText1,#mermaid-svg-Lua5Cru5QJBCkl82 .activeText2,#mermaid-svg-Lua5Cru5QJBCkl82 .activeText3{fill:#000 !important}#mermaid-svg-Lua5Cru5QJBCkl82 .done0,#mermaid-svg-Lua5Cru5QJBCkl82 .done1,#mermaid-svg-Lua5Cru5QJBCkl82 .done2,#mermaid-svg-Lua5Cru5QJBCkl82 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Lua5Cru5QJBCkl82 .doneText0,#mermaid-svg-Lua5Cru5QJBCkl82 .doneText1,#mermaid-svg-Lua5Cru5QJBCkl82 .doneText2,#mermaid-svg-Lua5Cru5QJBCkl82 .doneText3{fill:#000 !important}#mermaid-svg-Lua5Cru5QJBCkl82 .crit0,#mermaid-svg-Lua5Cru5QJBCkl82 .crit1,#mermaid-svg-Lua5Cru5QJBCkl82 .crit2,#mermaid-svg-Lua5Cru5QJBCkl82 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Lua5Cru5QJBCkl82 .activeCrit0,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCrit1,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCrit2,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Lua5Cru5QJBCkl82 .doneCrit0,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCrit1,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCrit2,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Lua5Cru5QJBCkl82 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Lua5Cru5QJBCkl82 .milestoneText{font-style:italic}#mermaid-svg-Lua5Cru5QJBCkl82 .doneCritText0,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCritText1,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCritText2,#mermaid-svg-Lua5Cru5QJBCkl82 .doneCritText3{fill:#000 !important}#mermaid-svg-Lua5Cru5QJBCkl82 .activeCritText0,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCritText1,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCritText2,#mermaid-svg-Lua5Cru5QJBCkl82 .activeCritText3{fill:#000 !important}#mermaid-svg-Lua5Cru5QJBCkl82 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Lua5Cru5QJBCkl82 g.classGroup text .title{font-weight:bolder}#mermaid-svg-Lua5Cru5QJBCkl82 g.clickable{cursor:pointer}#mermaid-svg-Lua5Cru5QJBCkl82 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Lua5Cru5QJBCkl82 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Lua5Cru5QJBCkl82 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Lua5Cru5QJBCkl82 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Lua5Cru5QJBCkl82 .dashed-line{stroke-dasharray:3}#mermaid-svg-Lua5Cru5QJBCkl82 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 .commit-id,#mermaid-svg-Lua5Cru5QJBCkl82 .commit-msg,#mermaid-svg-Lua5Cru5QJBCkl82 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Lua5Cru5QJBCkl82 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Lua5Cru5QJBCkl82 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Lua5Cru5QJBCkl82 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Lua5Cru5QJBCkl82 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Lua5Cru5QJBCkl82 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Lua5Cru5QJBCkl82 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Lua5Cru5QJBCkl82 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Lua5Cru5QJBCkl82 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Lua5Cru5QJBCkl82 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Lua5Cru5QJBCkl82 .edgeLabel text{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Lua5Cru5QJBCkl82 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Lua5Cru5QJBCkl82 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Lua5Cru5QJBCkl82 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Lua5Cru5QJBCkl82 .note-edge{stroke-dasharray:5}#mermaid-svg-Lua5Cru5QJBCkl82 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Lua5Cru5QJBCkl82 .error-icon{fill:#522}#mermaid-svg-Lua5Cru5QJBCkl82 .error-text{fill:#522;stroke:#522}#mermaid-svg-Lua5Cru5QJBCkl82 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Lua5Cru5QJBCkl82 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Lua5Cru5QJBCkl82 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Lua5Cru5QJBCkl82 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Lua5Cru5QJBCkl82 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Lua5Cru5QJBCkl82 .marker{fill:#333}#mermaid-svg-Lua5Cru5QJBCkl82 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-Lua5Cru5QJBCkl82 {color: rgba(0, 0, 0, 0.75);font: ;}WFS RequestWFS ResponseClientWeb Feature Service
1.2.3 从SOAP发展为REST
SOAP
:Simple Object Access Protocol,简单对象访问协议
- 在XML-RPC(Remote Procedure Call,远程过程调用)基础上,使用标准的XMl描述了RPC的请求信息(URI/方法/参数/返回值)
- 优点:跨语言,非常适合异步通信和C/S结构(松耦合)
- 缺点:必须在运行时做很多检查
REST
:Representation State Transfer,表达性状态转移
- 与SOAP相比,使用URL替换一个对象
- 优点:轻量、可读性好、不需要其他类库支持
- 缺点:URL可能很长、不容易被解析
1.2.4 从三层架构发展到多层架构
三层架构
#mermaid-svg-w2DJ46AoiO5f033X .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-w2DJ46AoiO5f033X .label text{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .node rect,#mermaid-svg-w2DJ46AoiO5f033X .node circle,#mermaid-svg-w2DJ46AoiO5f033X .node ellipse,#mermaid-svg-w2DJ46AoiO5f033X .node polygon,#mermaid-svg-w2DJ46AoiO5f033X .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-w2DJ46AoiO5f033X .node .label{text-align:center;fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .node.clickable{cursor:pointer}#mermaid-svg-w2DJ46AoiO5f033X .arrowheadPath{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-w2DJ46AoiO5f033X .flowchart-link{stroke:#333;fill:none}#mermaid-svg-w2DJ46AoiO5f033X .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-w2DJ46AoiO5f033X .edgeLabel rect{opacity:0.9}#mermaid-svg-w2DJ46AoiO5f033X .edgeLabel span{color:#333}#mermaid-svg-w2DJ46AoiO5f033X .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-w2DJ46AoiO5f033X .cluster text{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-w2DJ46AoiO5f033X .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-w2DJ46AoiO5f033X text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-w2DJ46AoiO5f033X .actor-line{stroke:grey}#mermaid-svg-w2DJ46AoiO5f033X .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-w2DJ46AoiO5f033X .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-w2DJ46AoiO5f033X #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-w2DJ46AoiO5f033X .sequenceNumber{fill:#fff}#mermaid-svg-w2DJ46AoiO5f033X #sequencenumber{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X #crosshead path{fill:#333;stroke:#333}#mermaid-svg-w2DJ46AoiO5f033X .messageText{fill:#333;stroke:#333}#mermaid-svg-w2DJ46AoiO5f033X .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-w2DJ46AoiO5f033X .labelText,#mermaid-svg-w2DJ46AoiO5f033X .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-w2DJ46AoiO5f033X .loopText,#mermaid-svg-w2DJ46AoiO5f033X .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-w2DJ46AoiO5f033X .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-w2DJ46AoiO5f033X .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-w2DJ46AoiO5f033X .noteText,#mermaid-svg-w2DJ46AoiO5f033X .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-w2DJ46AoiO5f033X .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-w2DJ46AoiO5f033X .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-w2DJ46AoiO5f033X .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-w2DJ46AoiO5f033X .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .section{stroke:none;opacity:0.2}#mermaid-svg-w2DJ46AoiO5f033X .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-w2DJ46AoiO5f033X .section2{fill:#fff400}#mermaid-svg-w2DJ46AoiO5f033X .section1,#mermaid-svg-w2DJ46AoiO5f033X .section3{fill:#fff;opacity:0.2}#mermaid-svg-w2DJ46AoiO5f033X .sectionTitle0{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .sectionTitle1{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .sectionTitle2{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .sectionTitle3{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-w2DJ46AoiO5f033X .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .grid path{stroke-width:0}#mermaid-svg-w2DJ46AoiO5f033X .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-w2DJ46AoiO5f033X .task{stroke-width:2}#mermaid-svg-w2DJ46AoiO5f033X .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .taskText:not([font-size]){font-size:11px}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-w2DJ46AoiO5f033X .task.clickable{cursor:pointer}#mermaid-svg-w2DJ46AoiO5f033X .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-w2DJ46AoiO5f033X .taskText0,#mermaid-svg-w2DJ46AoiO5f033X .taskText1,#mermaid-svg-w2DJ46AoiO5f033X .taskText2,#mermaid-svg-w2DJ46AoiO5f033X .taskText3{fill:#fff}#mermaid-svg-w2DJ46AoiO5f033X .task0,#mermaid-svg-w2DJ46AoiO5f033X .task1,#mermaid-svg-w2DJ46AoiO5f033X .task2,#mermaid-svg-w2DJ46AoiO5f033X .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutside0,#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutside2{fill:#000}#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutside1,#mermaid-svg-w2DJ46AoiO5f033X .taskTextOutside3{fill:#000}#mermaid-svg-w2DJ46AoiO5f033X .active0,#mermaid-svg-w2DJ46AoiO5f033X .active1,#mermaid-svg-w2DJ46AoiO5f033X .active2,#mermaid-svg-w2DJ46AoiO5f033X .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-w2DJ46AoiO5f033X .activeText0,#mermaid-svg-w2DJ46AoiO5f033X .activeText1,#mermaid-svg-w2DJ46AoiO5f033X .activeText2,#mermaid-svg-w2DJ46AoiO5f033X .activeText3{fill:#000 !important}#mermaid-svg-w2DJ46AoiO5f033X .done0,#mermaid-svg-w2DJ46AoiO5f033X .done1,#mermaid-svg-w2DJ46AoiO5f033X .done2,#mermaid-svg-w2DJ46AoiO5f033X .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-w2DJ46AoiO5f033X .doneText0,#mermaid-svg-w2DJ46AoiO5f033X .doneText1,#mermaid-svg-w2DJ46AoiO5f033X .doneText2,#mermaid-svg-w2DJ46AoiO5f033X .doneText3{fill:#000 !important}#mermaid-svg-w2DJ46AoiO5f033X .crit0,#mermaid-svg-w2DJ46AoiO5f033X .crit1,#mermaid-svg-w2DJ46AoiO5f033X .crit2,#mermaid-svg-w2DJ46AoiO5f033X .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-w2DJ46AoiO5f033X .activeCrit0,#mermaid-svg-w2DJ46AoiO5f033X .activeCrit1,#mermaid-svg-w2DJ46AoiO5f033X .activeCrit2,#mermaid-svg-w2DJ46AoiO5f033X .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-w2DJ46AoiO5f033X .doneCrit0,#mermaid-svg-w2DJ46AoiO5f033X .doneCrit1,#mermaid-svg-w2DJ46AoiO5f033X .doneCrit2,#mermaid-svg-w2DJ46AoiO5f033X .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-w2DJ46AoiO5f033X .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-w2DJ46AoiO5f033X .milestoneText{font-style:italic}#mermaid-svg-w2DJ46AoiO5f033X .doneCritText0,#mermaid-svg-w2DJ46AoiO5f033X .doneCritText1,#mermaid-svg-w2DJ46AoiO5f033X .doneCritText2,#mermaid-svg-w2DJ46AoiO5f033X .doneCritText3{fill:#000 !important}#mermaid-svg-w2DJ46AoiO5f033X .activeCritText0,#mermaid-svg-w2DJ46AoiO5f033X .activeCritText1,#mermaid-svg-w2DJ46AoiO5f033X .activeCritText2,#mermaid-svg-w2DJ46AoiO5f033X .activeCritText3{fill:#000 !important}#mermaid-svg-w2DJ46AoiO5f033X .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-w2DJ46AoiO5f033X g.classGroup text .title{font-weight:bolder}#mermaid-svg-w2DJ46AoiO5f033X g.clickable{cursor:pointer}#mermaid-svg-w2DJ46AoiO5f033X g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-w2DJ46AoiO5f033X g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-w2DJ46AoiO5f033X .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-w2DJ46AoiO5f033X .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-w2DJ46AoiO5f033X .dashed-line{stroke-dasharray:3}#mermaid-svg-w2DJ46AoiO5f033X #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X .commit-id,#mermaid-svg-w2DJ46AoiO5f033X .commit-msg,#mermaid-svg-w2DJ46AoiO5f033X .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-w2DJ46AoiO5f033X g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-w2DJ46AoiO5f033X g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-w2DJ46AoiO5f033X g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-w2DJ46AoiO5f033X .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-w2DJ46AoiO5f033X .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-w2DJ46AoiO5f033X .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-w2DJ46AoiO5f033X .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-w2DJ46AoiO5f033X .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-w2DJ46AoiO5f033X .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-w2DJ46AoiO5f033X .edgeLabel text{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-w2DJ46AoiO5f033X .node circle.state-start{fill:black;stroke:black}#mermaid-svg-w2DJ46AoiO5f033X .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-w2DJ46AoiO5f033X #statediagram-barbEnd{fill:#9370db}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-state .divider{stroke:#9370db}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-w2DJ46AoiO5f033X .note-edge{stroke-dasharray:5}#mermaid-svg-w2DJ46AoiO5f033X .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-w2DJ46AoiO5f033X .error-icon{fill:#522}#mermaid-svg-w2DJ46AoiO5f033X .error-text{fill:#522;stroke:#522}#mermaid-svg-w2DJ46AoiO5f033X .edge-thickness-normal{stroke-width:2px}#mermaid-svg-w2DJ46AoiO5f033X .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-w2DJ46AoiO5f033X .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-w2DJ46AoiO5f033X .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-w2DJ46AoiO5f033X .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-w2DJ46AoiO5f033X .marker{fill:#333}#mermaid-svg-w2DJ46AoiO5f033X .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-w2DJ46AoiO5f033X {color: rgba(0, 0, 0, 0.75);font: ;}HTTP请求HTTP响应Web浏览器Web服务器数据库服务器四层架构
#mermaid-svg-3kiVBwcshJk5Zxw1 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .label text{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .node rect,#mermaid-svg-3kiVBwcshJk5Zxw1 .node circle,#mermaid-svg-3kiVBwcshJk5Zxw1 .node ellipse,#mermaid-svg-3kiVBwcshJk5Zxw1 .node polygon,#mermaid-svg-3kiVBwcshJk5Zxw1 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-3kiVBwcshJk5Zxw1 .node .label{text-align:center;fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .node.clickable{cursor:pointer}#mermaid-svg-3kiVBwcshJk5Zxw1 .arrowheadPath{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-3kiVBwcshJk5Zxw1 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-3kiVBwcshJk5Zxw1 .edgeLabel rect{opacity:0.9}#mermaid-svg-3kiVBwcshJk5Zxw1 .edgeLabel span{color:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-3kiVBwcshJk5Zxw1 .cluster text{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-3kiVBwcshJk5Zxw1 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-3kiVBwcshJk5Zxw1 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .actor-line{stroke:grey}#mermaid-svg-3kiVBwcshJk5Zxw1 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .sequenceNumber{fill:#fff}#mermaid-svg-3kiVBwcshJk5Zxw1 #sequencenumber{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .messageText{fill:#333;stroke:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-3kiVBwcshJk5Zxw1 .labelText,#mermaid-svg-3kiVBwcshJk5Zxw1 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .loopText,#mermaid-svg-3kiVBwcshJk5Zxw1 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-3kiVBwcshJk5Zxw1 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-3kiVBwcshJk5Zxw1 .noteText,#mermaid-svg-3kiVBwcshJk5Zxw1 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-3kiVBwcshJk5Zxw1 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-3kiVBwcshJk5Zxw1 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-3kiVBwcshJk5Zxw1 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .section{stroke:none;opacity:0.2}#mermaid-svg-3kiVBwcshJk5Zxw1 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-3kiVBwcshJk5Zxw1 .section2{fill:#fff400}#mermaid-svg-3kiVBwcshJk5Zxw1 .section1,#mermaid-svg-3kiVBwcshJk5Zxw1 .section3{fill:#fff;opacity:0.2}#mermaid-svg-3kiVBwcshJk5Zxw1 .sectionTitle0{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .sectionTitle1{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .sectionTitle2{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .sectionTitle3{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-3kiVBwcshJk5Zxw1 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .grid path{stroke-width:0}#mermaid-svg-3kiVBwcshJk5Zxw1 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-3kiVBwcshJk5Zxw1 .task{stroke-width:2}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText:not([font-size]){font-size:11px}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-3kiVBwcshJk5Zxw1 .task.clickable{cursor:pointer}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText0,#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText1,#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText2,#mermaid-svg-3kiVBwcshJk5Zxw1 .taskText3{fill:#fff}#mermaid-svg-3kiVBwcshJk5Zxw1 .task0,#mermaid-svg-3kiVBwcshJk5Zxw1 .task1,#mermaid-svg-3kiVBwcshJk5Zxw1 .task2,#mermaid-svg-3kiVBwcshJk5Zxw1 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutside0,#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutside2{fill:#000}#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutside1,#mermaid-svg-3kiVBwcshJk5Zxw1 .taskTextOutside3{fill:#000}#mermaid-svg-3kiVBwcshJk5Zxw1 .active0,#mermaid-svg-3kiVBwcshJk5Zxw1 .active1,#mermaid-svg-3kiVBwcshJk5Zxw1 .active2,#mermaid-svg-3kiVBwcshJk5Zxw1 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-3kiVBwcshJk5Zxw1 .activeText0,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeText1,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeText2,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeText3{fill:#000 !important}#mermaid-svg-3kiVBwcshJk5Zxw1 .done0,#mermaid-svg-3kiVBwcshJk5Zxw1 .done1,#mermaid-svg-3kiVBwcshJk5Zxw1 .done2,#mermaid-svg-3kiVBwcshJk5Zxw1 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-3kiVBwcshJk5Zxw1 .doneText0,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneText1,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneText2,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneText3{fill:#000 !important}#mermaid-svg-3kiVBwcshJk5Zxw1 .crit0,#mermaid-svg-3kiVBwcshJk5Zxw1 .crit1,#mermaid-svg-3kiVBwcshJk5Zxw1 .crit2,#mermaid-svg-3kiVBwcshJk5Zxw1 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCrit0,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCrit1,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCrit2,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCrit0,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCrit1,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCrit2,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-3kiVBwcshJk5Zxw1 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-3kiVBwcshJk5Zxw1 .milestoneText{font-style:italic}#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCritText0,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCritText1,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCritText2,#mermaid-svg-3kiVBwcshJk5Zxw1 .doneCritText3{fill:#000 !important}#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCritText0,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCritText1,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCritText2,#mermaid-svg-3kiVBwcshJk5Zxw1 .activeCritText3{fill:#000 !important}#mermaid-svg-3kiVBwcshJk5Zxw1 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-3kiVBwcshJk5Zxw1 g.classGroup text .title{font-weight:bolder}#mermaid-svg-3kiVBwcshJk5Zxw1 g.clickable{cursor:pointer}#mermaid-svg-3kiVBwcshJk5Zxw1 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-3kiVBwcshJk5Zxw1 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-3kiVBwcshJk5Zxw1 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-3kiVBwcshJk5Zxw1 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .dashed-line{stroke-dasharray:3}#mermaid-svg-3kiVBwcshJk5Zxw1 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 .commit-id,#mermaid-svg-3kiVBwcshJk5Zxw1 .commit-msg,#mermaid-svg-3kiVBwcshJk5Zxw1 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-3kiVBwcshJk5Zxw1 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-3kiVBwcshJk5Zxw1 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-3kiVBwcshJk5Zxw1 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-3kiVBwcshJk5Zxw1 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-3kiVBwcshJk5Zxw1 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-3kiVBwcshJk5Zxw1 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-3kiVBwcshJk5Zxw1 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-3kiVBwcshJk5Zxw1 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-3kiVBwcshJk5Zxw1 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-3kiVBwcshJk5Zxw1 .edgeLabel text{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-3kiVBwcshJk5Zxw1 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-3kiVBwcshJk5Zxw1 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-3kiVBwcshJk5Zxw1 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-3kiVBwcshJk5Zxw1 .note-edge{stroke-dasharray:5}#mermaid-svg-3kiVBwcshJk5Zxw1 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-3kiVBwcshJk5Zxw1 .error-icon{fill:#522}#mermaid-svg-3kiVBwcshJk5Zxw1 .error-text{fill:#522;stroke:#522}#mermaid-svg-3kiVBwcshJk5Zxw1 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-3kiVBwcshJk5Zxw1 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-3kiVBwcshJk5Zxw1 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-3kiVBwcshJk5Zxw1 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-3kiVBwcshJk5Zxw1 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-3kiVBwcshJk5Zxw1 .marker{fill:#333}#mermaid-svg-3kiVBwcshJk5Zxw1 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-3kiVBwcshJk5Zxw1 {color: rgba(0, 0, 0, 0.75);font: ;}HTTP请求HTTP响应HTTP请求HTTP响应Web浏览器Web服务器GIS服务器数据库服务器地理信息数据库服务器多层架构
#mermaid-svg-cvzUyMO604BrJhZP .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-cvzUyMO604BrJhZP .label text{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .node rect,#mermaid-svg-cvzUyMO604BrJhZP .node circle,#mermaid-svg-cvzUyMO604BrJhZP .node ellipse,#mermaid-svg-cvzUyMO604BrJhZP .node polygon,#mermaid-svg-cvzUyMO604BrJhZP .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-cvzUyMO604BrJhZP .node .label{text-align:center;fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .node.clickable{cursor:pointer}#mermaid-svg-cvzUyMO604BrJhZP .arrowheadPath{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-cvzUyMO604BrJhZP .flowchart-link{stroke:#333;fill:none}#mermaid-svg-cvzUyMO604BrJhZP .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-cvzUyMO604BrJhZP .edgeLabel rect{opacity:0.9}#mermaid-svg-cvzUyMO604BrJhZP .edgeLabel span{color:#333}#mermaid-svg-cvzUyMO604BrJhZP .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-cvzUyMO604BrJhZP .cluster text{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-cvzUyMO604BrJhZP .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-cvzUyMO604BrJhZP text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-cvzUyMO604BrJhZP .actor-line{stroke:grey}#mermaid-svg-cvzUyMO604BrJhZP .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-cvzUyMO604BrJhZP .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-cvzUyMO604BrJhZP #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-cvzUyMO604BrJhZP .sequenceNumber{fill:#fff}#mermaid-svg-cvzUyMO604BrJhZP #sequencenumber{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP #crosshead path{fill:#333;stroke:#333}#mermaid-svg-cvzUyMO604BrJhZP .messageText{fill:#333;stroke:#333}#mermaid-svg-cvzUyMO604BrJhZP .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-cvzUyMO604BrJhZP .labelText,#mermaid-svg-cvzUyMO604BrJhZP .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-cvzUyMO604BrJhZP .loopText,#mermaid-svg-cvzUyMO604BrJhZP .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-cvzUyMO604BrJhZP .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-cvzUyMO604BrJhZP .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-cvzUyMO604BrJhZP .noteText,#mermaid-svg-cvzUyMO604BrJhZP .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-cvzUyMO604BrJhZP .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-cvzUyMO604BrJhZP .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-cvzUyMO604BrJhZP .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-cvzUyMO604BrJhZP .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .section{stroke:none;opacity:0.2}#mermaid-svg-cvzUyMO604BrJhZP .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-cvzUyMO604BrJhZP .section2{fill:#fff400}#mermaid-svg-cvzUyMO604BrJhZP .section1,#mermaid-svg-cvzUyMO604BrJhZP .section3{fill:#fff;opacity:0.2}#mermaid-svg-cvzUyMO604BrJhZP .sectionTitle0{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .sectionTitle1{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .sectionTitle2{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .sectionTitle3{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-cvzUyMO604BrJhZP .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .grid path{stroke-width:0}#mermaid-svg-cvzUyMO604BrJhZP .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-cvzUyMO604BrJhZP .task{stroke-width:2}#mermaid-svg-cvzUyMO604BrJhZP .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .taskText:not([font-size]){font-size:11px}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-cvzUyMO604BrJhZP .task.clickable{cursor:pointer}#mermaid-svg-cvzUyMO604BrJhZP .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-cvzUyMO604BrJhZP .taskText0,#mermaid-svg-cvzUyMO604BrJhZP .taskText1,#mermaid-svg-cvzUyMO604BrJhZP .taskText2,#mermaid-svg-cvzUyMO604BrJhZP .taskText3{fill:#fff}#mermaid-svg-cvzUyMO604BrJhZP .task0,#mermaid-svg-cvzUyMO604BrJhZP .task1,#mermaid-svg-cvzUyMO604BrJhZP .task2,#mermaid-svg-cvzUyMO604BrJhZP .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutside0,#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutside2{fill:#000}#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutside1,#mermaid-svg-cvzUyMO604BrJhZP .taskTextOutside3{fill:#000}#mermaid-svg-cvzUyMO604BrJhZP .active0,#mermaid-svg-cvzUyMO604BrJhZP .active1,#mermaid-svg-cvzUyMO604BrJhZP .active2,#mermaid-svg-cvzUyMO604BrJhZP .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-cvzUyMO604BrJhZP .activeText0,#mermaid-svg-cvzUyMO604BrJhZP .activeText1,#mermaid-svg-cvzUyMO604BrJhZP .activeText2,#mermaid-svg-cvzUyMO604BrJhZP .activeText3{fill:#000 !important}#mermaid-svg-cvzUyMO604BrJhZP .done0,#mermaid-svg-cvzUyMO604BrJhZP .done1,#mermaid-svg-cvzUyMO604BrJhZP .done2,#mermaid-svg-cvzUyMO604BrJhZP .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-cvzUyMO604BrJhZP .doneText0,#mermaid-svg-cvzUyMO604BrJhZP .doneText1,#mermaid-svg-cvzUyMO604BrJhZP .doneText2,#mermaid-svg-cvzUyMO604BrJhZP .doneText3{fill:#000 !important}#mermaid-svg-cvzUyMO604BrJhZP .crit0,#mermaid-svg-cvzUyMO604BrJhZP .crit1,#mermaid-svg-cvzUyMO604BrJhZP .crit2,#mermaid-svg-cvzUyMO604BrJhZP .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-cvzUyMO604BrJhZP .activeCrit0,#mermaid-svg-cvzUyMO604BrJhZP .activeCrit1,#mermaid-svg-cvzUyMO604BrJhZP .activeCrit2,#mermaid-svg-cvzUyMO604BrJhZP .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-cvzUyMO604BrJhZP .doneCrit0,#mermaid-svg-cvzUyMO604BrJhZP .doneCrit1,#mermaid-svg-cvzUyMO604BrJhZP .doneCrit2,#mermaid-svg-cvzUyMO604BrJhZP .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-cvzUyMO604BrJhZP .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-cvzUyMO604BrJhZP .milestoneText{font-style:italic}#mermaid-svg-cvzUyMO604BrJhZP .doneCritText0,#mermaid-svg-cvzUyMO604BrJhZP .doneCritText1,#mermaid-svg-cvzUyMO604BrJhZP .doneCritText2,#mermaid-svg-cvzUyMO604BrJhZP .doneCritText3{fill:#000 !important}#mermaid-svg-cvzUyMO604BrJhZP .activeCritText0,#mermaid-svg-cvzUyMO604BrJhZP .activeCritText1,#mermaid-svg-cvzUyMO604BrJhZP .activeCritText2,#mermaid-svg-cvzUyMO604BrJhZP .activeCritText3{fill:#000 !important}#mermaid-svg-cvzUyMO604BrJhZP .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-cvzUyMO604BrJhZP g.classGroup text .title{font-weight:bolder}#mermaid-svg-cvzUyMO604BrJhZP g.clickable{cursor:pointer}#mermaid-svg-cvzUyMO604BrJhZP g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-cvzUyMO604BrJhZP g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-cvzUyMO604BrJhZP .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-cvzUyMO604BrJhZP .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-cvzUyMO604BrJhZP .dashed-line{stroke-dasharray:3}#mermaid-svg-cvzUyMO604BrJhZP #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP .commit-id,#mermaid-svg-cvzUyMO604BrJhZP .commit-msg,#mermaid-svg-cvzUyMO604BrJhZP .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-cvzUyMO604BrJhZP g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-cvzUyMO604BrJhZP g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-cvzUyMO604BrJhZP g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-cvzUyMO604BrJhZP .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-cvzUyMO604BrJhZP .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-cvzUyMO604BrJhZP .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-cvzUyMO604BrJhZP .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-cvzUyMO604BrJhZP .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-cvzUyMO604BrJhZP .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-cvzUyMO604BrJhZP .edgeLabel text{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-cvzUyMO604BrJhZP .node circle.state-start{fill:black;stroke:black}#mermaid-svg-cvzUyMO604BrJhZP .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-cvzUyMO604BrJhZP #statediagram-barbEnd{fill:#9370db}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-state .divider{stroke:#9370db}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-cvzUyMO604BrJhZP .note-edge{stroke-dasharray:5}#mermaid-svg-cvzUyMO604BrJhZP .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-cvzUyMO604BrJhZP .error-icon{fill:#522}#mermaid-svg-cvzUyMO604BrJhZP .error-text{fill:#522;stroke:#522}#mermaid-svg-cvzUyMO604BrJhZP .edge-thickness-normal{stroke-width:2px}#mermaid-svg-cvzUyMO604BrJhZP .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-cvzUyMO604BrJhZP .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-cvzUyMO604BrJhZP .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-cvzUyMO604BrJhZP .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-cvzUyMO604BrJhZP .marker{fill:#333}#mermaid-svg-cvzUyMO604BrJhZP .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-cvzUyMO604BrJhZP {color: rgba(0, 0, 0, 0.75);font: ;}Web资源1混搭Web服务器1Web资源2Web浏览器Web资源3
混搭
:整合网络上多个资料来源或功能
1.2.5 从Web GIS 1.0 到 2.0
重要变换:
- 从静态的二维地图 -> 动态的二维全球性地图
- 文件传输FTP -> 使用Web服务
- 使用了混搭技术
1.3 Web服务
1.3.1 Web服务的重要性
1.3.1.1 从数据共享的角度看
- 可以提供大量的数据
- 节省人力、物力、时间
- 促进GIS发展
- 便于实现规范化和统一化
- 加强空间信息的管理
- 为数字地球奠定基础
3个主要概念(角色):空间信息资源(空间信息提供者)、空间信息的获取与处理(空间信息处理软件)、空间信息应用(用户)
空间信息共享要解决的问题
可达性
:用户能够获取到数据互操作性
:不同的GIS之间可以互相操作,对数据有相同的理解易用性
:要方便获取、方便使用
技术方面(由低层到高级):数据格式转换 -> 通过API直接获取 -> 基于DBMS集成 -> 基于Web Services集成
1.3.1.2 从软件复用的角度看
Web服务是服务的松散集合,可以方便的发布,可以进行查找和调用
1.3.1.3 从系统集成的角度看
基于对象技术的RPC方法
RPC
:指应用程序对运行在远程计算机上的代码进行功能调用- COM组件(可随意替换的带有各类功能的组件,拥有允许同一台计算机上的客户端和服务器之间进行通信的接口)使用DCOM(客户端程序对象请求来自网络中另一台计算机上的服务器程序对象的接口)/COM+(拥有一些新功能的COM)
- CORBA使用IIOP(可自行了解)
- Java使用RMI(支持从一个java虚拟机(JVM)到另一个java虚拟机的调用)
缺点:很难跨平台、同步调用阻塞
基于消息中间件技术的RPC方法
中间件
:可类比node中间件,node中间件是在函数与函数执行之间运行特定的命令,而此处中间件是在应用程序连接的两端运行特定的程序缺点:开放性仍然较低,提高开放性则需要提高成本等等(开放性:在程序原有的基础上继续拓展功能)
SOAP风格的Web服务方法
XML-RPC通过HTTP请求向RPC服务器提交请求,通过HTTP响应response获得RPC的调用结果。强调了XML和HTTP 的作用
SOAP风格的Web服务奖应用逻辑封装起来。
每个SOAP应用需要定义自己的接口,对于互操作性十分不利
REST风格的Web服务方法
REST解决了上述问题,更贴近WWW基础协议(通过URL请求和获取数据)
1.3.2 REST及REST风格的Web服务
1.3.2.1 REST
基础概念:
- 一切都被认为是一种资源,每个资源由URI标识
- 操作包括获取、创建、修改和删除,对应HTTP请求是GET、POST、PUT、DELETE
- 每个请求都是独立的,无状态
- 响应的表现形式可以是JSON、XML或者HTML
重要约束:
- 客户/服务器:请求只能由客户端单方面发起
- 无状态:会话状态由客户端负责
- 缓存:为提高效率,响应内容会被缓存(开发时经常使代码修改无变化,因为显示的仍是缓存内容)
- 统一接口:组件之间通过统一的接口通信
- 分层系统:通过限制组件的行为将其分解为若干等级(如组件可以看到同级和子级看不到父级)
- 按需代码(可选):支持通过下载执行一些代码
1.3.2.2 REST风格的Web服务
也称为REST风格的Web API
从三个方面定义资源:
- URI(URI:uniform resource identifier,资源的标识;URL:uniform resource locator,资源的定位,既能标识又能指明位置)
- 接受与返回的互联网媒体类型(JSON、XML、YAML等)
- 一系列请求方法(GET、POST、PUT、DELETE)
注意请求一组资源和一个资源时操作的区别
- PUT
- 一组资源:将一组资源替换为当前整组资源
- 单个资源:替换/创建指定的资源,并将其追加到相应组
- POST
- 一组资源:在本组中创建追加一个新资源
- 单个资源:把指定资源当做一个组,创建一个隶属于其的新元素
1.3.4 OGC的Web服务规范
OGC在空间信息Web服务方面制定了一系列规范,统称为OWS
地理数据服务(Data Service)
提供对空间数据的服务,主要有WFS(Web Feature Service,可进行增删改查)、WCS(Web Coverage Service,可以提供每一点的值),结果通常带有空间参照系
描绘服务(Portraval Service)
提供对地理空间信息进行可视化的能力。给定一个或多个输入,描绘服务会产生 渲染后的输出(地形透视图、注解图等等),主要有WMS(Web Map Service)
处理服务(Processing Service)
提供对地理空间数据进行操作的服务和增值服务,主要有WPS(Web Processing Service,网络处理服务)、Geocoder(地理编码服务)、Gazetter(地名词典服务)、Coordinate Transfer Service(坐标转换服务)等等
目录服务(Catalog Services)
提供各种服务、数据及相关资源的描述信息(元数据)集合的发布与查询,包括服务目录、样式目录、数据目录、设备目录等等
编码(Encodings)
所有OGC框架的编码规范都采用XML Schema来定义
OGC的规范定义或计划定义的编码主要包括GML(Geography Markup Language,地理置标语言)、SLD(Styled Layer Descriptor,样式化图层描述符)以及Service Metadata(服务元数据)
客户端应用(Client Application)
地图显示、地图浏览等服务
1.4 自由及开源软件、开放规范与开放数据
OSGeo
:Open Source Geospatial Foundation,国际地理空间开发基金会
FOSS
:Free and Open Source Software,自由及开源软件
开放数据格式:KML(Keyhole Markup Language,Keyhole标记语言)、GeoJSON、TopoJSON;JPEG、PNG;ESRI Shapefile
开放规范:国际标准化组织(ISO)技术委员会211(TC211)是最主要的空间信息标准组织之一
《Web GIS原理与应用开发》读书笔记(1)相关推荐
- 《Cloud Native Data Center Network》读书笔记-1
<Cloud Native Data Center Network>读书笔记-1 2019年的一本书,云原生数据中心网络入门书籍,作者 Dinesh G. Dutt 是一家网络公司的首席科 ...
- 《Cloud Native Data Center Network》读书笔记-7
第九章 数据中心边缘 9.1 问题 Clos与外部的连接 为什么需要进行外部连接? 连接到外部世界的带宽需求是什么? 数据中心网络将连接到什么上游设备? 穿越内外部世界的交通需要哪些服务? 9.2 连 ...
- 论文阅读——译文:PortLand:A Scalable Fault-Tolerant Layer 2 Data Center Network Fabric
论文标题:PortLand:A Scalable Fault-Tolerant Layer 2 Data Center Network Fabric 会议:sigcom 09 Ref:Radhika ...
- Fat-tree:A Scalable, Commodity Data Center Network Architecture 解读
Fat-tree:A Scalable, Commodity Data Center Network Architecture 解读 title: 一种可扩展的.商品化的数据中心网络体系结构 第一部分 ...
- 《Data Algorithm》读书笔记十一— 使用马尔科夫模型的智能邮件营销
<Data Algorithm>读书笔记十一 - 使用马尔科夫模型的智能邮件营销 1. 智能邮件营销 是什么? 根据顾客的交易历史观测(其实就是推测) "下一个智能邮件营销日期& ...
- 《Advanced Data Structures》读书笔记
1.基础数据结构 1.1.栈 1.2.队列 1.3 双端队列 1.4.动态分配节点 1.5.数组类的"阴影拷贝" 2.搜索树 3.平衡搜索树 4.区间集合 5.堆 6.并查集 7. ...
- 最新发布| Jira官宣中国区本地部署特殊政策,公布Data Center价格
Atlassian官方发布Jira Server版停售消息至今已3个月,面对中国区用户的抗议,官方终于于2021年2月2日推出针对性政策,即将DC版准入门槛从500人下调至25人,并于2月5日召开发 ...
- 《Python神经网络编程(Make Your Own Neural Network)》读书笔记
声明 这是作者在CSDN上的第二篇博客,关于阅读塔里克·拉希德的著作<Python神经网络编程(Make Your Own Neural Network)>之后的读书笔记.跟诸位大牛相比, ...
- Analyzing Neural Time Series Data 读书笔记6
Analyzing Neural Time Series Data 第六章读书笔记 仅做学习记录 6 Practicalities of EEG Measurement and Experiment ...
- Analyzing Neural Time Series Data 读书笔记3
Analyzing Neural Time Series Data 第三章读书笔记 仅做学习记录 3 Interpreting and Asking Questions about Time-Freq ...
最新文章
- C++多线程实现生产者消费者模式
- 通过神经图稳定对脑机接口的即插即用控制,四肢瘫痪患者可以轻松控制电脑光标...
- jupyter 安装目录Table of Contents
- 机器学习入门书籍导读-高等数学上
- 通过源码分析MyBatis的缓存
- qsort 三级排序
- tensorflow训练神经网络时loss出现nan的问题
- win7系统锁定计算机设置方法
- luoguP3281 [SCOI2013]数数
- 4SUM Leetcode
- iMeta | FSCapture报告录屏和视频剪辑(视频教程)
- Xcode9 LaunchScreen.storyboard 设置app启动图片
- chm文件打开空白或显示不全
- 几种平均数的物理意义应用场景
- 营养保健品公司网站建设策划书
- html添加微信号,html代码点击复制微信号并自动打开微信添加好友
- EPLAN中断点使用方法1
- git commit规范 、CHANGELOG生成 和版本发布的标准自动化
- 微信公众号支付详细步骤(整理)
- Linux安装maven