首页 文章

使用WebRole将WCF服务部署到非Azure Hoster

提问于
浏览
0

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

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

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

非常感谢你的回答!

1 回答

  • 2

    Simple Answer

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

    Long Answer

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

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

    至于WorkerRole,它还有一个RoleEntryPoint,但这是你的应用程序的主要入口点 . 在这种情况下,您可以在Visual Studio中创建一个新的Windows服务项目,并重用相同的逻辑 . 无论您在“运行”功能中添加了什么代码,您都可以转移到共享DLL,可以从WorkerRole或Windows服务访问该DLL .

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

    队列 - > MSMQ

    Blob - >文件系统

    SQL数据库 - > SQL Server

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

相关问题