标签: appfabric

使用StartMode ="AlwaysRunning"在ASP .NET 4上运行Windows服务类型应用程序的想法

通常我会考虑编写Windows服务来管理不适合托管在Web应用程序中的任务.这些类型的任务通常是长时间运行的进程或计划任务.虽然这通常是这些类型任务的主要方法,但人们已经开始研究在Web应用程序中运行这些后台进程的方法,方法是在Global.asax公开的Application_Start事件中启动许多线程.这种方法的问题一直是,如果你的IIS工作进程死了,那么你的后台线程也会被杀死(实际上你的'Windows服务'会被停止,直到收到下一个请求).

ASP .NET 4.0提供了解决此问题的方法.您现在可以将StartMode设置为'AlwaysRunning',如Scott Gu 在此博客文章中所述.某处在这个帖子上的评论,有人问一个有关IIS托管的Windows服务类型的任务,因为新的功能,保证了工作进程始终运行的可行性问题.斯科特提到它肯定会支持这种情况.除此之外,最近推出的AppFabric意味着Microsoft本身正在提供简单的钩子来托管和监控Web应用程序中的WCF和WF服务.

对于我们这些曾经编写Windows服务来支持我们的网络应用程序的人来说,这意味着什么?我们应该采用这种模式吗?有什么陷阱?据我所知,在Web应用程序中托管"Windows服务"流程有很多好处,最有用的是易于部署.此外,我们实际上可以开始为我们的服务开发简单的用户界面,这些界面提供有关运行时发生的事情的信息.

如果我不得不走这条路,我认为我不会在面向客户的Web应用程序中托管我的"Windows服务"类型功能.我可能会开发一个新的Web应用程序项目(很像我将在Windows服务上下文中),它将托管我的长时间运行/计划任务进程.我想这个原因很少.

  1. 安全.UI可能有不同的安全模型,显示有关正在运行的后台进程的信息.除了操作团队之外,我不想将此UI公开给任何其他人.此外,Web应用程序可以作为具有提升权限集的不同用户运行.
  2. 维护.如果能够在托管后台进程的应用程序中部署更改而不影响使用前端网站的用户,那将是非常棒的.
  3. 表现.将应用程序与主站点处理用户请求分开意味着后台线程不会降低IIS处理传入请求队列的能力.此外,如果需要,可以将处理后台任务的应用程序部署到单独的服务器.

我会听到关于这种做法是否我应该使用Windows服务来坚持你的想法很感兴趣.我很想尝试这种新方法.

asp.net iis-7 windows-services asp.net-4.0 appfabric

17
推荐指数
1
解决办法
1799
查看次数

设置AppFabric缓存可用的内存量

如何设置Windows Server AppFabric缓存服务可用的内存量?

我们在托管网站的同一台服务器上运行AppFabric Cache,我希望能够控制缓存消耗多少RAM.

.net asp.net configuration caching appfabric

16
推荐指数
1
解决办法
3914
查看次数

Repository应该返回IEnumerable <T>,IQueryable <T>还是List <T>?

我希望尽可能灵活地使我的应用程序灵活,但不要让我的界面过于具体,从而陷入困境.

存储库的最佳对象类型是什么?IEnumerable,IQueryable还是List?

我正在考虑使用的技术是

  • Azure App Fabric缓存

  • 实体框架4.1

  • 可能是Windows Server AppFabric

repository appfabric appfabric-beta-2 azure-appfabric entity-framework-4.1

16
推荐指数
3
解决办法
4712
查看次数

Azure AppFabric和Windows Server AppFabric之间有什么区别

似乎有两个名称相似的产品,但不是我所期望的.我认为Azure AppFabric是Windows Server AppFabric的"云"版本,但它们之间似乎没有太多共同之处.

我错过了更大的图片吗?

cloud wcf azure appfabric

15
推荐指数
1
解决办法
3375
查看次数

appfabric缓存清除所有对象

是否有建议的方法来清除DataCache中的所有对象?

我可以使用DataCache.GetObjectsByAllTags方法,但这需要一个区域,我无法使用,因为我需要在多个缓存主机之间共享对象.

c# appfabric

12
推荐指数
2
解决办法
8920
查看次数

AppFabric for Windows Server仍在开发中吗?

根据您的目标是Windows Azure或Windows Server,在发现缓存API严重不同之后,我担心微软不会继续为Windows Server开发AppFabric.有谁知道AppFabric for Windows Server是否仍然受支持/开发?

azure appfabric appfabric-cache

12
推荐指数
3
解决办法
1848
查看次数

自动启动AppFabric Cache Cluster

有没有办法在系统启动时自动启动缓存集群?我在远程PC上运行它,当它重新启动时,我必须远程进入它并使用Start-CacheCluster从Powershell重新启动缓存集群,并且不希望这样做.

谢谢,

詹姆士

appfabric

11
推荐指数
2
解决办法
8976
查看次数

AppFabric CreateRoutingClient错误

我们遇到AppFabric问题,导致出现以下错误:

Exception type: ArgumentException 
Exception message: An item with the same key has already been added.
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
    at Microsoft.ApplicationServer.Caching.DataCacheFactory.CreateRoutingClient(String cacheName, NamedCacheConfiguration config)
    at Microsoft.ApplicationServer.Caching.DataCacheFactory.CreateNewCacheClient(DataCacheDeploymentMode mode, String cacheName, NamedCacheConfiguration config, IClientChannel channel)
    at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName)
    at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetDefaultCache()
    ... our code where we are attempting to retrieve a cache item from the default cache by its key
Run Code Online (Sandbox Code Playgroud)

这个错误在我们的测试环境中很少发生(我们没有找到按需重现问题的方案),但似乎总是在每次部署之后在我们的生产环境中发生.我们的部署是自动化的,我们已经验证了部署到各种环境的步骤是相同的​​.

我们针对给定环境的服务器设置如下:

  • Server1 - 托管我们的.net网站,是我们的AppFabric 1.1服务器
  • Server2 - 托管我们的.net网站

这些服务器是负载平衡的.已在两个应用程序上启用AppFabric本地缓存.我们的测试和生产服务器设置相同.我们知道将AppFabric放在专用服务器上会更好,但不要认为这会导致/解决此问题.

我们对此问题感到困惑,因为我们在网上其他地方没有发现任何提及它,因为堆栈跟踪似乎表明这是AppFabric本身的一个问题.异常提到插入内容,但是当发生这种情况时我们正在尝试从DataCacheFactory获取默认缓存,以便我们可以从中检索项目.那么,这个错误意味着什么以及我们如何解决它?

更新

这是我用来DataCacheFactory从缓存中创建和提取数据的代码:

private static readonly Lazy<DataCacheFactory> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net appfabric

11
推荐指数
1
解决办法
345
查看次数

AppFabric ErrorCode <ERRCA0017> <ES0006>:

我在服务器上安装了AppFabric.我创建了一台计算机的集群.我还创建了一个名为"Gagan"的缓存.按顺序使用以下命令

Use-CacheCluster -Provider xml -ConnectionString\NB-GJANJUA\Cache Start-CacheCluster

结果是缓存服务已启动并运行..这么好.

然后我设置我的web.config文件,如下所示

<?xml version="1.0"?>
<configuration>
    <configSections>
    <section name="dataCacheClient"
type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
        Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=31bf3856ad364e35"
allowLocation="true"
allowDefinition="Everywhere"/>   

</configSections>

<!-- cache client -->
<dataCacheClient>
<!-- cache host(s) -->

<hosts>
  <host
     name="NB-GJANJUA.com"
     cachePort="22233"/>
</hosts>
</dataCacheClient>

<system.web>    

<compilation debug="true" targetFramework="4.0" >
    <assemblies>
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      <add assembly="Microsoft.ApplicationServer.Caching.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add assembly="Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </assemblies>
</compilation>

<sessionState mode="Custom" customProvider="SessionStore" cookieless="true">
  <providers> …
Run Code Online (Sandbox Code Playgroud)

appfabric appfabric-cache

10
推荐指数
3
解决办法
2万
查看次数

具有单个Web服务器的InProc与AppFabric会话状态

我有一个ASP.Net MVC应用程序,它大量使用session来保存状态(包括大数据集合).目前,它托管在一个Web服务器上.会话设置为InProc的默认值.

出现了一个问题,即当许多用户在线时,应用程序会冻结某些用户.我想这是因为InProc会话不能很好地扩展,并且该进程只有很多可用内存.(如果内存需求超过可用内存会发生什么 - 它是否会换出磁盘?)

我有几个解决方案可以帮助实现可伸缩性.(a)Sql server会话状态; (b)配置会话状态以使用AppFabric缓存.第一个选项看起来是一个很好的解决方案,除了它会影响性能并要求存储的项目可序列化.

如何在单个Web服务器也用作缓存主机的环境中配置会话状态以使用AppFabric缓存(也称为Velocity)?在单一服务器环境中,这与InProc有何不同?这会提供比InProc更多的可扩展性和可用内存,还是基本上会达到相同的约束?

session-state inproc appfabric appfabric-cache

9
推荐指数
1
解决办法
3160
查看次数