2011-08-23 97 views
0

我尝试创建能够在Windows Azure云中运行的应用程序,但也可以在本地服务器上运行。在Windows Azure和本地服务器上运行ASP.NET应用程序

该应用程序的大部分部分已经可以正常工作。但有一些功能我不知道如何让它们在两者上运行,例如:

用户可以上传附件。在Azure中,文件存储在Windows Azure存储中,在本地服务器上它们应该存储在本地文件夹中。

我不知道如何管理这个。

+0

我也想知道是否有办法有两个web.config文件(一个用于Azure的模式,一个用于本地模式),所以我不必编辑配置文件时,我创建一个包Azure或IIS。 – Gesh

+0

您可以使用MSBuild任务,或者您可以为此开发的自定义任务。也就是说,在构建后,您可以定义自定义目标并运行它,以便预编译的Web将具有合适的web.config。如果您需要更多信息,请在此注释,我会更新我的问题(我知道您接受了它,但我可以为您加强;)! –

回答

2

我想建议您了解控制反转,因为您可以根据选定的主机平台切换文件存储和其他内容。

例如,你有一个接口称为IFileStorage有这样的方法(及以上):

  • 创建
  • 追加
  • 删除
  • ...

IFileStorage的两种实现方式:

  • WinAzureFileStorage
  • DefaultFileStorage

在这一天结束时,你会做的是:

IFileStorage storage = DependencyManager.Resolve<IFileStorage>(); 
storage.Create("SomeFile.txt"); 
storage.Append("SomeFile.txt", "Hello world"); 

和控制配置的某些反转将映射此时,相应的IFileStorage实现取决于托管平台。

如果您想了解更多关于反转控制的:

最后,如果你认为这是正确的方式,检查温莎城堡,这是一个伟大的,控制(和其他事物).NET上的稳定的反转框架:

+0

听起来像是一种可能的解决方案。但我想知道如何确定应用程序是否在Azure上运行。 – Gesh

+0

您不需要弄清楚:Azure部署已经配置了可以与Azure存储配合使用的IFileStorage实现,等等。这只是一个配置的事情。 –

+0

+1我在项目中使用了这种确切的方法,它完美地工作(除了它使用MEF) –

相关问题