在第二章中,我们介绍过站点由若干MapGuide服务器组成,MapGuide服务器包括站点服务器和支持服务器两类服务器。MapGuide服务器和Web应用服务器和MapGuide Web扩展部署到不同的计算机上,例如在图4-1中,站点由两台MapGuide服务器组成,其中一台用作站点服务器,一台用作支持服务器,这两台服务器和MapGuide Web扩展都部署在不同的计算机上。这时,它们都必须相互知道彼此的IP地址和通信端口,MapGuide Web扩展需要知道站点服务器的IP地址,这样才能够将来自客户端的请求转发给站点服务器;站点服务器也需要知道支持服务器的地址,这样才能将服务请求转发到部署了此服务的支持服务器。
图4-1 站点示例
通过MapGuide Web扩展配置文件webconfig.ini,MapGuide Web扩展能够找到站点服务器的IP地址和通信端口。打开这个文件,查看SiteConnectionProperties部分的内容,可以看到类似如下的信息,IpAddress和Port就是用来指定站点服务器的IP地址和通信端口。
[SiteConnectionProperties]
# *****************************************************************************
# S I T E C O N N E C T I O N
#
# Property Name Description
# -----------------------------------------------------------------------------
# IpAddress The IP address of the site server
# 0 < Length <= 255
# Port The port to use for site operations
#
# WARNING: If you change the port # here you
# must also change the corresponding
# port # for the server configuration
# file.
#
# *****************************************************************************
IpAddress =127.0.0.1
Port = 2812
|
通过MapGuide 服务器配置文件serverconfig.ini,够找到站点服务器的IP地址和通信端口,以及当前服务器是否部署了某种服务。打开这个文件,查看SiteConnectionProperties部分的内容,IpAddress和Port就是用来指定站点服务器的IP地址和通信端口;查看HostProperties部分的内容,属性DrawingService、FeatureService、KmlService、MappingService、RenderingService、ResourceService、SiteService、TileService用于指定是否部署这些服务到当前服务器上。
[SiteConnectionProperties]
# *****************************************************************************
# S I T E C O N N E C T I O N
#
# Property Name Description
# -----------------------------------------------------------------------------
# IpAddress IP address of the site server
# 0 < Length <= 255
# MaxConnections Max # of open site connections
# 0 < Value <= 1024
# Port Port to use for site operations
#
# WARNING: If you change the port # here you
# must also change the corresponding
# port # for the web tier configuration
# file.
#
# QueueSize Max # of site operations to queue
# 0 < Value <= 1024
# ThreadPoolSize # of threads available for processing
# site operations
# 0 < Value <= 1024
# *****************************************************************************
IpAddress = 127.0.0.1
MaxConnections = 20
Port = 2812
QueueSize = 20
ThreadPoolSize = 10
[HostProperties]
# *****************************************************************************
# H O S T
#
# Property Name Description
# -----------------------------------------------------------------------------
# DrawingService 0 = service unavailable, 1 = service available
# FeatureService 0 = service unavailable, 1 = service available
# KmlService 0 = service unavailable, 1 = service available
# MappingService 0 = service unavailable, 1 = service available
# RenderingService 0 = service unavailable, 1 = service available
# ResourceService 0 = service unavailable, 1 = service available
# SiteService 0 = service unavailable, 1 = service available
# TileService 0 = service unavailable, 1 = service available
# *****************************************************************************
DrawingService = 1
FeatureService = 1
KmlService = 1
MappingService = 1
RenderingService = 1
ResourceService = 1
SiteService = 1
TileService = 1
|
站点服务是MapGuide其他类型服务的基础,它主要用于:
l 认证用户信息,如用户是否存在,密码是否正确。
l 创建MapGuide提供的服务,如资源服务、要素服务等。
l 枚举用户、用户组、角色等信息。
l 管理Session。
类MgSiteConnection用于创建到站点服务器的连接,调用方法MgSiteConnection::Open(…)就可以创建一个到站点服务器的连接,在此我们需要通过MgUserInformation的一个实例提供用户认证信息,例如用户名、密码或Session ID。需要注意的是,在创建到站点服务器的连接之前,一定要确保调用MgInitializeWebTier(…)初始化了Web层。
void Open(MgUserInformation userInformation)
如下的代码展示了如何创建一个到站点服务器的连接。
// 初始化Web层
MgInitializeWebTier('C:\Inetpub\wwwroot\PhpMapAgent\webconfig.ini');
// 创建到站点的连接
$userInformation = new MgUserInformation('Administrator', 'admin');
$siteConnection = new MgSiteConnection();
$siteConnection->Open($userInformation);
|
类MgServiceType定义了MapGuide提供的所有服务:
l MgServiceType::ResourceService:资源服务
l MgServiceType::DrawingService:制图服务
l MgServiceType::FeatureService:制图服务
l MgServiceType::MappingService:制图服务
l MgServiceType::RenderingService:制图服务
l MgServiceType::TileService:制图服务
l MgServiceType::KmlService:KML服务
查看上面定义的服务,我们可以发现MgServiceType并没有定义站点服务,这是因为MgServiceType中定义的服务恰恰是由站点服务创建的。调用方法MgSiteConnection::CreateService(…)可以创建一个指定类型的服务,参数serviceType用来服务类型,它可以是MgServiceType中定义的任何一个值。需要注意的是,在使用此方法之前,要保证已经调用方法MgSiteConnection::Open(…)建立了一个到站点服务器的连接。
MgService CreateService(int serviceType)
下面的代码展示了如何创建一个要素服务。
$webconfigiDotIniPath =
"C:\Program Files\MapGuideOpenSource\WebExtensions\www\webconfig.ini"
MgInitializeWebTier($webconfigiDotIniPath);
$adminUser = new MgUserInformation("Administrator", "admin");
$siteConnection = new MgSiteConnection();
$siteConnection->Open($adminUser);
$siteConnection->CreateService(MgServiceType::FeatureService);
|
类MgSite包含用来枚举用户、用户组和角色,以及管理Session的功能,但是MgSite并没有提供公有的构造方法,所以必须通过调用方法MgSiteConnection::GetSite()来获取一个MgSite对象的实例。需要注意的是,在调用此方法之前,要保证已经调用方法MgSiteConnection::Open(…)建立了一个到站点服务器的连接。
MgSite GetSite();
方法MgSite::EnumerateGroups()用于返回一个XML格式的用户组列表, XML使用了文件GroupList-1.0.0.xsd指定的Schema。
MgByteReader EnumerateGroups();
在安装MapGuide服务器之后,如果没有添加任何用户组,调用此方法会返回如下的用户组列表,可以看到此时MapGuide服务器只创建了一个用户组“Everyone”。
<?xml version=”1.0” encoding=”UTF-8”?>
<GroupList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="GroupList-1.0.0.xsd">
<Group>
<Name>Everyone</Name>
<Description>Built-in group to include all users</Description>
</Group>
</GroupList>
|
方法MgSite::EnumerateUsers(…)以XML格式返回指定用户组内的所有用户, XML使用了文件UserList-1.0.0.xsd指定的Schema,参数group用于指定一个用户组,如果将传入一个空的用户组名称,那么返回所有的用户。
MgByteReader EnumerateUsers(String group);
在安装MapGuide服务器之后,如果没有添加任何用户,调用此方法会返回如下的用户列表,可以看到此时MapGuide服务器创建了五个用户“Administrator”、“Anonymous”、“ Author”、“ WfsUser”和“WmsUser”。
<?xml version="1.0" encoding="UTF-8"?>
<UserList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="UserList-1.0.0.xsd">
<User>
<Name>Administrator</Name>
<FullName>Site Administrator</FullName>
<Description>Built-in account for administering the site</Description>
</User>
<User>
<Name>Anonymous</Name>
<FullName>Anonymous User</FullName>
<Description>Built-in account for guests with Viewer role</Description>
</User>
<User>
<Name>Author</Name>
<FullName>Map Author</FullName>
<Description>Built-in account for users with Author role</Description>
</User>
<User>
<Name>WfsUser</Name>
<FullName>WFS User</FullName>
<Description>Built-in account for WFS users with Viewer role</Description>
</User>
<User>
<Name>WmsUser</Name>
<FullName>WMS User</FullName>
<Description>Built-in account for WMS users with Viewer role</Description>
</User>
</UserList>
|
方法MgSite::EnumerateRoles(…)用于返回指定用户所属的角色列表,参数user用于指定一个用户。
MgStringCollection EnumerateRoles(String user);
在第二章,我们介绍过MapGuide在服务器层与Web层间引入了Session的概念,用来提高服务器层与Web层间请求和响应的性能。每个Session通过一个唯一的Session ID加以标识,例如“71b5d990-0000-1000-8000-005056c00008_eng”。调用方法MgSite::CreateSession()可以为当前用户创建一个Session,返回的字符串是新建Session的ID。在创建Session的同时,还会创建一个资源库,这个资源库绑定于当前用户,用于存储和当前用户相关的资源,例如临时图层等资源,它的生命周期和Session相同,当Session销毁的时候,它也同时销毁。关于资源和资源库的内容,我们会在后续章节进行介绍。
String CreateSession();
下面的代码展示了如何创建一个Session。
MgInitializeWebTier('C:\Inetpub\wwwroot\PhpMapAgent\webconfig.ini');
$userInformation = new MgUserInformation('Administrator', 'admin');
$siteConnection = new MgSiteConnection();
$siteConnection->Open($userInformation);
$site = $siteConnection->GetSite();
$sessionID = $site->CreateSession();
$userInformation->SetMgSessionId($sessionID);
|
调用MgSite::DestroySession()可以销毁指定的Session,但是这个方法并不是必需的,当一个Session在设定的时间内没有任何和客户端的通信,那么MapGuide服务器会认为这个Session已经超时了,从而销毁它。通过服务器配置文件serverconfig.ini,我们可以设置这个值。打开这个文件serverconfig.ini,查看SiteServiceProperties部分的内容,可以看到类似如下的信息,SessionTimeOut用于设定超时阈值,SessionTimerIterval用于设定检查Session超时的时间间隔,它们的单位都为妙。
[SiteServiceProperties]
# *****************************************************************************
# S I T E S E R V I C E
#
# Property Name Description
# -----------------------------------------------------------------------------
# SessionTimeout Time duration in seconds for when an idle
# session is expired
# 0 < Value <= 86400
# SessionTimerInterval Time interval in seconds for when the server
# checks for idle sessions
# 0 < Value <= 2147483647
# *****************************************************************************
SessionTimeout = 1200
SessionTimerInterval = 400
|
除了创建和销毁Session之外,还可以通过方法MgSite::GetCurrentSession()获得当前Session的ID,通过方法MgSite::GetUserForSession()获得当前Session对应的用户名称,例如如果以用户 “Administrator”登录创建了一个Session,那么调用此方法会返回字符串“Administrator”。
String GetCurrentSession();
String GetUserForSession();
分享到:
相关推荐
- **服务器搭建**:选择合适的服务器环境,并配置相应的软件和服务。 - **API设计**:设计合理的接口供前端调用,实现前后端分离架构。 - **数据库交互**:通过数据库管理系统(如MySQL、MongoDB等)存储和检索数据...
当出现:除非Microsoft ...计算机->右键管理->服务和应用程序->IIS管理器->服务->找到Microsoft FTP Service,再右击启动。 第二步: 回去IIS管理器,找到你对应你的FTP站点右击->管理FTP站点->重新启动,即可。
标题中的"IIS站点流量统计,查看站点外发数据包"主要涉及的是对互联网信息服务(Internet Information Services,简称IIS)的监控,特别是关注其网络流量的统计和分析。IIS是微软公司提供的一种Web服务器软件,广泛...
安装"IIS服务中web站点安装包"的目的是为了快速地在已配置好的IIS服务器上部署和运行自定义的Web应用程序。这个压缩包中的"EmptySite"文件可能是一个预设的、空的Web站点模板,用于用户根据自己的需求填充内容。在...
摘要:Windows2000Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务。在中小型局域网中,服务器往往只有一台,但是一个Web站点显然又无法满足工作需要。那么,能否在一台服务器上设置多个...
理解并掌握Nginx添加站点脚本可以帮助我们更高效地管理Web服务,尤其是当我们需要为多个网站配置Nginx时。通过自定义脚本,我们可以确保配置的一致性,同时减少手动操作的错误。同时,熟悉配置文件的结构和逻辑,...
水资源管理与规划:水文站点位置数据可用于评估水资源的分布、变化和可利用性,从而帮助制定水资源管理政策和规划水资源利用。 水文模型与预测:利用水文站点位置数据可以建立水文模型,预测河流流量、水位、径流等...
服务器架构创建发布站点和管理站点!
对于团队协作或者在不同设备间切换工作环境,导入和导出站点功能显得尤为重要。本篇文章将详细阐述如何在Dreamweaver CS6中进行站点的导入和导出操作。 首先,我们来看如何导入站点。导入站点主要是为了恢复备份的...
在 Dreamweaver 中新建站点有三种方法:通过管理站点、菜单栏和文件栏新建站点。下面将详细介绍这三种方法。 方法一:通过管理站点新建站点 1. 打开 Dreamweaver 软件,点击“管理站点”按钮,出现管理站点对话框...
在C#中,这可以通过循环遍历站点和格点,然后使用数学方法确定站点在网格中的位置来实现。 6. **开发测试用例**:测试用例是为了确保代码按预期工作而设计的特定输入和预期输出。在"格点数据转站点"的项目中,测试...
2021年全国公交站点分布POI数据,包含字段,公交站点名,坐标等信息,格式为shpfile 2021年全国公交站点分布POI数据,包含字段,公交站点名,坐标等信息,格式为shpfile 2021年全国公交站点分布POI数据,包含字段,...
在 Domino 服务器上创建多个 Web 站点是一项关键功能,尤其对于那些希望在一个物理服务器上托管多个独立网站的企业来说。...正确配置这些站点可以显著提升服务质量和用户体验,同时降低管理和维护成本。
实现这一功能可能需要结合数据库技术,比如使用GeoJSON存储站点数据,或者与后端服务交互获取数据。此外,你还需要掌握一些前端开发技能,如HTML、CSS和JavaScript,以及对Cesium API的熟悉。 总的来说,"cesium...
Linux 服务器上建立基于多个 IP 的 vsFTP 站点 本文将指导您在 Linux 服务器上建立基于多个 IP 的 vsFTP 站点,每个站点相互独立,拥有独立的配置文件。该文档将详细介绍安装 vsFTP 包、添加虚拟 IP 地址、添加本地...
4. **站点结构**:一个完整的HTML静态页站点通常包括首页、关于我们、服务/产品页面、联系我们等常见部分。每个页面通过链接相互连接,形成一个完整的导航结构。良好的站点结构有利于用户浏览,也有利于搜索引擎优化...
在“Internet 信息服务”窗口中单击选定主机名 Master,选择“操作”→“新建”→“Web 站点”,出现“Web 站点创建向导”窗口,依次点击[下一步],将站点说明定为“学生天地”,IP 地址选择 192.168.0.2(注意不能...
PHP类型站点服务器安全维护关键点,比较全面
《北京公交线路与站点数据详解——基于shp格式》 在城市交通研究、地理信息系统(GIS)应用...通过对这些数据的深入挖掘和分析,我们可以更准确地理解北京的公共交通系统,为提升城市交通效率和服务质量提供科学依据。