避免供应商锁定:为Windows Azure编写的代码是否完全可移植到自托管IIS/ASP.NET?

避免供应商锁定:为Windows Azure编写的代码是否完全可移植到自托管IIS/ASP.NET?,azure,portability,cloud-hosting,paas,iaas,Azure,Portability,Cloud Hosting,Paas,Iaas,背景 我刚刚开始使用一种新的web开发产品,我打算在云中托管该产品,并正在权衡我对云提供商的选择 我非常喜欢使用Azure这样的平台即服务解决方案,因为我的服务器管理技能远不如我的开发技能那么强大。因此,只关注应用程序和外包问题(如备份/负载平衡等)的能力对我很有吸引力 然而,我也担心供应商锁定。我希望我的应用程序的利润相当微薄,需要仔细关注成本控制。如果我选择像Azure这样的PaaS解决方案,而微软决定大幅提高价格,我希望能够将我的业务交给更便宜的提供商 我做ASP.NET开发已经很多年了,

背景
我刚刚开始使用一种新的web开发产品,我打算在云中托管该产品,并正在权衡我对云提供商的选择

我非常喜欢使用Azure这样的平台即服务解决方案,因为我的服务器管理技能远不如我的开发技能那么强大。因此,只关注应用程序和外包问题(如备份/负载平衡等)的能力对我很有吸引力

然而,我也担心供应商锁定。我希望我的应用程序的利润相当微薄,需要仔细关注成本控制。如果我选择像Azure这样的PaaS解决方案,而微软决定大幅提高价格,我希望能够将我的业务交给更便宜的提供商

我做ASP.NET开发已经很多年了,但我刚刚开始了解Azure。我知道Azure应用程序是使用与普通ASP.NET应用程序相同的工具/语言编写的,但我不知道它们是否有足够的差异,如果不进行大量修改,同一应用程序将无法在常规IIS/ASP.NET安装上运行

问题
Azure应用程序是否通常可移植到IIS/ASP.NET的非云版本,使您能够轻松地将其移动到众多IaaS/HaaS提供商之一,而无需进行重大手术

我明白,显然我会失去PaaS的优势,比如内置负载平衡和其他额外功能。我主要关心的是Azure是否强制您以非常特定于Azure的方式编写web应用程序,这需要重新考虑才能在Microsoft的云之外工作。

否,因为“网站”Microsoft目前没有强制您以非常特定于Azure的方式编写代码-web角色本质上只是一个网站

因此,如果您坚持只使用web角色,并且只使用SQLAzure进行存储,那么当前您的Azure代码将是非常可移植的

但是,如果您开始包括: -工人角色 -表、blob或队列存储 -高级Azure配置 -Azure诊断 -Azure管理(例如用于扩展或部署)

然后,您将开始包括Azure特定的功能

另外,作为个人观点,我不认为微软“抬高”价格是个问题,但竞争对手提供更便宜或功能更强大的解决方案可能是个问题。

不,对于“网站”微软目前并没有强迫你以非常特定于Azure的方式编写代码——web角色本质上只是一个网站

因此,如果您坚持只使用web角色,并且只使用SQLAzure进行存储,那么当前您的Azure代码将是非常可移植的

但是,如果您开始包括: -工人角色 -表、blob或队列存储 -高级Azure配置 -Azure诊断 -Azure管理(例如用于扩展或部署)

然后,您将开始包括Azure特定的功能

此外,作为个人观点,我不认为微软“抬高”价格可能是问题所在,但竞争对手提供更便宜或功能更强大的解决方案可能是一个问题。

不知何故

正如斯图尔所指出的,如果你开始包括特定的Azure技术,你将有点依赖它

而且还有方法。例如,当您为Azure构建应用程序时,您也开始使用一些在“内部部署”中没有意义的方法,例如带有共享签名的blob

如果你试图设计一个非常便携的应用程序,你会错过它的高级功能,所以我所做的就是将模块中的所有东西分离开来,这样模块就可以很容易地重新排列、替换或删除,正如我认为BrentDaCodeMonkey也指出的那样。

不知怎么回事

正如斯图尔所指出的,如果你开始包括特定的Azure技术,你将有点依赖它

而且还有方法。例如,当您为Azure构建应用程序时,您也开始使用一些在“内部部署”中没有意义的方法,例如带有共享签名的blob


如果你试图设计一个非常便携的应用程序,你会错过它的高级功能,所以我所做的就是把所有的东西都分离在模块中,这样模块就可以很容易地重新排列、替换或删除,正如我认为BrentDaCodeMonkey也指出的那样。

在你决定使用的每一个系统中都会发现锁定,具体来说,如果您谈论在线服务将采用的PaaS。与其他供应商相比,这是一个级别问题。在我对云市场(包括IaaS和PaaS)进行的深入研究中(在两篇不同的帖子中,我发现Azure拥有最高级别的PaaS供应商锁定,这与它的好处并不完全一致。欢迎阅读我在《云锁定》(第2部分):PaaS的伟大锁定-


我很高兴知道这是否对您有所帮助。Ofir。

锁定将在您决定使用的每个系统中找到,特别是如果您谈论将用于在线服务的PaaS。与其他供应商相比,这是一个级别问题。在我对云市场(包括IaaS和PaaS)进行的深入研究中(在两篇不同的帖子中,我发现Azure拥有最高级别的PaaS供应商锁定,这与它的好处并不完全一致。欢迎阅读我的《云锁定》(第2部分):PaaS的伟大锁定-


我很高兴知道这是否对您有所帮助。Ofir。

我只想补充一点,即正确的架构,您可以创建一个能够轻松支持多种部署场景的应用程序(比如Azure和onPrem)。我通常建议,如果人们正在考虑这样做,他们会非常依赖于提供者模式,这样任何依赖于环境的部分都可以很容易地从核心应用程序中抽象出来。重点是什么