小编Roh*_*and的帖子

使用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
查看次数

CultureInfo值在同一文化的应用程序之间有所不同.这是一个错误吗?

我在Windows 8开发盒上发生了一个奇怪的问题.在比较运行Kentico的ASP .NET应用程序和控制台应用程序(均在.NET 4.0上运行)时,以下代码行为NumberFormat.NumberDecimalSeparator生成两个不同的值.

var culture = new System.Globalization.CultureInfo("en-ZA");
var separator = culture.NumberFormat.NumberDecimalSeparator;
Run Code Online (Sandbox Code Playgroud)

分离器的价值:

  1. Kentico应用程序:","< - 逗号
  2. 控制台应用程序:"." < - 期间

我的区域设置的正确输出是句点.

这怎么可能?当我第一次选择十进制数字的格式化问题时,我认为它可能是一个Kentico错误,但是此测试表明不是这样.对于特定区域设置,CultureInfo的新实例如何返回跨应用程序不同的实例?

.net asp.net

3
推荐指数
1
解决办法
1836
查看次数

标签 统计

asp.net ×2

.net ×1

appfabric ×1

asp.net-4.0 ×1

iis-7 ×1

windows-services ×1