前两天心血来潮, 买了一台支持wireless printing 的hp 打印机, 在使用了一段时间后, 觉得云打印技术虽然称不上非常大的创新, 但绝对是大大提高了生产力. 于是我忍不住对这个云服务的架构进行了猜想, 总的来说, 打印的渠道有以下两种:
每台支持云服务的打印机在出厂的时候都会有一个id, hp称这个id为claim_code.
要使用hp提供的云服务, 就必须将打印机注册到hp的服务器, hp会分配一个唯一的所谓mail_id给该打印机, 也就是claim_code@hpconnected.com
第一种:
每次打印机启动, 就会自动报告自己的IP/claim_code到hp的服务器. hp在服务器上会记录这个IP, 映射这个IP和claim_code@hpconnected.com
每当我从远程(手机或者其他的任何联网设备)发送一个请求(根据hp的要求, 是将所需要打印的文件通过邮件发送到claim_code@hpconnected.com), hp就会将邮件内容,连同可打印的附件内容一起转化为打印机可识别的script(也许叫postscript?)发送给打印机, 打印机就开始打印了. 这里有个技术问题, hp的发送是如何绕过我家路由器的防火墙, 发送到处于内网的打印机的? 如果同一个局域网有若干台同一型号的打印机, 如何识别?
第二种:
可以使用Google Cloud Printing进行打印, 前提是该打印机已经在hp进行了注册并且取得了claim_code@hpconnected.com帐号. 该帐号和Google Account进行关联后, 就可以使用Google 的Cloud Printing服务进行打印了.
hp开放了或者小范围内开放了一种叫ePrint的服务接口. 跟第一种情况一样,打印机在启动的时候也需要报告自己的IP给hp. 我在使用Google Cloud printing的时候, 只需要将文档发送给Google, Google然后将我的文档连同选择的打印机id, 一起通过eprint服务发送给hp , hp 同样需要将那份文件内容转化成打印机认识的script(不确定Google进行转换还是hp进行转换), 然后送到我的打印机进行打印.
这种方式其实就少了一个步骤,就是不需要将文档内容通过邮件的形式发送给hp, 我直接将打印的内容送到Google就可以了.
好处是,
1. 在Android手机上的操作变得异常简便, 我浏览文件/网页/朋友圈的时候, 看到一篇文章特别值得细细阅读, 我可以直接将这篇文章通过Google Printer 进行打印, 然后等我回家的时候, 那篇文章已经打印出来, 在桌子上等着我了.
注: 现在Google Cloud Printing 还处于Beta阶段, 还只能打印支持Cloud Printing的APP, 尚做不到随看随打.
2. 当hp决定将这个接口开放之后, 其他的开发者会想象出更加方便的打印方式, 比如在手机分享下面添加一个打印到HP Cloud Printer, 就直接可以进行打印了.
但是不论如何, 以上两种猜想都是需要借助HP的ePrint服务来完成, 哪一天hp的服务器出现问题, 整天链接就瘫痪了.