Asp.net 将Azure应用程序部署到Windows服务器

Asp.net 将Azure应用程序部署到Windows服务器,asp.net,deployment,azure,Asp.net,Deployment,Azure,我们正准备为学校创建一个以网络为中心的平台,并计划在Azure中托管它。然而,公立学校有某些限制,阻止他们公开访问互联网,这意味着基于Azure的系统在那里无法工作 是否可以将同一项目部署到本地服务器和Azure云而不破坏我们的代码库?这取决于您在解决方案中使用Azure的哪些方面。如果您有一个manilla ASP.NET应用程序,并且没有使用诸如AppFabric之类的Azure依赖项或诸如blob存储之类的任何Azure SDK,那么您将能够部署到IIS的标准实例 如果您使用的是Azure

我们正准备为学校创建一个以网络为中心的平台,并计划在Azure中托管它。然而,公立学校有某些限制,阻止他们公开访问互联网,这意味着基于Azure的系统在那里无法工作


是否可以将同一项目部署到本地服务器和Azure云而不破坏我们的代码库?

这取决于您在解决方案中使用Azure的哪些方面。如果您有一个manilla ASP.NET应用程序,并且没有使用诸如AppFabric之类的Azure依赖项或诸如blob存储之类的任何Azure SDK,那么您将能够部署到IIS的标准实例


如果您使用的是Azure依赖项,我会尽最大努力在您的代码库中分离这些依赖项,按照惯例抽象任何依赖项。然后,您可以根据配置更改切换为不使用它们,并在部署到Windows时恢复为本地或存根替代方案。这与运行CI/构建时的情况相同

这实际上取决于您的应用程序在做什么。Azure部署项目(.ccproj项目)和相关的.cspkg包不适用于Windows服务器部署


如果您的应用程序使用WindowsAzure特定的功能(例如,表存储),那么您将不得不以某种方式在本地处理这些功能。如果您希望有一个既在本地运行又在Windows Azure上运行的代码库,那么一个选择可能是采用依赖项注入方法,该方法可以基于目标部署注入功能的正确实现。

我在客户机上遇到过这种现实情况。他们的客户希望继续使用安装在自己服务器上的产品。同时,他们有新的客户,他们希望将他们的应用程序作为服务出租,并使用现收现付模式

这是否意味着有两个代码库?不,但这意味着您必须愿意在开发抽象和控制反转方面付出额外的努力

一般来说,我会这样处理这个问题:

  • 针对Windows Azure的设计,意味着使用适用于Windows Azure SDK的API
  • 在真正的WindowsAzure SDK和您的代码之间添加一个抽象层
  • 为本地安装的Windows Azure依赖项提供替代实现
还有

  • 使用已经存在的代码,如。这个OSS项目包含这样一个抽象层的开始,以及其他希望有用的WindowsAzure代码

别忘了玩得开心!;~)

这就是我要说的。如果Azure与您的应用程序高度集成,例如,表存储是您的主要存储机制,而不是SQL Azure,那么这可能会很困难。但如果你只是把它撒在几个地方,就不难把它抽象出来。有这么多好的答案可供选择!StackOverflow处于最佳状态:)