2015-07-10 67 views
0

是否可以将自定义.NET模块部署到我自己的“App Service Plan”(运行我的Azure Web Apps的计算机)?Azure Web Apps(以前的网站):自定义IIS模块?

下面的问题让我想到了这个问题:我正在考虑做一些奇特的缓存来加速Web应用程序。我想到的缓存逻辑将在进行中,但缓存的数据量相当大,建立起来速度很慢。由于在发出任何请求之前必须进行构建,因此每次应用程序池回收后,我的web应用程序都需要很长的热身时间。

缓存代码本身很少会被更新,因此将这部分分解到IIS模块中可能是有利的,因为应用程序池的回收会将缓存的数据留在内存中。

但是,我强烈怀疑这对于Azure Web应用程序来说是不可能的 - 但我认为谨慎的做法是让社区确认。

回答

0

一般来说,如果你想有一个缓存,你就可以存储高速缓存数据的更好的地方,比如在Redis cache甚至在Azure Table中存储(这是真的fast如果你只是使用主键查找数据)。

哎呀,你甚至可以在本地磁盘上存储缓存文件。

由于各种原因,包括操作系统更新,Azure Web App升级等,Azure Web Apps可以在任何时间点移动到另一台机器。当发生这种情况时,您将丢失存储在内存中的任何缓存,这意味着你需要重新生成一切。

如果生成缓存需要一段时间并会阻止用户,那么您可能不想访问内存中的缓存路由。

+0

我想要的不仅仅是一个简单的键值缓存,所以它可能不会是redis或表存储。但是,为了降低热身成本,可能需要进行非处理(事实上是机器外)。 – John

1

绝对有可能创建自定义的IIS模块并将它们与您的单个Web应用程序一起部署。您可以将该模块与您的Web应用程序代码(即/ bin目录中的DLL文件)捆绑在一起,并将其配置到应用程序的web.config中。更多的信息在这里:https://msdn.microsoft.com/en-us/library/vstudio/ms227673(v=vs.100).aspx

当然,你需要做这个捆绑所有你的个人网络应用程序。在你的问题中,你特别提到了应用程序服务计划,并且没有一种方法可以独立于你的Web应用程序自动包含和注册它们。

+0

我相信模块可能不会帮助我。看起来,这些应用程序总是针对相应应用程序池中的特定Web应用程序运行。我正在寻找的东西不会像web应用程序的应用程序池重新启动(或至少不会经常)。 – John