繁体   English   中英

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

[英]Deploy WCF Service with WebRole to non-Azure Hoster

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

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

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

非常感谢你的回答!

简单的答案

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

答案很长

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

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

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

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

队列 - > MSMQ

Blob - >文件系统

SQL数据库 - > SQL Server

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM