第一章 Web GIS 概述

以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著

1.1 GIS的发展

20世纪60年代,世界上第一个地信系统:加拿大地理信息系统(CGIS)

发展历程

  1. 1970-1980年,大量试验开发阶段
  2. 1980-1990年,商业开发和运作阶段
  3. 1990-2000年:以用户为主导的阶段

现阶段GIS的地位:采集、管理、分析空间数据,共享全球信息资源,为政府管理提供决策、科学研究和实施可持续发展战略的工具和手段

内涵的变化:狭义的地理信息系统(管理地理信息的计算机系统)更广泛的空间信息系统(Spatial Information System),形成了地球信息科学(GeoInformation)

技术发展

  1. 第一代:单机单用户(如同单机游戏一般)

  2. 第二代:引用网络,实现了多级多用户,C/S结构(用户们在局域网内共享数据)

    C/S(Client-Server模式):每人一个客户端,与服务器传递数据

  3. 第三代:引入互联网技术,实现较低层次的B/S结构,中间件技术与空间数据库

    B/S(Browser-Server模式):大家通过浏览器共同访问一个页面,与服务器传递数据

  4. 第四代:引入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 Application
    Web Server
    Web Feature Server
    OGC Feature Datastore

  • service

    #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 Request
    WFS Response
    Client
    Web 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服务器1
    Web资源2
    Web浏览器
    Web资源3

混搭:整合网络上多个资料来源或功能

1.2.5 从Web GIS 1.0 到 2.0

重要变换:

  1. 从静态的二维地图 -> 动态的二维全球性地图
  2. 文件传输FTP -> 使用Web服务
  3. 使用了混搭技术

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 从系统集成的角度看
  1. 基于对象技术的RPC方法

    RPC:指应用程序对运行在远程计算机上的代码进行功能调用

    • COM组件(可随意替换的带有各类功能的组件,拥有允许同一台计算机上的客户端和服务器之间进行通信的接口)使用DCOM(客户端程序对象请求来自网络中另一台计算机上的服务器程序对象的接口)/COM+(拥有一些新功能的COM)
    • CORBA使用IIOP(可自行了解)
    • Java使用RMI(支持从一个java虚拟机(JVM)到另一个java虚拟机的调用)

    缺点:很难跨平台、同步调用阻塞

  2. 基于消息中间件技术的RPC方法

    中间件:可类比node中间件,node中间件是在函数与函数执行之间运行特定的命令,而此处中间件是在应用程序连接的两端运行特定的程序

    缺点:开放性仍然较低,提高开放性则需要提高成本等等(开放性:在程序原有的基础上继续拓展功能)

  3. SOAP风格的Web服务方法

    XML-RPC通过HTTP请求向RPC服务器提交请求,通过HTTP响应response获得RPC的调用结果。强调了XML和HTTP 的作用

    SOAP风格的Web服务奖应用逻辑封装起来。

    每个SOAP应用需要定义自己的接口,对于互操作性十分不利

  4. 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

从三个方面定义资源:

  1. URI(URI:uniform resource identifier,资源的标识;URL:uniform resource locator,资源的定位,既能标识又能指明位置)
  2. 接受与返回的互联网媒体类型(JSON、XML、YAML等)
  3. 一系列请求方法(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)相关推荐

  1. 《Cloud Native Data Center Network》读书笔记-1

    <Cloud Native Data Center Network>读书笔记-1 2019年的一本书,云原生数据中心网络入门书籍,作者 Dinesh G. Dutt 是一家网络公司的首席科 ...

  2. 《Cloud Native Data Center Network》读书笔记-7

    第九章 数据中心边缘 9.1 问题 Clos与外部的连接 为什么需要进行外部连接? 连接到外部世界的带宽需求是什么? 数据中心网络将连接到什么上游设备? 穿越内外部世界的交通需要哪些服务? 9.2 连 ...

  3. 论文阅读——译文: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 ...

  4. Fat-tree:A Scalable, Commodity Data Center Network Architecture 解读

    Fat-tree:A Scalable, Commodity Data Center Network Architecture 解读 title: 一种可扩展的.商品化的数据中心网络体系结构 第一部分 ...

  5. 《Data Algorithm》读书笔记十一— 使用马尔科夫模型的智能邮件营销

    <Data Algorithm>读书笔记十一 - 使用马尔科夫模型的智能邮件营销 1. 智能邮件营销 是什么? 根据顾客的交易历史观测(其实就是推测) "下一个智能邮件营销日期& ...

  6. 《Advanced Data Structures》读书笔记

    1.基础数据结构 1.1.栈 1.2.队列 1.3 双端队列 1.4.动态分配节点 1.5.数组类的"阴影拷贝" 2.搜索树 3.平衡搜索树 4.区间集合 5.堆 6.并查集 7. ...

  7. 最新发布| Jira官宣中国区本地部署特殊政策,公布Data Center价格

    ​Atlassian官方发布Jira Server版停售消息至今已3个月,面对中国区用户的抗议,官方终于于2021年2月2日推出针对性政策,即将DC版准入门槛从500人下调至25人,并于2月5日召开发 ...

  8. 《Python神经网络编程(Make Your Own Neural Network)》读书笔记

    声明 这是作者在CSDN上的第二篇博客,关于阅读塔里克·拉希德的著作<Python神经网络编程(Make Your Own Neural Network)>之后的读书笔记.跟诸位大牛相比, ...

  9. Analyzing Neural Time Series Data 读书笔记6

    Analyzing Neural Time Series Data 第六章读书笔记 仅做学习记录 6 Practicalities of EEG Measurement and Experiment ...

  10. Analyzing Neural Time Series Data 读书笔记3

    Analyzing Neural Time Series Data 第三章读书笔记 仅做学习记录 3 Interpreting and Asking Questions about Time-Freq ...

最新文章

  1. C++多线程实现生产者消费者模式
  2. 通过神经图稳定对脑机接口的即插即用控制,四肢瘫痪患者可以轻松控制电脑光标...
  3. jupyter 安装目录Table of Contents
  4. 机器学习入门书籍导读-高等数学上
  5. 通过源码分析MyBatis的缓存
  6. qsort 三级排序
  7. tensorflow训练神经网络时loss出现nan的问题
  8. win7系统锁定计算机设置方法
  9. luoguP3281 [SCOI2013]数数
  10. 4SUM Leetcode
  11. iMeta | FSCapture报告录屏和视频剪辑(视频教程)
  12. Xcode9 LaunchScreen.storyboard 设置app启动图片
  13. chm文件打开空白或显示不全
  14. 几种平均数的物理意义应用场景
  15. 营养保健品公司网站建设策划书
  16. html添加微信号,html代码点击复制微信号并自动打开微信添加好友
  17. EPLAN中断点使用方法1
  18. git commit规范 、CHANGELOG生成 和版本发布的标准自动化
  19. 微信公众号支付详细步骤(整理)
  20. Linux安装maven

热门文章

  1. 真无线耳机哪个品牌音质最好?四款真无线蓝牙耳机
  2. Mac中直接打开隐藏的文件或文件夹
  3. cocos creator发布oppo快游戏,以及用非oppo手机测试
  4. 服务器主机本地系统开机,本地主机启动tomcat v9.0服务器错误
  5. Linux安装jdk(超级简单)
  6. Android动画之为Drawable图片添加动画
  7. 【Unity3D日常开发】更改Unity默认的脚本编辑器
  8. 网易Java社招面试
  9. Python爬虫:单线程、多线程和协程的爬虫性能对比!
  10. PowerPC基于vxWorks的中断初始化分析