将具有Web角色的WCF服务部署到非Azure主机

时间:2012-10-12 11:42:16

标签: wcf azure

我有一个带有一个WebRole和一个WorkerRole的WCF服务,用于与Azure数据库进行通信。此服务部署到Windows Azure云中。一切正常。

但是现在,我有一个(或多或少学术性)问题:是否可以将此服务部署到另一个托管服务商,而不是Azure云。如果是,则必须更改程序的哪些部分以及在其他托管环境中需要哪些软件(即IIS)。

这个问题的背景是:我的客户想知道他是否独立于Azure云。

非常感谢您的回答!

1 个答案:

答案 0 :(得分:2)

简单回答

直接在Visual Studio中运行代码时(即不在模拟器中)会发生什么?

长答案

在Azure中创建角色时,Visual Studio会向项目添加一个继承RoleEntryPoint的类。该类包含OnStart,OnStop和Run。

的函数

对于WebRole,此类不是必需的,实际上创建的对象与ASP.NET应用程序位于一个单独的进程中。如果您在此处有任何代码,则需要在内部(或其他云)上运行它时将其放在其他位置。也许是Windows服务,也许是Global.asax?

对于WorkerRole,它还有一个RoleEntryPoint,但这是您的应用程序的主要入口点。在这种情况下,您可以在Visual Studio中创建一个新的Windows服务项目,并重用相同的逻辑。无论您在“运行”中使用的代码是什么?函数,您可能只需要移动到共享DLL,可以从WorkerRole或Windows服务访问它。

至于其他Azure功能(blob,队列,表,SQL数据库,访问控制服务,服务总线等等),这些仍可以从Azure外部使用,或者您可以为每个功能寻找替代方案。为了便于说明,您可以这样做:

队列 - > MSMQ

Blob - >文件系统

SQL数据库 - > SQL Server

如果使用Inversion of Control模式,您可以抽象出这些技术的实现,使您的应用程序不知道正在使用哪种底层技术。这使得切换实现(和云供应商)变得非常容易。