可以在第三方托管平台上运行使用 Windows Azure Service Bus 的应用程序。除了托管服务所需的设置外,您无需使用任何特殊设置即可在托管服务上部署应用程序。从第三方系统访问 Service Bus 也没有任何特殊安全要求。然而,为使应用程序正常运行,需要注意两个要点,这与在 Windows Azure 上运行应用程序非常类似:
-
托管服务可能无法安装 Windows Azure SDK
如果托管服务未安装 Windows Azure SDK,您将无法确定 Microsoft.ServiceBus.dll 程序集是否可供您的应用程序使用。因此,您必须确保已将相应的程序集打包,并向应用程序重新分配了该程序集。为此,请参阅以下过程。
-
托管服务可能没有 Machine.config 文件中的相应列表
因为第三方托管服务可能未安装 Windows Azure SDK,主机上的 Machine.config 文件将无法提供有关 Service Bus 绑定或终结点的信息。由于许多托管服务的安全限制,您可能无法在主机上安装该 SDK,于是无法将那些配置元素添加到 Machine.config 文件中。因此,您的 Service Bus 应用程序的 App.config 文件可能无法提供任何特定于其中的 Windows Azure 的信息。
这个问题有两个解决方案。
-
建议的解决方案是使用Windows Azure API 以编程方式配置您的应用程序。例如,虽然可以在 App.config 文件中存储名称和密码信息,但最好是以编程方式设置任何中继绑定配置。有关以编程方式设置配置的详细信息,请参阅将 WCF 服务配置为向 Service Bus 注册。
-
第二个解决方案是手动修改应用程序的 App.config 文件,即手动添加所有相关的 Service Bus 信息。这样做时,可以使用 App.config 文件配置绑定和终结点。为此,可以在已安装 Windows Azure SDK 的计算机上查看 Machine.config 文件,找到所有与 Windows Azure 相关的配置信息,并将其复制到应用程序的 App.config 文件中。虽然这样即可使用主机服务上的 App.config 文件,但却难以测试您的代码:本地测试计算机(将已安装 Windows Azure SDK)上的 Machine.config 文件可能存在重复问题。因此,我们建议您使用前一选项,以编程方式设置一切。
将 Service Bus 程序集与您的应用程序一起打包
-
在“解决方案资源管理器”中,将“Microsoft.ServiceBus.dll”程序集作为引用添加到项目中。
这一步是添加程序集引用的标准过程。
-
在“引用”文件夹中,右键单击“Microsoft.ServiceBus”。然后,单击“属性”。
-
在“属性”对话框中,将“本地复制”设置为 True。
-
这样做可确保将 Microsoft.ServiceBus.dll 程序集复制到本地 \bin 路径,并且该程序集在托管服务上运行时将可供您的应用程序使用。