虚拟目录的作用是什么
每个
Internet
服务可以从多个目录中发布。通过以通用命名约定
(UNC)
名、用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上。虚拟服务器可拥有一个宿主目录和任意数量的其它发布目录。其它发布目录称为虚拟目录。
指定客户
URL
地址,服务将整个发布目录集提交给客户作为一个目录树。宿主目录是“虚拟”目录树的根。虚拟目录的实际子目录对于客户也是可用的。只有http://www服务支持虚拟服务器;而
FTP
和
gopher
服务则只能有一个宿主目录。
虚拟目录的作用就是把服务器的本地文件夹转为URL的路径。
如,IP为1921681100,IIS已启动,虚拟目录名为user/
对应服务器目录为
D:\iisroot\user\
则
D:\iisroot\user\images\logogif
在访问时的地址就是
http://1921681100/user/images/logogif
虚拟目录对用户是不透明的。
最重要的目录服务将在下面进行描述。Microsoft Active Directory Novell NDS是两种主要的目录服务。Active Directory只使用Windows 2000运行,而NDS已被移植到各种平台中。它们之间一个显著的区别是在使用NDS的情况下,所有的访问控制都由目录管理:但在使用Windows 2000的情况下,一些访问控制在Active Directory中,而其他访问控制在服务器中。NDS遵循比较传统的X500模型,而Active Directory仍具有Microsoft域模型(一种专有方案)的元素。
DCE目录服务 用于维护关于各种分布资源(如用户,机器,基于DCE RPC的分布应用程序等等)的信息,包括资源的名字及位置。The Open Group的DCE(分布式计算环境)包括自己的综合其他DCE组件的目录服务。
IBM Network Directory(网络目录) IBM进入目录服务市场靠的是其DB2数据库。该数据库设计用于电子商务和企业对企业交易。IBM声称该服务比Novell的NDS及Microsoft的Active Directory更安全、更具有可伸性。
Netscape Directory Server (目录服务器) NetscaPe的Directory Server旨在成为添加、修改、和删除用户信息的中心地点。它可组织并分配遍及企业内部网上的一系列服务器上的信息。这些服务可与Netscape's SuiteSpot集成以提供结构化信息及整套应用程序的组合信息。Directory Server提供高级LDAP支持及编写目录运行的应用程序的工具。它还包括对连续操作的改进及LDAP服务器之间的异类复制。
Novell目录服务 NDS(Novell目录服务)是NetWare4X中的一种特性,其提供与X5OO规范相似的分布式目录服务。Novell已经将NDS用在Windows NT和UNIX压平台上。NDS的专用电子商务版本也是可用的。
Microsoft Active Directory Active Directory结合了因特网的DNS定位服务及X500命名功能。LDAP是该服务的核心访问协议。LDAP使Microsoft's Active Directory能够通过操作系统边界运行并集成多个命名空间,因此使管理员能够管理其他供应商的目录服务。有关更多信息,请参阅“Microsoft Active Directory”。
目录互用性论坛组建的目的是推进基于LDAP标准的开放式目录。该论坛由开放式目录供应商组成,这些供应商计划制定标准主体以加速基于目录的应用程序的发展和实施。
MUDLIB各个目录是干什么的?
现在大部分中文MUD都是在东方故事(esII)基础上发展起来的,其目录结构基本一样,
也有个别MUD为了标新立异对个别目录换了个名字以示不同,但其实质没有什么变化。
这个做的最可恶的是xkx,把一个好好的daemon目录换成了一个不土不洋的kungfu,
里边却还是skill,condition这些洋名,简直让人faint!我实在看不出这种修改有什么好处,
除了添麻烦(xkx对一些命令的汉化,什么cha,du也是如此)。不过,
也有一些是为了系统更合理而修改的。
对MUDLIB目录的解释已经有许多版本了,基本也没什么区别,下边是我的解释,
以我自己整理的一份MUDLIB为基础,如果有目录不同的地方适当贯通就是了。
/adm 这里是最基本,最底层的程序,是整个MUD的控制枢纽。
这个目录只有admin权限可以修改。
/adm/daemons 守护程序目录。守护程序是指游戏中频繁调用的控制类程序,
MUD里各种基本功能都是由这些程序控制的。这些程序一般在游戏一启动就自动载入内存。
按照unix下文件命名习惯,这里的程序多以dc结尾,
比如combatdc就是控制战斗的程序。另外由于这些程序调用非常频繁,
一般都做了宏定义(查看/include/globalsh),例如/adm/daemons/combatdc
定义为COMBAT_D,在其它程序里可以适用这些宏定义代替这些文件名。
/adm/etc 系统配置目录,此目录定义为CONFIG_DIR 这里放的是游戏的系统文档文件,
比如游戏的欢迎画面,巫师列表,BAN掉的IP记录等。
/adm/obj 这里只有两个文件,但却是整个MUD最重要的东西。
masterc:这是MudOS主控物件,也就是整个MUD的总司令。
simul_efunc:防真函数加载精灵,这是MUD启动时第一个要载入的东西。
所谓efun,是指系统函数,也就是mudos中定义的函数。
这些函数不必做任何说明可以在MUD的任何程序里直接调用,
而且由于他们是预先定义的,也就是mudos早已经知道他们是做什么的,
所以比其它在MUDLIB里定义的函数执行效率要高。但他们的缺点是修改非常不方便,
对任何一个efun函数的修改必须重新编译mudos才能生效。因此,
在MUDLIB中又有了防真函数的定义,也就是simul_efun,
这些函数的作用跟efun完全一样,不同的是他们定义在UDLIB中,可以随时修改,
但必须重新启动游戏才能生效。
顺便讲一下一个MUD启动的过程,MUD启动的初始化过程分以下几步:
1载入防真函数simul_efun
2载入主控物件master,这里是调用master的create()函数将其载入内存。
3载入需要预先载入的守护程序,这里调用master的preload()函数,
需要预先载入的文件定义在/adm/etc/preload里。
4MUD进入多用户状态,允许玩家登录。
以上过程必须正确无误的执行完,否则游戏无法正确启动。
masterc和simul_efunc这两个文件只能在游戏启动时由mudos自动载入,
不可以在游戏中用update的方法载入,而且这两个物件也不
允许非ROOT权限的物件摧毁(destruct)它,因为他们的摧毁就等于游戏关闭 。
/adm/simul_efun 防真函数目录,这里放的是定义各类防真函数的文件,
这些文件由SIMUL_EFUN_OB(也就是/adm/obj/simul_efun)来载入内存。
/cmds 游戏命令目录,这里放的是游戏中可以使用的各种命令,
只有admin才可以修改这个目录
/cmds/adm 只有天神(admin)可以使用的命令
/cmds/arch 只有大巫师(arch)以上才可以使用的命令
/cmds/wiz 只有巫师(wizard)以上才可以使用的命令
/cmds/app 只有巫师学徒(wizard)以上才可以使用的命令
/cmds/imm 只有荣誉玩家(immortal)以上才可以使用的命令
/cmds/usr 只有普通玩家(player)以上才可以使用的命令
/cmds/std 所有生物(npc and player)都可以使用的命令命令目录采用子集格式,
权限高的命令完全包含权限低的命令,比如天神可以使用所有游戏命令,
普通玩家只能使用/cmds/usr和/cmds/std目录下的命令。
/data 游戏数据目录,只有arch以上权限才可以修改这个目录
/data/board 各个留言板的数据
/data/login 玩家登录数据
/data/user 玩家档案,呵呵,这里记录的是每个玩家的所有劳动成果
/data/npc 一些特殊npc的数据,比如商店老板
/data/daemon 重要的系统数据,比如emote词,英汉翻译词典
/data/mail 玩家信件
/feature 标准继承函数。只有admin才可以对这个目录进行修改这些函数是非常重要的,
是MUD里各种物件,包括玩家,NPC,物品,房间等的各种功能的标准定义,
这些函数反映了整个MUD的与众不同之处,一个好的MUDLIB必然要对这些函数进行优化。
而要设计新的程序,必须对这个目录所有文件有所了解。
/obj 系统物件,这是经常在MUD里被调用的各种物件。
这个目录下的物件被复制后跟调用他的物件具有相同的euid,
也就是说具有相同的权限,所以,这里的一个npc如果经admin编译后复制出来,
也具有了admin权限。这点非常重要,有些物件必须具有跟玩家相同的euid才能正常使用
,比如符纸。而出于安全考虑,这个目录下的物件不可以随便复制。
只有arch以上才可以修改此目录。
/obj/board 游戏中各个留言板
/obj/npc 一些特殊的NPC
/obj/sheet 各种符纸
/obj/weapons 兵器
/obj/misc 其它乱七八糟的东西,比如信箱等
/quest 游戏里各种任务quest的文件,此目录需要wizard以上权限才可以修改
/binaries 文件编译过程生成的二进制文件,此目录ROOT权限才可以修改
/d 区域目录,游戏的地图门派和NPC存放的地方。此目录wizard以上权限可以修改。
这里是整个MUDLIB最简单最常用的东西,也是玩家可以直接接触到的东西。
玩家所呆的任何一个房间都应该对应这个目录下的一个文件,
房间里每个NPC也都对应一个文件。这个目录下存在许多子目录,
分别对应游戏的不同区域(domain)。
/d/domain/npc 该区域中的npc
/d/domain/npc/obj 该区域中npc身上的物品
/d/domain/obj 该区域中的物品
/data_bak 档案备份目录,保存需要备份的重要数据。admin可以修改
/include 头文件目录,只有admin可以修改。这里放的是游戏中各个文件所需要的头文件,
其中以下几个特别重要:
globalsh:全局定义的头文件,这是一个特殊的头文件,
他不需要在任何一个文件里被调用,但是这里定义的所有变量可以在任何一个文件里直接使用。
这里一般用来定义非常重要的或者许多地方需要调用
的变量。对这个文件的修改必须重新启动游戏才可以生效。commandh:
这里定义的是各个权限等级所能够使用的命令目录,所以,除了admin,
应该绝对禁止任何人修改此文件。
/include/race 种族的头文件
/include/net 网络功能的头文件
/open 系统临时目录,ftp登陆目录,任何人都具有写权限。
/questobj FY3的task专门目录,存放各个task物品文件。wizard以上权限可以修改。
/u 巫师工作目录,存放各个巫师开发过程的半成品。
这里的子目录名只能为各个巫师的euid,
而只有对应euid的人才有对相应目录的修改权限。比如一个目录是lion,
那么只有lion这个ID或者比lion权限高的人
才可以修改它下边的内容。
/clone 物品目录,存放游戏中需要经常复制的各种物品,wizard以上权限可以写。
这个目录下的物品一般被其他地方复制(clone)出来,但他们的euid是固定的,
不会随调用它的物件的不同而改变,这就是这个目录和/obj目录的最大不同。
此目录arch以上等级可以修改
/clone/armor 装备
/clone/drug 药品
/clone/fruit 水果,水果跟食物的不同是吃了可以同时加食物和饮水,
而且有些水果具有养颜美容之功效。
/clone/liquid 容器,象酒袋茶壶一类
/clone/money 顾名思义,人见人爱的东西
/clone/user 玩家物件,包括loginc(link_ob)和userc(body),
此目录只有admin可以修改
/clone/books 各种秘籍
/clone/food 吃的
/clone/gift 各种礼物,一般是好东东
/clone/weapon 兵器
/clone/misc 其他杂物,比如尸体,头颅。
/daemon 呵呵,这个目录为什么叫这个名字我一直没明白,看下边的说明吧。
此目录只有arch以上可以修改。
/daemon/skill 游戏中所有的技能
/daemon/condition 人物各种状态,比如中毒,恢复等。
/daemon/class 这个应该理解为“组织”或“工会”,是ESII从外国MUD里保留下来的东西,
不过随着中文MUD的发展,工会的概念逐渐被淡化,其含义已经跟以前完全不同,
现在他的意思有点象“身份”,比如道士,和尚,喇嘛,官兵,老百姓。。。。
个人有个人的身份。很多情况下,这个跟门派类似,但又不完全相同。
这里存放的是各种不同身份的人所具有的特殊东西,
不过现在一般用来存放各种特殊技能的特殊用法(perform)
/doc 文档。 游戏中的各种文本文件,arch以上可以修改
/doc/help 各种帮助文件
/doc/efuns 各种系统函数的用法
/doc/story 各种背景故事
/log 系统日记,记录游戏过程各种重要事件,是巫师处理纠纷和剔除bug的主要依据来源。
一个好的巫师应该养成经常看系统日记的习惯。本目录只有ROOT权限可以修改。
/p 玩家目录,这个目录下内容玩家具有写的权限。主要存放需要玩家修改的内容,
比如玩家房间,自创武功等。
/std 标准对象目录,游戏中各种标准物件,
只有admin可以修改游戏里其他物件都需要继承这里的相应文件。
/std/armor 装备物品的标准继承,比如衣服,盔甲等
/std/board 留言板
/std/char 生物的标准继承,MUD里的生物包含两种:玩家(player)和非玩家(
npc)他们都需要继承/std/char/charc这个对象,
他们与其他物件的区别是具有心跳(heartbeat)。
/std/drug 药品的标准继承,其实这个现在一般不用了,这部分功能都放到了
/feature的相应文件里,保留这个是为了跟旧的系统兼容。
/std/item 物品的标准继承
/std/room 房间的标准继承
有人曾问房间和物品到底有什么区别?说实话,这个问题还真不好说,
这两个物件基本结构差不多,也没有什么可以区分的特征。
现在的常用判断方法是房间是没有环境(environment)的,但也不是所有物品
(包括生物)都有环境,所以,呵呵,这个问题还有待MUD程序的进一步完善,
现在基本上无法判断。
/std/skill 技能的标准继承
/std/weapon 武器的标准继承
/std/misc 其他物件,比如钱,符纸。
值得注意的是,/std这个目录跟一般MUDLIB的结构不太一样,
一般MUDLIB并没有如此归类存放,大家可以根据自己的认识加以判断。
以上是根据我的理解对各个目录的解释,未必是权威的说法,
只是为了让大家有所认识,如果有什么错误请指正。
作为刚入门的新巫师,准确理解各个目录的作用是非常重要的,
必须知道哪个目录下的东西是做什么的,哪个目录你可以去改,哪个目录你不能动。
一般来说,要成为一个合格的巫师,至少要花半月时间来“读”程序,
了解整个MUDLIB的结构,了解各个文件的作用
(未必要完全看懂,但至少应该知道他是干什么的),
这样不至于再以后的程序开放过程中不知道什么功能该如何实现,从而走许多弯路。
当你了解了整个MUDLIB后就可以试着自己写程序了,
一般你只能在自己的工作目录里写东西。刚开始不妨试着写一个简单的房间,
然后试着写一个简单的npc,然后试着把这个npc放到这个房间里。。。。。。
这样逐渐提高,你很快就成为一个合格的巫师了。
虚拟目录的名称通常要比物理目录的名称易记,因此更便于用户访问。
使用虚拟目录可以提高安全性,因为客户端并不知道文件在服务器上的实际物理位置,所以无法使用该信息来修改服务器中的目标文件。
使用虚拟目录可以更方便地移动网站中的目录,只需更改虚拟目录物理位置之间的映射,无需更改目录的URL。
使用虚拟目录可以发布多个目录下的内容,并可以单独控制每个虚拟目录的访问权限。
使用虚拟目录可以均衡Web服务器的负载,因为网站中资源来自于多个不同的服务器,从而避免单一服务器负载过重,响应缓慢。
0条评论