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)


Related Posts Plugin for WordPress, Blogger...