是否有可能从Azure Worker角色中打印.net代码?

本文关键字:打印 net 代码 角色 有可能 Azure Worker 是否 | 更新日期: 2023-09-27 18:16:33

首先,我意识到这个问题似乎在问同样的事情。不过,我要稍微修改一下再问一遍。

我正在做一个打印PDF的项目。我们有一个用于PDF操作的库。我们可以使用它来将PDF渲染为System.Drawing.Printing。PrintDocument对象可以在c#中使用和打印。我们将有一个Azure Worker角色,它可以接收许多1页的pdf文件,并将它们转换成一个大的pdf文件,我想有另一个Azure Worker角色,然后将这个大pdf文件发送到本地的Windows打印服务器。

由于打印部分要慢得多(与pdf创建/聚合部分相比),我希望能够将其托管在azure中,以便轻松扩展。

我最初的想法是"我认为这根本不可能。"Azure怎么可能知道我的本地打印服务器呢?"这是上述类似问题的基本答案。但经过一番搜索,我发现一些结果似乎表明,设置VPN站点到站点隧道或ExpressRoute连接可以让我做我想做的事情。然而,我对Azure比较陌生,我发现的结果缺乏实际的、有用的、有用的细节。

如果不能这样做,好吧,我可以在本地设置一个应用服务器来打印。但如果有人对如何实现这一点有什么想法或更多的见解,我很乐意听到。

是否有可能从Azure Worker角色中打印.net代码?

基本上,您可以像这样将pdf存储到Azure Blob Storage中:

http://azureaccount.blob.core.windows.net/PDF/pdf1.pdf

然后定义一个Azure Queue实体,如:

MyQueue (Pdf_Id Pdf_Blob_Url)

MyQueue(1, http://azureaccount.blob.core.windows.net/PDF/pdf1.pdf) 
MyQueue(2, http://azureaccount.blob.core.windows.net/PDF/pdf2.pdf)

并提交到Azure队列。

然后在打印服务器上,只需设置一个应用程序来检查AzureQueue以处理pdf。此时,只需直接从Azure blob存储url获取pdf文件来做任何你想做的事情,如合并,打印,....

在没有进入VPN/站点对站点设置的情况下,这里有一个想法:

你可以有一个小的应用程序托管在你的网络上,它使用服务总线中继来公开一个WCF服务(这将允许从角色进入到服务的连接)

工作者角色可以使用此服务,然后将PDF发送给它打印。

您的应用程序将通过您提到的PrintDocument对象将PDF发送到打印机。

:

https://azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-to-use-relay/

什么是服务总线中继?服务总线中继服务启用您可以构建在两个Azure数据中心中运行的混合应用程序以及您自己的本地企业环境。服务总线中继通过使您能够安全地公开Windows,简化了这一点位于公司内部的通信基础(Communication Foundation, WCF)服务企业网络到公有云,无需再打开一个防火墙连接,或要求对企业进行侵入性更改网络基础设施。