MapGuide应用最佳实践--采用托管(Managed)资源还是非托管(Unmanaged)资源

简介:


我们在介绍MapGuide Studio加载数据时讲过有两种数据加载方式,Load Procedure和 Data Connection, 这两种方式有什么区别呢?这和托管资源或者非托管资源有什么关系么?这篇文章中我们就来阐述这个概念。

 

托管资源(Managed)是指已经被上传到MapGuide服务器的资源库中的文件资源。也就是说这些资源一般都是文件型的数据,比如SDF文件,SHP文件等等。他们可以通过在MapGuide Studio中使用Load Procedure的方式上传到MapGuide Server的资源库中。

比如,我们通过Load Procedure上传一个shp文件,如图

image

看一下在MapGuide Server中资源的存储情况如下, 在C:\Program Files\Autodesk\MapGuideEnterprise2010\Server\Repositories\Library\DataFiles目录下能找到你上传的资源文件,不过SHP格式已经转换成了SDF格式。

image

这种驻留在MapGuide 服务器的资源库中的资料即为托管(Managed)资源. 对应托管资源,你可以通过创建Package(*。mgp)的方式把资源打包,并传递给别人或者到其他MapGuide服务器上。关于打包问题,可以参考以前的文章--MapGuide数据包管理。

 

那什么是非托管资源呢?非托管资源驻留在普通文件系统中,MapGuide通过文件名引用这些资源。我们可以在MapGuide Studio中通过Data Connection的方式连接到非托管资源。连接到非托管资源,首先要在Site Administrator中创建一个Alias name,指向真正存放SHP文件的目录。这里可以支持网络共享目录。

image

然后在MapGuide Studio中通过Data Connection,选择适当的Provider即可连接到非托管资源。如图

image

注意到对应shp的Provider,我们可以选择连接到一个文件或者连接到一个目录。

对应非托管资源在打包时,这些资源不会打入到数据包中,你还需要把必要的数据文件也一般发生给别人,方便他能建立好这个alias name才行。

 

下面讨论一下托管资源和非托管资源的选择方法。基本上采用托管资源和非托管资源,在性能上影响不大。如果你的数据很少更新,那么可以选择托管资源,在给客户部署时,直接把mpg文件发过去加载就可以了。

如果你的数据需要经常更新,并且使用的还可能是除SDF之外的其他格式,比如SHP。这时候可以采用非托管资源方式。如果需要对资源数据进行更新,只要把文件覆盖即可,MapGuide会自动检测到资源的更新,而不用重新上传。在实际项目应用中,这中方式无疑有很大的优势。在运用Unmanaged资源方式时,为提高性能也有以下两点需要注意:

1. 在使用SHP Provider时,用使用目录方式,而最好是一个一个的链接到具体文件上。因为如果使用目录方式,当目录中的文件很多时,会造成性能的低下。

2. 尽量不要使用网络共享目录,尤其是网络情况不好的场合。MapGuide Alias Name虽然支持网络共享目录,当如果网络状况不好,还是会引起性能问题。

 

再引申一点,好多项目需要在Map 3D中对数据进行编辑,同时又要把数据通过MapGuide发布出来。怎么才能方便的保持数据的更新呢?非托管资源就是一种选择。我们可以在Map 3D中和MapGuide中同事通过FDO Provider连接到同一份资源文件,这样在Map3D中对数据进行的更改就能及时反映到MapGuide中了,是不是很酷?

image

 

好了,今天我们讲了托管资源和非托管资源的概念和他们的应用场景,希望你能在今后的项目实践中应用这一特性,达到更好的应用效果。先到这儿,您有任何问题可以下面评论,或者到MGDN论坛讨论。

峻祁连(Daniel Du)

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2009/12/17/1626629.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
内存技术
【Azure Cloud Service】创建Azure云服务时遇见分配VM资源错误: VM(s) with the following constraints cannot be allocated, because the condition is too restrictive
Allocation failed. VM(s) with the following constraints cannot be allocated, because the condition is too restrictive. Please remove some constraints and try again. Constraints applied are:\n - VM Size
|
5月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
104 6
|
5月前
|
运维 Kubernetes 大数据
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
69 0
|
5月前
|
开发框架 JavaScript Java
【Azure 应用服务】Azure App Service多实例中,出现某一个实例CPU居高不下的情况,如何重启单个实例呢?
【Azure 应用服务】Azure App Service多实例中,出现某一个实例CPU居高不下的情况,如何重启单个实例呢?
|
5月前
|
Kubernetes Shell 网络安全
【Azure K8S】记录AKS VMSS实例日志收集方式
【Azure K8S】记录AKS VMSS实例日志收集方式
|
8月前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
125 0
|
Kubernetes 应用服务中间件 nginx
k8s--kubernetes 组件、资源管理方式
k8s--kubernetes 组件、资源管理方式
|
调度 Perl 容器
开源工具GPU Sharing:支持Kubernetes集群细粒度
问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合,但是如果对于模型开发和模型预测的场景就会比较浪费。
16522 0
|
Kubernetes 监控 网络协议
Kubernetes自测题(二)-资源对象部分
Deployment 简述 Kubernetes Deployment 升级过程? 初始创建Deployment时,系统创建了一个ReplicaSet,并按用户的需求创建了对应数量的Pod副本。
|
Kubernetes Cloud Native 容器
【云原生 | 从零开始学Kubernetes】八、命名空间资源配额以及标签
namespace 是命名空间,里面有很多资源,那么我们可以对命名空间资源做个限制,防止该命名空间部署的资源超过限制。
189 0