有没办法写一个控制台程序定期更新网站中的静态对象?

vincent_utem 2009-03-29 03:44:09
写了一个底层的类库
namespace EGlobal
{
public static class Global
{
public static 自定义类1[] Array1 { get; set; }
public static 自定义类2[] Array2{ get; set; }
}
}

现在一个网站打算用Global这个静态类缓存一些数据,以提高网站的访问速度。同时又想写一个控制台程序来定期更新静态类中缓存的数据。请问我这样的想法是否正确?是否还有更好的办法解决定期静态类更新的问题?
...全文
174 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
popeyepower 2009-04-01
  • 打赏
  • 举报
回复
按照你的需求, 不需要写控制台程序.
可以声明一个静态类, 开一个线程来做这件事情.
jiejie526 2009-03-31
  • 打赏
  • 举报
回复
等结果中。。。。。
vincent_utem 2009-03-31
  • 打赏
  • 举报
回复
顶一下
活靶子哥哥 2009-03-31
  • 打赏
  • 举报
回复
使用Cache对象+依赖
honey52570 2009-03-31
  • 打赏
  • 举报
回复
搞的jb麻烦
MicroDeviser 2009-03-31
  • 打赏
  • 举报
回复
是啊两个不同的应用程序之间,变量怎么能相互访问呢,
如果你要定时操作,一样可以写在web 程序里啊,
vincent_utem 2009-03-31
  • 打赏
  • 举报
回复
哦,原来是这样啊!怪自己学艺不精,谢谢这位仁兄指点!
orain 2009-03-31
  • 打赏
  • 举报
回复
要定时更新变量,可以在 Global.asax 里做一个定时器,在 Application_Start 事件加载进去就可以了。其实,我觉得直接设置缓存到期时间是最方便的。
orain 2009-03-31
  • 打赏
  • 举报
回复
控制台应用程序和 Web 应用程序分属于两个不同的进程,怎么直接共享变量?它们连内存空间都不是一样的。
vincent_utem 2009-03-31
  • 打赏
  • 举报
回复
主要是想通过控制台程序来定期更新Global中的静态变量存储的数据


顶上去,希望有人能帮在下一个忙...
vincent_utem 2009-03-31
  • 打赏
  • 举报
回复
使用Cache对象+依赖,好像会有大小限制,原来也是这么想的,后来放弃这种做法。

因为这是网站的一个活动,大体情况如下:

1、有两台服务器专门做活动的WEB服务器;
2、数据是专门调用别人写好的webservice;

所以,想把一切变化不大的数据缓存在WEB服务器上,定期去更新。这样可以省去不少带宽,加快页面的访问速度。

我现在暂时用14楼 orain兄 的办法来解决,谢谢orain兄!不知还有更好的办法吗?
vincent_utem 2009-03-30
  • 打赏
  • 举报
回复
控制台中也引用了System.Web.Service;命名空间了
vincent_utem 2009-03-30
  • 打赏
  • 举报
回复
顺便再说一下,我把控制台中的代码,拷到WEB站点中执行(放在一个独立的页面程序执行.ashx),Global.Array1和Global.Array2中就有数据。控制台中不也是将数据保存到namespace EGlobal命名空间吗?为什么同样的代码放在WEB站点中,就可以了呢?放在控制台中就不行了?
vincent_utem 2009-03-30
  • 打赏
  • 举报
回复
我是这样设想的:
一、先写一个类库,只保存一些静态变量
namespace EGlobal
{
public static class Global
{
public static 类型1[] Array1 { get; set; }
public static 类型2[] Array2{ get; set; }
}
}

二、写一个控制台程序,服务器上定期更新一些数据

using EGlobal;
using EGlobal.Service; //webservice 接口

class Program
{
static void Main(string[] args)
{
EGlobal.Service service=new EGlobal.Service();
Global.Array1=service.方法1();
Global.Array2=service.方法2();
}
}

三、对外WEB站点 Temp.aspx.cs

using EGlobal;
using EGlobal.Service; //webservice 接口

public partial class Temp
{
protected void Page_Load(object sender, EventArgs e)
{
//调用Global.Array1
//调用Global.Array2
}
}



可是,运行控制台程序后,WEB站点中Global.Array1和Global.Array2都是为空,请问这是怎么一回事?我的设想错在哪?是哪里出了问题了?请各位大哥帮忙看看,之前可能说得不是很清楚,非常抱歉!

另外如果有更好的办法,也可以推荐一下,先谢谢了!!!
Jinglecat 2009-03-30
  • 打赏
  • 举报
回复
看不出来你这个所谓 底层类库 的意图,到底怎么个缓存法?
syb1045 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vincent_utem 的回复:]
顶上去!!!
[/Quote]
继续顶
vincent_utem 2009-03-30
  • 打赏
  • 举报
回复
顶上去!!!
jfd198512 2009-03-29
  • 打赏
  • 举报
回复
顶 LZ!! 学习~
java_renyusheng 2009-03-29
  • 打赏
  • 举报
回复
把数据写入文件,定期从更新文件的数据是否会好实现些

效率比你那个低些【仅供参考】
jlj84237485 2009-03-29
  • 打赏
  • 举报
回复
帮顶一下
加载更多回复(2)

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧