我们安装完arcgis server的时候,打开进程管理器,会发现多了arcsom.exe与arcsoc.exe两个进程,这些都是干什么呢?如果你是初学者,可以不了解这个,因为这个是一个企业应用,对你的代码实现没有多大的关系,但是还是最好了解一下。
Som(service object manager)这是一个服务对象管理的东西,soc(service object container)是一个服务对象容器,这是从字面上是这样理解的。Som主要是负责启动和停止soc,相当于som是一个公司的boss,其他的soc都是员工。我们就从公司和员工理解吧。
Som当然只能有一个,如果多了,岂不是乱了。他会在启动的时候,顺便开启两个soc,这两个呢,一个相当于清洁员,一个相当于秘书,他们分别干清空特定的工作目录,和记录工作日志。
当有任务的时候,也就是有新的service加入,我们可以理解为订单吧,需要有人处理,三面的三个人,都干不了,就得需要让其他人来干了,这个时候,又会需要其他soc。分别两者模式,pooled(池化)与non pooled(非池化)。从公司的角度怎么理解呢。先说一些池化吧,就是公司本来就有,然后就让这些员工干,这些员工相当于正式员工,是签了合同,无论公司是否有事情,这些都在公司里面。非池化的是那些临时工,有事情的时候,就从外面招一个过来过来干活,等活干完的时候,就让他卷铺盖走人。池化的优点是,省时间,快速,但是资源浪费呀。
Instance实例,我们可以理解为订单吧。这里面又出来两种high isolation(高独立性)与low isolation(低独立性)。High isolation意味着一个soc对应着一个instance,一个员工只干一份订单,low isolate说明一个soc对应着多个instance,一个员工干多份订单。高独立性他的优点是可以保证一个soc崩溃了,但是其他的instance还是好的。相当于一个员工因为某些原因,不在公司了,只有一个订单,坏掉了,其他的还好。低独立性,一个员工可以干多个订单,优点当然是节约资源,可以少开工资了。两者优缺点是相反的。