【php精品源码栏目提醒】:网学会员为需要php精品源码的朋友们搜集整理了文档共享技术研究 - 其它资料相关资料,希望对各位网友有所帮助!
关于共享文档的研究引言: 在这里,根据我们的需要,首先把文档共享的定义解释一下,我们所说的“共享文档”实际上是同步共享文档,包括两个含义即:同步和共享,这两个功能:首先是共享,然后是同步。
共享比较好解决, 通过客户端把文件上传到共享服务器即可,当然服务器也要根据用户身份进行一些数据库的操作。
然后是同步,即在不同的操作系统平台下实时进行文档的演示。
这就麻烦了,目前我们在 Windows XP 平台上的做法是: 在客户端把文件转换为基本上任何操作系统都可识别的图像格式(如.png .pdf)等文件格式,然后把这些图片上传至共享服务器,客户端通过向服务器发起请求,获取这些共享图片。
另外配合共享的数据功能,多个用户可以同步在图片上的绘制。
通过研究文件转换的方式, 发现目前这一技术的方法基本上是采用虚拟打印的方式, 即通过 Windows 打印机系统把文件打印为一种假脱机文件格式(.prt)然后通过解析这个假脱机文件,把它转换为不同的格式。
其实也只有这一个方法是通用的。
因为文件格式的种类很多,目前流行的大概有几十种,对于定义各种文件类型的厂商,它们的文件格式有的是不公开的或者是加密的。
我们无法解析它们的文件格式,即使是可以解析,但面对不同的文件格式,这样的工作量是可想而知的。
而且新的文件格式也在不断的出现。
所以通过 Windows的虚拟打印机制把不同文件格式转换为一种特定的文件格式, 然后我们只解析这种特定的文件格式就可以达到目的。
通过 Window 平台所支持的打印机功能(虚拟打印) ,我们可以实现把各种可打印的文件转换为一种特定文件格式, 再解析这一特定的文件格式生成目标格式,可以达到我们的目的。
但这样就涉及到另一个技术――虚拟打印技术。
虚拟打印技术与一般的打印机的工作原理基本上相同, 唯一不同的是它所输出的端口不是连接物理打印机的端口,而是本地端口即本地的磁盘文件。
这个磁盘文件即是我们要解析的特定文件格式。
使用虚拟打印技术,就必需先要了解 Windows 的打印机制。
另一个问题就是服务器的架构,关于这个问题,查找了一些资料,能找到的不多,以Flick 为例,进行了一些分析,其架构与性能方面的分析均来来源于网络。
之所以分析 Flickr是因为,我们的文件共享与 Flickr 的功能有相似之处,即均提供图片共享功能,在这一功能面上是相同的。
Windows 系统打印驱动1 ) 什么是打印机驱动? 指印机驱动是一种基于操作系统的 DDI 接口而开发的,用于将各种 Application 数据翻译成打印机能解释的数据,并输出到打印机而开发的程序。
2 ) 为什么要做打印机驱动? 打印机的语言有很多种(如 ps lips pcl 等) ,各个厂商开发的打印机能解释的打印机数据也是各不相同。
如果没有打印机驱动,那么每个 Application 就需要针对每一种打印机开发不同的输出程序,这显然是不可能的。
为解决该问题,操作系统就制定了一套机制 DDI(device driver interface),基于这套机制,Application 无需考虑输出设备的的具体信息(如打印机语言等)只需要调用相应的 GDI(graphics device interface)函数,就可以将数据输出到不同的输出设备上,也就是说设备无关的。
同时 GDI 会调用 OS 提供的相应的 DDI 接口,而这些 DDI 接口的实现,就是指印机驱动。
在打印机驱动内部需要针对不同的设备,作相应的处理,从而减少了 Application 开发输出程序的负担。
3)Windows 打印系统构成 在进行打印机驱动程序开发之前,首先要明晚的是:打印机驱动程序仅仅是 Windows 打印流程中的一个中间环节。
一个打印机驱动程序是对一种特定打印机提供了一个图形函数集的动态链接库(DLL)它所提供的接口函数可以将与设备无关的输出信息转变为与设备相关的输出信息(指令和数据流)。
为了能够充分理解打印机驱动程序在一个实际打印作业中的地位与功能,从而很好的完成其设计与开发,对 Windows 整个打印流程有一个系统的分析是非常必要的。
下面详细描述整个打印流程:1, 应用程序创建一个设备上下文并在其上绘制一个对象,然后调用 GDI 中相应的函数接口 向与此设备上下文相对应的打印机发出一个打印请求。
2, GDI 调用相应的打印机驱动程序来处理打印请求。
3, 打印驱动程序创建一个打印作业,并调用 GDI 函数将处理结果返回 GDI。
4, GDI 调用打印假脱机系统。
5, 指印假脱机调用打印请求处理以便将指印作业发送到应用程序指定的打印机上。
6, 打印请求处理器将打印作业发送到本地打印提供者(目标打印机在本地) 。
7, 如果打印作业的类型是非直接打印,那么本地打印提供者就将打印作业以原始假脱机文 件的格式存放在磁盘上,并且将后来的打印片段不断的附加到假脱机文件中,直到应用 程序调用了 EndDoc 函数终止一个打印作业为止。
以上第一到第七步可能是重复多次来 产生一个完整的假脱机文件。
8, 本地打印提供者启动一个后台线程,打印主线程根据对打印假脱机子系统资源的监视情 况,选定一个最佳时刻触发假脱机文件的解析过程。
此时,打印输出转化为硬件设备上 的输出。
使 这种结构把应用程序从设备依赖中解放出来, Windows 系统能够适应于广泛 的输出设备。
4)Windows 假脱机体系结构 Windows 操作系统的打印假脱机技术主要是指当主机处理器给外部设备传送数据时, 为了减少占用主机处理器的时间 (因为端口的速度通常远低于处理器的速度)而采用的一种把辅助存储器(通常为硬盘)当作端口的缓冲存储器来使用,具体的发送工作由后台来处理的一种技术。
应用程序对 Win32 GDI 函数的调用传送到 GDI 图形引擎,GDI 图形引擎可以将绘制指令假脱机到一个 EMF 文件中, 或者与打印驱动程序连接,向假脱机绘制一个可打印的图像。
假脱机组件解释 EMF 文件,它们可以在数据流中插入页面布局信息以及作业控制指令。
假脱机然后将数据流发送给具有目标打印机 I/O 端口的串行、并行或网络端口的驱动程序。
在多任务环境下,打印假脱机系统的引入有以下三点重要意义:1, 避免了后台发送程序长时间占用 CPU,使控制权丑恶返回给用户以便其他操作。
2, 便于多路由输出,可以将打印作业调度到本地或者网络打印机,或者写到磁盘文件以便 随后打印。
3, 将底层有关端口的操作以独立的部件实现,简化了系统上层模块的实现。
5)端口监视器打印监视器主要负责把打印数据流从打印假脱机传送到合适的端口驱动程序。
打印监视器分为语言监视器和端口监视器两种。
其中语言监视器的主要作用是管理配置打印端口并控制打印机和物理端口之间的通信。
在打印机驱动系统体系中,这两个监视器都是可替换的,即开发人员可以根据需要编写自己的语言和端口监视器。
比如编写语言监视器提供对打印机双向通信的支持等。
在基于 NT 的操作系统下,用户所看到的打印视图其实是一个打印队列,一个或者多个物理打印机设备可以与该队列相连。
端口就是打印队列和一个打印设备之间的物理连接。
打印机驱动程序中端口监视模块负责和端口相关的操作。
每一个商品监视器支持一种或者多种端口类型的实例。
当需要给打印机添加新类型的端口实例时,就需要提供新的端口监视器。
打印假脱机通过调用 AddPrinter 函数把一个商品指派到端口监视器中。
在打印过程中,各种类型的打印设备都被列
上一篇:
南阳理工二手交易网站
下一篇:
Function GetIp(IP) 获得ip asp