[英]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.