在 ASP.NET 应用程序中存储单例实例的最佳实践

发布于 2024-10-09 22:22:45 字数 417 浏览 3 评论 0原文

如果我们有一个像 LoadBalancer 这样的单例类,并且每个 ASP.NET 应用程序需要一个实例,那么将它存储在哪里?

目前,我在 Global.asaxApplication_Start() 中使用 Application.Add("LoadBalancer", LoadBalancer.Instance)

此外,Application 对象是由 ASP.NET 创建的,并且每个应用程序根据工作负载有多个实例。我还可以在 Global.asax 中声明我的 LoadBalancerstatic 实例。

哪个是首选?还有更好的主意吗?

If we have a singleton class like LoadBalancer and need one instance per ASP.NET application, then where to store it ?

Currently I use Application.Add("LoadBalancer", LoadBalancer.Instance) in Application_Start() in Global.asax.

Also Application object is created by ASP.NET and there are multiple instances per application based on workload. Also I can declare a static instance of my LoadBalancer in Global.asax.

Which is preferred ? Any better idea ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2024-10-16 22:22:45

如果是单例为什么要存储在应用程序项中?当您从应用程序中的任何位置使用 LoadBalancer.Instance 时,它​​不应该返回相同的实例吗?

如果您的站点正在使用负载平衡或位于网络场中,则每个服务器都将拥有其 Application 对象和 LoadBalancer.Instance 的实例。

If it is a Singleton why do you want to store in Application items? Isn't it supposed to return the same instance when you use LoadBalancer.Instance from anywhere in the application?

In case your site is using load balancing or is ina web farm each server would have its instance of Application object and LoadBalancer.Instance.

む无字情书 2024-10-16 22:22:45

您不必在应用程序对象中存储单例对象。 Singleton 对象的标准实现仍然有效。 http://msdn.microsoft.com/en-us/library/ff650316.aspx

但是,如果您使用 Web Farm,情况就不同了,您应该将 Singleton 对象单独托管在不同的服务上,并且所有服务器都应该使用 Remoting 或 WCF 向该服务请求该对象。

You dont have to store a singleton object in Application object. Standard implementation of Singleton object holds good. http://msdn.microsoft.com/en-us/library/ff650316.aspx

But if you using a Web Farm its a different story, you should have the Singleton object hosted seperately on a different service and all the servers should request the object from that service using Remoting or WCF.

灼痛 2024-10-16 22:22:45

使用 IOC 容器,例如温莎城堡。温莎城堡的默认生活方式是单身。

http://www.castleproject.org/container/documentation/v21/usersguide /lifestyles.html

Use an IOC container like Castle Windsor. The default lifestyle in Castle Windsor is singleton.

http://www.castleproject.org/container/documentation/v21/usersguide/lifestyles.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文