直接网际讯息封装格式 dime

dime(直接网际讯息封装格式)【直接网际讯息封装格式 dime】直接网际讯息封装格式,即DIMEDirect Internet Message Encapsulation)是一种现代计算机网页程式编写格式 。
概述直接网际讯息封装(Direct Internet Message Encapsulation,即DIME)格式提供了一种简单而又标準的机制,这个机制可以把多文本(multiple text)和二进制数据记录组合到一个单一的二进制流中,记录可以以一种高效解析且易于实现的独立编码方式保存 。你可以在这儿找到DIME规範 。优点DIME优于MIME和raw XML,当然,其它系统也规定了多文本和二进制数据合併的方案,但是它们都仅对某方面的问题进行了最佳化,这就使得它们在非电子邮件通信、套用内部通信的场合下不尽完善 。MIME由2045到2049号Internet标準(草案)所定义的多用途网际邮件扩充协定(Multipurpose Internet Mail Extensions 即MIME)是目前最显眼的可选项 。MIME是电子邮件档案附属档案的标準,它仅仅是文本和二进制部分的讯息 。因此,MIME在内部把文本和二进制部分转化为全文本格式 。这种转化不仅使得二进制部分转化后的长度大大增加,还导致了交叉平台上的字元集和编码问题 。Raw XMLRaw XML提供了另外一种表示文本中二进制信息的机制――CDATA类型 。但是CDATA块不能被XML解析器解析,因此它不符合XML文档“好的组织(well-formedness)”的要求 。把二进制数据转换到模64(base64)或者类似的进行类似的编码后保存到CDATA块,这样的CDATA块会使得你的XML组织的很差 。DIME与MIME和XML文档中的CDATA部分不同,DIME把文本和二进制部分都转换成单一的二进制讯息 。把二进制部分按它原来的二进制方式保存可以免除DIME解析器从文本中恢复二进制编码的开销和複杂度,而这些开销和複杂度是MIME和CDATA/XML所必不可少的 。确实,DIME部分中的简单长度定义分界(simple length-delimited)性质使得DIME解析器可以不用考虑二进制数据的内部就可以分开记录,而过去这幺做需要初始二进制头 。程式清单A给出了用一个免费可用的Java DIME实现来创建DIME讯息的简单代码 。头几行代码用一个FileOutputStream对象做为输出源创建了一个DimeGenerator对象 。代码的第二和第三部分分别加入了一个从磁碟文本档案创建的DIME记录 。请注意MEDIA_TYPE TypeNameFormat的用法,还要注意“text/plain”和“image/gif”MIME类型用来指示DIME记录的内容 。MIME类型仅是DIME规範指出的可以提供DIME记录所保存数据信息的方法中的一种,但是可能是最有用的一种了 。清单A中代码的最后一部分结束DIME讯息并关闭输出数据档案 。DimeGenerator类可以使用所有I/O操作的流,这样就消除了讯息建立期间用来保存DIME记录所需要使用的大量记忆体 。还要注意addRecord方法(本例调用两次)所用到的最后一个参数(布尔型) 。如果参数取值为“真”,代表添加到DimeGenerator的记录是最后一个记录,如果再添加记录就会导致IllegalStateException(非法状态例外) 。