详细描述
转向这些附图,其中类似的参考数字提及类似的元件,下文在计算环境的上下文中描述本发明。虽然对实践本发明未作此要求,但是,本发明被描述成由PC(PC)所执行的计算机可执行指令(例如,程序模块)来加以实施。通常,程序模块包括执行特殊任务或实施特殊的抽象数据类型的例行程序、程序、对象、部件、数据结构和类似物。
可以在除PC以外的计算机系统配置中实施本发明。例如,可以在手持设备、多处理器系统、基于微处理器或可编程的消费电子设备、网络PCs、小型计算机、大型计算机和类似物中实现本发明。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由连接通信网络而被的远程处理设备来执行任务。在分布式计算环境中,程序模块可置于本地记忆存储设备和远程记忆存储设备二者之中。
虽然本发明可以被并入如以上所提出的许多种类型的计算环境,但是,以下在采取常规PC 20形式的示范通用计算设备的上下文中对本发明进行详细的描述。
在对本发明进行详细的描述之前,结合图1来描述本发明工作的计算环境。
PC 20包括处理单元21、系统存储器22,以及将包括该系统存储器的各种系统部件耦合到处理单元21的系统总线23。系统总线23可能是几种类型的总线结构,包括存储器总线或存储控制器、外围总线和使用各种总线构造的局部总线。该系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26被存储在ROM 24中,该基本输入/输出系统包含有助于在PC 20内部的各个元件之间传送信息(例如,在启动期间)的基本例行程序。PC 20还包括用于从硬盘60读取并对其写入的硬盘驱动器27以及用于从可移动磁盘29读取并对其写入的磁盘驱动器28。
硬盘驱动器27和磁盘驱动器28分别通过硬盘驱动器接口32和磁盘驱动器接口33连接到系统总线23。这些驱动器及其关联的计算机可读媒体为PC 20提供计算机可读指令、数据结构、程序模块和其他数据等非易失存储。虽然这里所描述的示范环境使用硬盘60和可移动磁盘29,但是,精通该技术领域的人将会理解:也可以在示例性操作环境中使用可以存储由计算机存取的数据的其他类型的计算机可读介质,例如,光盘驱动器和磁盘、盒式磁带、快闪存储卡、数字化视频光盘、伯努里式磁带匣、随机存取存储器、只读存储器和类似的媒体。
许多程序模块可以存储在硬盘60、磁盘29、ROM 24或RAM 25上,包括操作系统35、一个或多个应用程序36、其他程序模块37和程序数据38。用户可以通过输入设备,例如,键盘40和定位设备42,将命令和信息输入PC 20。其他输入设备(未示出)可以包括话筒、操纵杆、游戏键盘、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其他的输入设备经常通过被耦合到该系统总线的串行端口接口46而被连接到处理单元21,但也可以由其他接口例如,并行端口34、游戏端口或通用串行总线(USB)来加以连接。监视器47或其他类型的显示设备也经由接口,例如,视频适配器48连接到系统总线23。除了该监视器以外,PCs通常包括其他外围输出设备,例如,通过并行端口接口34连接到系统总线23的扬声器和打印机30。
PC 20可以在使用与一台或多台远程计算机,例如,打印服务器49的逻辑连接的联网环境中进行工作。打印服务器49可能是另一台PC、服务器、路由器、网络PC、对等设备或其他的共同网络节点,通常包括以上相对于PC 20而描述的许多元件,尽管打印服务器49经常专用于将来自PC 20的打印请求经路由选择到附装的打印机50。图1中所描绘的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是很普遍的。
当PC20用于LAN联网环境中时,它通过网络接口或适配器53连接到局域网51。当PC20用于WAN联网环境中时,它通常包括用于在WAN 52上建立通信的调制解调器54或其他装置。调制解调器54(可能是内置的,也可能是外置的)经由串行端口接口46连接到系统总线23。在联网环境中,相对于PC 20而描绘的程序模块或其各个部分都可存储在远程记忆存储设备中。可以理解,所示的网络连接是示例性的,在各台计算机之间也可使用建立通信链路的其他装置。
除非另有指示,在下文中将参照由一台或多台计算机执行的动作和操作的符号表示,来描述本发明。由此,可以理解这类动作和操作(有时被称作“计算机执行的”)包括用结构形式来表示数据的电信号计算机的处理单元所执行的操作。这项操作对该数据进行变换,或者将其保存在该计算机的存储系统的位置,这样,以精通该技术领域的人所熟悉的方式重新配置或改变该计算机的操作。保存数据的数据结构是该存储器的物理位置,具有该数据的格式所定义的特殊属性。但是,前述上下文中描述了本发明,而精通该技术领域的人将会理解:这并不意味着进行限制,下文所描述的各种动作和操作也可以在硬件中加以执行。
根据本发明的一个重要的方面,客户PC 20使用与打印服务器49的管理设置同步的、存储的管理设置,在本地呈现文档;并且,在使用合适的本地打印机语言将文档转发到打印服务器49之前,客户PC 20在本地对它们进行排列。
遵照本发明,客户PC 20能够进一步准备文档,用于向远程打印机50呈现,而在逻辑上不与打印服务器49连接。然后,客户PC 20可以轮询打印服务器49,直到它变得可用为止;并且,客户PC 20呈现并转发这些文档,用于在以后的时间打印。
转向这些附图,图2中示出用于执行本发明的一个实施例的示例性软件体系结构。在客户PC 20上,示出单一应用程序36正在按用户级(在该等级中,运行于计算机上的程序与该计算机用户相互作用)运行。在其他实施例中,在客户PC 20上同时可能运行许多应用程序,其中的每个应用程序可以使用打印子系统202-203。为了打印到在本地或远程地所连接的PC 20打印机,大多数应用程序36本身不执行所有所需的功能特性,而是依靠外部模块。但是,在可选择的实施例中,这些打印子系统可能是应用程序36本身的一部分、操作系统35的一部分或使用基础操作系统功能的单独程序。
在图2所示的实施例中,希望打印文档的应用程序36首先与操作系统模块35进行通信。这些操作系统模块35与应用程序36一起提供将特定用途文档数据转换成更通用的中间数据格式所必要的功能特性,并且将新近格式化的文档传送到打印子系统。在另一个实施例中,应用程序36自己将特定用途文档数据转换成通用中间数据格式,而无须操作系统35的协助。在另一个实施例中,应用程序36将特定用途文档数据与哪个应用程序36已发送该特定用途文档数据的某个指示一起发送到打印子系统,该打印子系统能够将该特定用途数据转换成本地打印机语言。作为选择,应用程序36执行打印子系统本身,并且,以后直接将特定用途数据转换成本地打印机语言。
在特定用途数据已转换成中间数据格式之后,操作系统模块35将该文档转发到打印路由器201——打印子系统的第一级。该打印路由器201根据其目标打印机对打印作业进行路由选择;不论它是通过打印服务器49连接到客户PC 20的远程打印机50,还是通过并行端口接口34或某种其他的通信媒体(无须利用打印服务器49)在逻辑上连接到客户PC 20的本地打印机30。在一个实施例中,打印路由器201根据单独的远程或本地指示器来作出这个决定,此决定与该打印作业一起由操作系统模块35或应用程序36来发送。作为选择,打印路由器201可以从该文档本身得到这个指示器。如果打印作业打算送给远程打印机50,则远程打印功能特性202所专用的那组子模对其进行接收和处理。另一方面,如果该打印作业打算送给本地打印机30,则本地打印功能特性203所专用的那组子模对其进行接收和处理。在其他实施例中,打印路由器201可能是打印子系统的任选部件。相反,客户PC 20只可以打印到远程打印机或本地打印机,并且只可以执行那组特定的子模块。客户PC 20也可以打印到远程打印机和本地打印机,但可以为这两种打印功能反复应用许多相同的子模块。
在图2所揭示的实施例中,本地打印子系统203包括所展示的各个部件,尽管在其他实施例中,可以在本地打印子系统203中的或多或少的部件中执行由这些部件所代表的功能特性。本地供应者220协调子系统203的其他部件,并且使整个本地打印过程自始至终和谐配合。操作系统功能221执行各种转换并传送功能,从而可以获得操作系统35已经执行的内容。当首先为本地打印机30登记关于活动打印功能特性的操作系统35时,本地打印子系统203将特定打印机数据存储在打印机清单223中。该数据经常包括本地打印机30以及将要被使用的驱动器和设置的规格。在选择性实施例中,当发送打印作业时,只登记打印机30;并且,在打印时间获得并应用打印机清单223中所规定的各种设置。
当打印作业经路由选择给本地供应者220时,首先用调度程序部件224为该作业登记,调度程序部件224将该作业放置在合适的假脱机文件队列225中。这些假脱机文件存储表示采用中间数据格式的文档的信息,以及在呈现该文档的过程中应该使用的各种打印特征。当作业准备好用于解除假脱机(即,准备好打印)时,调度程序224将该假脱机文件从队列225传送到打印处理器222,打印处理器222准备打印文档。然后,打印处理器部件222将该文档发送到打印机驱动器226,用于译成本地打印机语言。将所呈现的文档(现在专门为本地打印机30而进行格式化)发回给本地供应者220,本地供应者220将所呈现的文档发送到利用通过端口监视器204所提供的操作系统功能特性的合适的打印机。当本地打印机30是目标时,端口监视器204可以使用(例如)并行端口接口34。通过使用操作系统功能特性,端口监视器204能够潜在地通过众多不同的通信媒体来进行通信,并能够对这些通信媒体进行监控。
在选择性实施例中,假脱机文件队列225不需要由本地打印子系统203来保持,但可以在操作系统35或应用程序36中加以执行。例如,一旦已完成打印旧文档,应用程序36(与打印子系统203进行密切的通信)就将会只开始打印新文档。虽然通常会在如今的许多PC 20上找到参照图2所描述的本地系统203,但是,在其他实施例中,可以用类似但又不同的模块来代替参照图2所描述的各种部件。
遵照本发明,如图2中所揭示的,远程打印子系统202分成为所展示的各个部件。在其他实施例中,这些部件所代表的功能特性在或多或少的部件中被加以实施。第一个部件——核心210所提供的功能特性类似于本地供应者部件220所提供的功能特性;它使各种其他的远程部件和谐配合并且相互协调,同时从接收到完成一直跟踪特定的打印作业。
在一个实施例中,一旦已为活动打印功能特性选择远程打印机50,远程打印子系统202的核心210就通过连接管理器217(可使用不同的联网协议(例如,SMB 219和RPC 218))与跟远程打印机50连接的打印服务器49进行通信。然后,连接管理器217接收与远程打印机50有关的信息,包括管理设置、打印机设置、驱动器和其他设置。该信息传回到核心210,核心210将本地打印子系统的打印机清单223和高速缓冲管理器215用作存储空间。同步管理器216定期使该被存储的信息同步化,以便与打印服务器49中所存储的最新近的信息相匹配。在一些实施例中,同步管理器216在某段时间之后请求被更新的信息。在其他实施例中,同步管理器216只在接收“在打印服务器49上已登记该信息的变化”这个通知之后才更新所存储的信息。在其他实施例中,当客户20上的核心210修改存储在打印服务器49上的信息时,这些设置先放在高速缓冲存储器中。
随后,当打印作业经路由选择到远程打印子系统202时,核心210使用同步管理器216来确保这各种设置和驱动器是最新的,然后使用本地打印和远程打印功能特性来呈现并打印该作业。如果与远程打印机50连接的打印服务器49不可用,则核心210用信号通知可达性事件系统212为打印服务器49轮询网络。当服务器49变得可用时,通知核心210,并发送所呈现的打印作业。在其他实施例中,如果不能利用打印服务器49,则取消该打印作业;或者,应用程序36本身或其他系统功能继续按某种预定的时间间隔来发送该打印作业,直到打印服务器49恢复在线为止。在图2所揭示的实施例中,虽然以上将各种部件描述成正在与打印服务器49进行通信,但是,只有连接管理器217具有与打印服务器49的逻辑连接,并且,所有通信都通过连接管理器217来加以路由选择。在选择性实施例中,这些其他的部件通过连接管理器217所使用的那些同样的网络协议来使用网络硬件。
远程打印子系统202的其余的部件为以上所描述的那些部件提供支持。事件管理器211用于在远程打印子系统202中的各个部件之间传送各种事件通知。端口监视器213通过网络51把发送到打印服务器49的各个通信相互协调,并且响应于利用外部端口监视器204可使用的系统请求相类似的系统请求。最后,清除器214删除因各种原因(例如,如果提出请求的用户已退出客户PC 20)而超过它们使用性的打印机实例和作业实例。
通过参照以下的图3-7,将会更好地理解图2中所描述的远程打印子系统202的软件体系结构,同时进一步详细地描述了该体系结构所执行的各种功能。
如图3中所描述的,根据本发明的各种打印服务执行许多重要的任务,以支持客户方呈现和管理信息维护。在步骤301期间,这些打印服务可相互协调从打印服务器49接收到的写特定打印机50有关的管理信息和设备信息的存储。在一个实施例中,这些打印服务的部件可相互协调从打印服务器49所收到的管理信息和设备信息。然后,将该信息存储在位于客户PC 20上的数据结构中,随后可以在那里使用该信息,以便正确地打印文档。
在步骤303期间,只要这台打印机50仍然保持运行,这些打印服务就会继续使客户20上的管理信息和设备信息与存储在打印服务器49上的信息同步。在一个实施例中,通过定期用打印服务器49上的信息替换存储在客户20上的信息,来执行这种同步。在另一个实施例中,只在打印服务器49已更新与合适的打印机50有关的某个信息之后,才使该信息得以同步。在另一个实施例中,执行这两种同步方法,从而增加网络信息流通量,同时也提高了存储在客户PC 20上的信息的精确度。
在步骤305期间,这些打印服务将所存储的管理设置和设备设置应用于文档。通过应用这些设置,这些打印服务确保该文档的格式化是合适的,并且,网络安全问题得到了解决。即使不能利用打印服务器49,由于与该服务器上所存储的设置相比,这些设置也相对比较现时,因此,利于离线呈现。以下将进一步描述应用这些设置的细节。
最后,在步骤307期间,这些打印服务将所呈现的文档发送到打印服务器49,以便转发到打印机50。通过在客户PC 20上呈现该文档,可为打印服务器49解除繁重的计算负担,从而使其更容易度量。由于常常根据步骤303来使服务器49和客户20上的设置同步,因此,两者的呈现过程很有可能相同,从而排除了异常打印过程的担忧。
前述步骤描述得非常概括,而以下的图4-7将进一步详细地描述本发明的各个实施例。将文档打印到所规定的远程打印机50的过程中的第一个步骤是:利用操作系统35为打印机50登记将来的打印任务。虽然打印机登记在该技术领域中众所周知,但是,本发明的各个特殊方面使图4和图5中所揭示的登记过程很独特。图4描述了遵照本发明的通过操作系统35来登记打印机50的一般过程;而图5描述了在图2的示例性软件体系结构中这种方法。
如在该技术领域中众所周知,本实施例设想了用于在步骤401期间在操作系统35中增加新的远程打印机50的一种方法,以便随后的打印命令可以识别打印机50。在一项实施中,操作系统35通过网络来进行浏览,从而从其连接的远程打印机50的可用打印服务器49清单中进行检索。然后,操作系统35将这些远程打印机50自动加入数据库,或者允许用户选择该用户可能会对其发送打印作业的那些打印机50。在其他实施例中,用户规定该用户可能会添加的远程打印机50的网络通路,并且,这台新的打印机登记在该操作系统的数据库中。在其他实施例中,该初始登记不是由操作系统35来执行,并且,只有当应用程序36发送特定的打印作业时,才执行随后的步骤403-407。
一旦用户已登记远程打印机50,控制打印的那些服务就在步骤403期间由打印服务器49接收管理信息和设备信息。在不同的实施中,这些打印服务在应用程序36、操作系统35或打印子系统202、203中加以执行。从打印服务器49那里接收的设备信息包括驱动器版本信息、打印机驱动器本身、该打印机的规格、对该打印机所进行的修改、该打印机的较佳输出等。另一方面,打印服务器49的管理设置包括远程打印机50的较佳设置、为远程打印机50考虑的特定设置、为客户PC 20考虑的访问等级等。为了检索该信息,客户PC 20在登记期间由打印服务器49请求该信息。在一个实施例中,这项检索是不会使PC 20慢下来的异步过程。在另一个实施例中,只有当即将处理打印作业时,才由打印服务器49检索该信息。
然后,在步骤405期间,将所接收的信息存储在客户PC 20上。通过在本地存储该信息,可允许客户PC 20随后使用管理设置和打印机设置(而无须使用打印服务器49)来呈现文档。这样,可以允许更快的呈现过程(因为客户PC20不需要等候网络通信的各种结果),并且也可以允许离线呈现(因为客户PC20能使用存储的管理设置)。在一个实施例中,打印子系统、应用程序36和操作系统35可存取该存储的信息。
通过使用从打印服务器49接收的设备信息,可以在步骤407期间在客户PC 20上创建打印机事例。打印机事例指的只是存储一堆设备信息的数据抽象概念,以便这些打印服务可以在处理打印作业时存取该设备信息。通过分开表示不同打印机的设备信息,打印机事例有利执行从应用程序36发送到特定打印机的打印命令。如在该技术领域中众所周知,打印机事例经常保存在客户20上,以代表在本地连接的打印机30,其信息由用户输入或通过共同通信接口(例如,并行端口接口34、USB等)被加以检测。在一项实施中,用类似于代表本地打印机30的打印机事例的格式来存储代表远程打印机50的打印机实例。
最后,在步骤409期间,这打印服务的某些部件也使管理信息和设备信息与存储在该打印服务器上的信息同步。这个步骤实质上等同于以上参照步骤303所描述的步骤。通过使客户20上所存储的管理信息和设备信息与打印服务器49上所存储的信息保持现时,这个实施例促进了打印和离线呈现的精确度。
在图4中以高级纵览方式中描述这些步骤,图5描述了图2的示例性软件体系结构中的打印机登记的一项实施。第一个步骤501等同于步骤401,并且依靠该操作系统所执行的类似的传统协议。其余的步骤近似地分解如下:步骤503-507对应于步骤403,步骤509-511对应于步骤405,步骤513对应于步骤407。
一旦用户已添加新的远程打印机50,操作系统35就将通知发送到远程打印子系统202的核心部件210。然后,在步骤503期间,核心210从连接管理器217那里请求与远程打印机50有关的管理设置和设备信息。在选择性实施例中,该功能特性不需要在不同的部件中加以执行。核心210和连接管理器217确实可以是操作系统35或应用程序36的一部分。
在接收到这个请求时,连接管理器217就使用合适的网络协议218和219,以便在步骤505期间从打印服务器49中检索信息。在一个实施例中,连接管理器217更喜欢使用远程程序调用(RPC)协议218来与打印服务器49进行通信,同时保持使用其他流行的协议(例如,SMB(或UNIX环境中的Samba)219)来进行通信的能力。在选择性实施例中,使用其他协议来执行客户PC 20与打印服务器49之间的信道。如果在客户PC 20和打印服务器49中的这个或那个不支持特定的联网协议,则这两台计算机尝试选择性协议,直到选择可相互理解的协议为止。打印服务器49通常以类似于以上所描述的打印机事例的数据抽象概念来存储管理信息和设备信息。这样,在一个实施例中,连接管理器217请求关于特定的远程打印机50的信息,并且,打印服务器49将打印机50的网络标识符与存储在该数据抽象概念中的打印机的关联特征进行匹配,并返回那些关联的特征。
在步骤507期间正在接收该信息的连接管理器217将其发送到核心210供进行处理。在一个实施例中,核心210在步骤509期间将打印服务器49所应用的管理设置存储在远程子系统的高速缓冲管理器215的高速缓存项目中。高速缓冲管理器215的数据结构包括存储信息的高速缓冲存项目。在一项实施中,这些高速缓存项目与其各自的远程打印机有关联,这些各自的远程打印机使用标识符表格(最好是使这些高速缓存项目的存取更快的散列表格)。作为选择,可使用该技术领域中众所周知的其他存储装置来存储并访问管理设置。
在一个实施例中,将管理设置存储在远程打印子系统202中,而在步骤511期间,将核心210所接收的其他设备信息发送给本地供应者220。然后,在步骤513期间,本地供应者220在其打印机223清单中创建代表远程打印机50的本地阴影打印机事例。对应于远程打印机50的这个本地阴影打印机事例的格式化方式等同于对应于以上所描述的本地打印机30的本地打印机事例。但是,代表本地打印机30的本地打印机事例通过外部端口监视器204来发送打印作业,而代表远程打印机49的本地阴影打印机事例通过该远程打印子系统的端口监视器213来发送打印作业。较佳的是,本地打印子系统203处理这些本地阴影打印机事例象处理所有其他的本地打印机事例一样,从而在处理对这些远程打印机50的打印命令时利用本地打印功能特性。
在步骤515期间,远程打印子系统202中的过程确保存储在客户PC 20上的管理信息和设备信息与存储在打印服务器49上的信息同步。在一个实施例中,同步管理器216定期从打印服务器49请求更新的信息,然后,此更新信息替换存储在高速缓冲管理器215和本地打印子系统203中的信息。在另一个实施例中,同步管理器216定期将在本地存储的管理信息和设备信息与打印服务器49上的信息进行比较。如果它们不同,那么,同步管理器216替换存储在高速缓冲管理器215和本地打印子系统203中的不同的信息。在另一个实施例中,核心210通过连接管理器217来轮询打印服务器49,以确定关于打印服务器49的管理设置和设备设置是否已改变。打印服务器49可以保持指出是否已发生变化的很小的数据结构,该数据结构可以由核心210来进行存取。核心210所接收的响应发送到同步管理器216,然后,同步管理器2 16适当地更新在本地存储的设置。这些方法只是起说明性的作用,同步管理器216或远程打印子系统202的另一个部件可以使用其他方法来保持管理设置和设备设置及时。
一旦已为远程打印机50由操作系统35登记,应用程序36就可以为其发送打印作业。图6和图7中描述了本发明所设想的独特的打印过程。图6描述了应用程序36打印到远程打印机50的一种过程;而图7描述了在图2的示例性软件体系结构中的一种做法。
当然,将数据打印到远程打印机50的过程中的第一个步骤是:访问具有打印性能的应用程序36,并利用那个性能。这样,在步骤601中,用户发送来自应用程序36的某个打印命令,从而指出:应该将文档发送到远程打印机50。在不同的应用程序中,使用不同的方法来执行这项功能。在一项实施中,用户从菜单中选择“打印”命令,或者,通过按压键盘40上的组合键或一连串键来选择“打印”命令。然而这项打印命令选好后,它仍然向用户请求关于将哪台打印机作为目标的输入。在选择性实施中,可以预先将远程打印机50选作当前的“预置”打印机。
在处理这项打印命令之后,应用程序36在操作系统模块35的帮助下,在步骤603期间将用专有应用程序格式存储的文档转换成中间数据格式。这种中间数据格式包含足够的信息,以便在远程打印机50上精确地打印该文档。但是,这种中间数据格式对于远程打印机50和应用程序36而言都不是特定的。利用这种方法,可以对该文档进行格式化和修改,而无须担心其特殊的应用程序源或目标打印机,并且,执行这些变换的那些子系统在很大程度上可以与打印机50或应用程序36的选择无关。但是,在其他实施例中,可能不需要中间数据格式。在以上所描述的情况(其中,应用程序36直接打印到远程打印机50,而无须使用基础操作系统35所提供的功能特性)中,应用程序36只使用其自己的特定用途格式,直到必须将该文件转换成供传输的本地打印机语言为止。在其他实施例中,打印子系统依据每种不同的特定用途格式来执行对文档的格式化更改,从而避免转换成中间数据格式。
一旦已创建该中间文件,就在步骤607期间将其放置在客户20上的队列上。在一个实施例中,这个队列用每一打印机事例一个队列来表示数据结构。当文档加入该队列时,将这些文档放置在具有某些例外的先进先出格式中,这对于精通该技术领域的人而言是众所周知的。加入该队列的第一个文档是打印到远程打印机50的第一个文档。与远程打印机50连接的打印服务器49也将有关其自己的队列的数据发送给客户20,这两台计算机可以合并它们的队列,以便客户20在相对于打印服务器49所接收的其他打印作业而言的合适的时间发送打印作业。客户20也可以使用所接收的数据来通知用户何时将打印其打印作业以及关于其他用户的文档采用什么顺序。在其他实施例中,在应用程序36内执行该队列,或者,没有队列可执行;并且,如果原来的打印请求被拒绝,则应用程序36按预定的时间间隔来发送打印请求。
当文档达到队列的前部并准备发送到远程打印机50时,客户20在步骤609中确定打印服务器49是可用。如在该技术领域中众所周知,客户20用许多种潜在方法中的一种方法来进行这种确定,这些潜在方法包括:通过使用基础网络功能特性来仅仅启用(pinging)打印服务器49;通过使用达成的网络协议之一来询问打印服务器49是否可以接受打印作业;或者,通过在打印请求失败之前假定打印服务器49可用。如果客户20确定打印服务器49可用,则将该中间文件译成远程打印机50的本地打印机语言,并且,在步骤611期间将最后形成的文档发送到打印服务器49。
由于有关远程打印机50的驱动器、打印机设置和管理设置的信息如步骤405-407中所描述的那样存储在客户20上,因此,可以将该中间文件有效率地译成本地打印机语言。这些存储的设置可以是在上一次更新时由同步管理器216存储的稳定的设置,也可以是就在打印特定文档之前从打印服务器49那里接收的新近的设置。在一个实施例中,尽管网络信息流通量会增加但利用新近的设置是较佳的方法。在选择性实施例中,陈旧的设置是较佳的,尽管服务器49和客户20更有可能是非同步的。设备设置和打印机设置描绘远程打印机50的物理属性,而管理设置则较佳地要求在呈现该中间文件时,对其执行各种格式化编辑和打印编辑(例如,将页打印到一张纸的两侧)。在其他实施例中,管理设置在步骤603之前由应用程序36来接收,并且,应用程序36使用这些设置来创建具有已被应用的管理设置的中间文件。在其他实施例中,首先将打印机设置和管理设置应用于该中间文件,然后,通过使用打印机设置和驱动器,将该中间文件转换成远程打印机50可读的文档。用远程打印机50的本地打印机语言来书写这种文档。一旦被呈现,该文档就发送到打印服务器49,在那里,该文档经路由选择到合适的远程打印机50。若必要的话,打印服务器49将该文档加入合适的打印机队列,但与典型的打印网络不同,打印服务器49在将该文件发送到打印机50之前不需要执行任何文件转换或格式化更改。通过在客户20上呈现该文档打印服务器49的资源可自由地用于其他任务。
如果打印服务器49在被客户20轮询时不可用,则在步骤613中,该中间文件只保留在那台打印机的队列中。在一个实施例中,客户20按预定的时间间隔来轮询打印服务器49,以确定打印服务器49是否已可用。客户20也可以等候网络或设备活动,该网络或设备活动指出:打印服务器49可能已可用。然后,客户20按预定的时间间隔并在某项活动之后进行轮询,以便尽可能迅速地推动打印。在选择性实施例中,客户20按预定的时间间隔来轮询打印服务器49。遗憾的是,这些时间间隔通常要么太长——延长打印文档之前可能的等候时期;要么太短——在这种情况下,在轮询过程中使用颇有价值的网络资源和CPU资源。在另一个实施例中,客户20听取设备和网络活动,并且在接收通告之后,对打印服务器49进行轮询。但是,如果客户20错过该设备或网络通告,则客户20将永远不会轮询打印服务器49,也永远不会打印该文档。通过结合这两种方法,第一个实施例提供了两者的优点,同时避免了许多缺点。
已在高级层次上描述了这些步骤,图7描述了图2的示例性软件体系结构中的、根据本发明的一个实施例的打印过程的一项实施。第一步骤701-703等同于步骤601和603。其余的步骤分解如下:步骤705-707对应于步骤605,步骤709-711对应于步骤607,步骤713对应于步骤609,步骤715-717对应于步骤611,以及,步骤719-721对应于步骤613。由于以上已相当详细地包括通过应用程序36来发送打印命令和用中间数据格式来创建文件这些初始步骤,因此,以下的描述将从步骤705开始。
一旦应用程序36和操作系统模块35已创建中间文件格式,通过打印路由器201就在步骤705期间将该中间文件经路由选择到远程打印子系统的核心210。在一个实施例中,打印路由器201保持由操作系统35所登记的远程打印机和本地打印机的清单,并且,当打印作业转发到路由器201时,根据目标打印机属于哪个清单,将该打印作业发送到合适的打印子系统。在选择性实施例中,利用“该打印作业是否打算送给远程或本地打印机”这个单独的指示来发送该打印作业,并且,该指示由路由器201来截取和处理。
该核心在接收并处理了该中间文件后,在步骤709期间,它将该中间文件转发给本地供应者220。在一个实施例中,本地供应者220象对本地打印作业那样来接收和处理这个所发送的文件。由此,本发明的这个实施例在远程打印情况中使用本地打印功能特性,从而排除了复制许多这些功能的需求。在步骤711期间,本地供应者220确定该打印作业以哪个本地阴影打印机事例为目标,并将其放置在与那个本地阴影打印机事例有关联的队列中。在选择性实施例中,远程打印子系统202本身执行本地打印功能特性,所以将该打印作业放置在远程队列中,从而使本地打印子系统203能够自由地把焦点放在本地打印作业上。
一旦打印作业已到达合适的队列的前部,在所呈现的文档发送到打印服务器49之前,远程端口监视器213首先确定打印服务器49是否可用(步骤713)。在一个实施例中,在本地打印子系统203执行任何呈现之前,远程端口监视器213核对可用性。在选择性实施例中,流水线处理打印文档的各个部分。所以,只在本地打印子系统203已执行某种呈现之后,远程端口监视器213才核对可用性。但是,一旦已确定该服务器不可用,两个实施例就会集中在一起,因为失去了在第二个实施例中局部呈现的数据。
如果打印服务器49可用,则在示例性实施例中,本地供应者220将该打印作业发送到打印处理器222,打印处理器222应用与该本地阴影打印机事例有关联的被存储的设备设置和管理设置。这些管理设置包括以上根据步骤611所描述的那些设置。由于高速缓冲管理器215所存储的高速缓冲器输入使管理设置与其各自的远程打印机50和打印服务器49相匹配,因此,将该打印机的标识发送到高速缓冲管理器215,并返回所请求的设置。在某些情况中,核心210验证:目前存储的设置与被存储在打印服务器49上的设置同步。在一个实施例中,核心210(正在与同步管理器216进行通信)使用连接管理器217来更新具有如以上在步骤509中所描述的最近的管理设置的高速缓冲管理器215。但是,如果打印服务器49在此过程期间不可用,则打印处理器222使用所存储的设备设置和管理设置,而无须更新它们。通过允许该打印过程在不更新所存储的设置的情况下继续进行,这个实施例促进了离线打印和呈现。在其他实施例中,核心210要求在该打印过程继续进行之前利用打印服务器49来更新管理设置,从而阻碍了离线打印和呈现。在其他实施例中,核心210没有更新管理设置,而是使用上次被同步管理器216所同步化的管理设置,直到被明确通知进行更新为止。
然后,在步骤715期间,存储在客户20上的打印机驱动器226和操作系统功能221将该文档译成合适的本地打印机语言。通过使用该技术领域中众所周知的各种方法,来应用设备设置和管理设置,并执行合适的打印机驱动器所进行的转换。实际上,在一个实施例中,这些功能由基本上未被修改的传统本地打印子系统203来执行,该文件的最终目的地对于该传统本地打印子系统203而言是透明的。
在本发明的一个实施例中,流水线处理打印文档的各个部分。这样,在步骤717期间,通过该远程打印子系统的端口监视器213来发送现在使用本地打印机语言的文档的各个部分。当呈现该文档的各个部分时,它们通过端口监视器213来加以发送,同时,呈现随后的各个部分。当然,如上所述,远程端口监视器213只使这些任务和谐配合。远程端口监视器213与连接管理器217进行通信,连接管理器217执行将打印作业发送到打印服务器49所必要的各个网络协议。在选择性实施例中,当呈现该文档时,远程端口监视器213不需要同时发送它。相反,本地供应者220在将该文档放置在假脱机文件队列225中之前呈现该文档,或者,本地供应者220在将该文档发送到端口监视器213之前从该队列中完整地呈现该文档。对于本发明的实施而言,执行所识别的各项操作的精确方式不是必需的。
在步骤713中,如图7中所揭示的,如果远程端口监视器213确定打印服务器49不可用,则控制传递到步骤719,在那里,停止这些设置的应用和本地打印子系统203所执行的转换,并且暂停与打印服务器49相对应的该客户的队列。其后,在步骤721期间,客户20开始轮询服务器49。在一个实施例中,本地供应者220所管理的队列被远程端口监视器213暂停,因为这是处理许多现存的本地打印子系统203中的打印机故障的一种简单又众所周知的方法。在选择性实施例中,本地打印子系统203执行处理打印机故障的任何特定的方法,包括:取消所有打印作业,以及指出应用程序36应该在将来的某个时间重新发送打印作业数据。
在本发明的一个实施例中,在步骤721期间,被并入远程打印子系统202的可达性事件系统212使用连接管理器217来轮询打印服务器49。可达到性事件系统212较佳地执行以上根据步骤613所描述的轮询方法之一。一旦远程可达性事件系统212向核心210发送通知,即打印服务器49可用,就解除对该队列的暂停,并且,该打印操作继续进行到步骤715,其中,对该中间文件加以处理并发送到打印服务器49。
如果部分或所有该远程打印子系统的部件失灵,或者,在已执行所有打印作业之前,用户退出系统,则本发明的一个实施例也规定清除器部件214。清除器214确保删除与已被取消或不应该再被打印的作业相对应的任何本地阴影打印机事例、超高速缓冲输入或假脱机文件。这样,在使跨越多个子系统和部件的打印作业协调的过程中,所固有的潜在困难可能因这个部件的功能特性而得到缓和。
鉴于本发明的原理可以应用到许多可能的实施例,故应该认识到:这里根据绘制的附图而描述的各个实施例意在只起说明性的作用,而不应该被视作限制本发明的范围。例如,精通该技术领域的人将会认识到:可以在硬件中执行软件中所示的说明性实施例的元件,反之亦然;并且,在不脱离本发明的精神的前提下,可以在配置和细节方面修改这些说明性实施例。另外,在不脱离本发明的前提下,可以修改、补充并/或重新安排这些说明性步骤。所以,如这里所描述的本发明计划可将所有这类实施例包括在以下权利要求书及其相等物的范围以内。