智能客户端中的缓存问题

buaawjh 2005-02-06 10:58:12
项目架构:
1--采用智能客户端的架构,结合.net Remoting技术
2--用户在客户端只需要部署一个MainForm程序,点击具体的菜单的时候,就可以从远程服务器上下载具体功能的窗体(Control形式),在客户端应用程序下也建有一个cache目录,如果版本和服务器上的一样,就不下载了。
3--每个窗体没有使用sn强签名

问题:
1--有新版本了,配置正确,用户的cache目录中的对应版本也正确
2--但是运行的时候,程序运行的还是旧的版本
3--在用户winnt\assembly\download\下有过去的所有版本
求问:
1--如何让程序一定运行最新的版本
2--如何清楚winnt\assembly\download\的缓存,不要用gacutil(用户那里没有这个工具)
最后:
谢谢每位关心这个问题的人,若解决了,我一定把方法贴上:)
...全文
219 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hitchr 2005-03-18
  • 打赏
  • 举报
回复
mark
nga96 2005-02-12
  • 打赏
  • 举报
回复
晕,不懂的
LoveCherry 2005-02-07
  • 打赏
  • 举报
回复
不错
buaawjh 2005-02-07
  • 打赏
  • 举报
回复
试验过了,Assembly Download Cache里的全部都被清了。
提醒继续关注的朋友,我的下载的版本是正确的,只是运行的时候不正确。
忘了说:我运行调用的方法是Assembly.Load("cache\....")
nga96 2005-02-07
  • 打赏
  • 举报
回复
UP
forrestsun 2005-02-06
  • 打赏
  • 举报
回复
如果没有请把你客户端调用时WEBSERVICE返回的XML信息贴出来,要不猜到明年也猜不出来啊
forrestsun 2005-02-06
  • 打赏
  • 举报
回复
如果你装SKYPE咱们可以语音聊我觉得你这写得太累了

用户名:stvb168
buaawjh 2005-02-06
  • 打赏
  • 举报
回复
各位请注意一下,我的模型中升级是没有问题的,只是运行的时候调用的assembly不对
JasonHeung 2005-02-06
  • 打赏
  • 举报
回复
还可以通过数据库里的相关字段,制定该升级包输入哪个(种)客户端。
我们的客户端应用是分部模式,也有数据库和多个终端,那么每一个客户端通过XML存放本地版本,启动时检查数据库自动判断是否进行升级。这样只有分部的一个客户端进行下载,就可以实现每个终端的升级。
另外还可以利用数据库字段设定强制升级或允许不升级也可兼容。以及利用可以指定某个升级包作废。
升级包的数据可以是更新型,不必要包含以前的升级数据。
还可以通过设定检查点使客户端在升级时的版本备份保留下来,用于恢复。非检查点的备份在确定正常时可以删除。
Oceanson 2005-02-06
  • 打赏
  • 举报
回复
不懂 但 示例与快速入门有个缓存的章节 也许基础了点 也许可以找到点思路
JasonHeung 2005-02-06
  • 打赏
  • 举报
回复
我市直接用升级包文件名表示版本,如2005020601.xxx表示2005年02月06日第一次升级。工作很正常!
JasonHeung 2005-02-06
  • 打赏
  • 举报
回复
我的做法是,将升级包转成二进制数据,放在数据库里。
客户端有一个下载模块使用NetRemoting将未下载过的新的升级数据包下载。然后启动一个专门用于升级解压的进程(升级前要检查版本和备份旧版本)。
yizhixiaozhu 2005-02-06
  • 打赏
  • 举报
回复
up
forrestsun 2005-02-06
  • 打赏
  • 举报
回复
你是WEBSERVICE做过生成吗?不是点重新生成而是生成,WEBSERVICE的版本号匹配吗?
客户端更新WEB引用了吗?
forrestsun 2005-02-06
  • 打赏
  • 举报
回复
我也正在做这方面的东西,我想先问一下你的智能更新采用的是什么技术,

还有就是你用GUI了吗,很多问题都会造成升级失败
yellowhwb 2005-02-06
  • 打赏
  • 举报
回复
关注,mark
jackie615 2005-02-06
  • 打赏
  • 举报
回复
关注
xiongchen 2005-02-06
  • 打赏
  • 举报
回复
关注这个问题
buaawjh 2005-02-06
  • 打赏
  • 举报
回复
找到答案了,简单的说就是删文件夹
参考网址
http://www.dotnet-magazin.de/itr/online_artikel/psecom,id,550,nodeid,31.html
还有一段代码:
using System;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
sealed class App
{
[DllImport("fusion.dll",CharSet=CharSet.Unicode,SetLastError=true)]
static extern int GetCachePath(int flags, [Out] StringBuilder path, ref int count);
static void Main() {
StringBuilder path = new StringBuilder();
int count = 260;
GetCachePath(4, path, ref count);
try {
Directory.Delete(path.ToString(), true);
}
catch(SystemException) {
// ignore
}
}
}
This unsupported API won't work for the next .NET Framework release...
buaawjh 2005-02-06
  • 打赏
  • 举报
回复
看到一篇法语文章,讲述如何通过API删除ADC的(Assembly Download Cache),消化完告诉大家,谢谢了!

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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