日期:2014-05-18  浏览次数:20463 次

如何使以往部署过的Web应用程序定期自动进行更新?

比如说:

目前我们使用ASP.NET开发了一个Web应用程序

几个月之后,这个Web应用程序已经成功地为50家客户进行了部署

每次给客户部署,我都把本地Web应用程序做一次网站发布,然后远程连接到客户的服务器上,将页面及一堆DLL复制到客户计算机上,完成部署

几个月之后,我们的Web应用程序进行了一次关键更新,我需要之前的50家客户全部使用更新过的系统


问题:

我在做系统设计的时候,应该采用什么样的技术或架构,使客户可以自动连接到我们公司的服务器上,定期下载最新的程序,自动部署在客户的服务器上,并且不需要任何的手工干预??

注:系统是分层的,分为BLL、DAL、Framework等组件,每个组件都生成一个DLL


请各位有经验的朋友指点一下~~

十分感谢!


------解决方案--------------------
很简单,定期连接到你的固定IP上,拷贝那个你发布的文件夹,并覆盖用户服务器上的文件夹
复杂一点的也可以逐个检查DLL和其它文件的发布日期,来确定是否需要升级。
------解决方案--------------------
参考windows的更新方案
------解决方案--------------------
可以考虑在客户服务器端制作个Windows Service来定期检查你们服务器端的最新版程序,如发现最新的先停掉iis然后把所需更新的文件下载下来,然后开启iis.
------解决方案--------------------
数据库表和存储过程有更新,可以考虑用sql语句进行更新.
------解决方案--------------------
靠作业或者触发器可以实现 ??
不是很懂..
顶个 ..
------解决方案--------------------
一般是做一个小程序。去指定的ip获取最新版本,不相同就下载更新;
可是我觉得网站这么做好像还是会有问题的,毕竟没有这样的成熟方案
------解决方案--------------------
不就是自动在线升级嘛……
可以做在程序里,或另外做独立的升级程序,就如楼上诸位说的~
随便用什么方法把升级文件下载到客户端,然后覆盖,重启应用就是了……

不过,无论怎么做都会涉及到更新正在运行的程序文件的问题(包括升级程序的更新)~
可以用File.Move()把原文件重命名或直接移到备份文件夹,然后把升级文件复制到原文件夹,再重启程序就成了,
至于旧文件是留着备份恢复还是直接删除就看需求了。

File.Move()可以处理正在执行的文件,不过系统文件是不是也能这么替换我没试过~
系统文件的替换可以用API来处理,重启机器后应用。
------解决方案--------------------
看一下.NET里面的CLICKONCE,应该就问题解决了
------解决方案--------------------
楼主的的问题可能是以前没考虑好
应该有一个API来处理(唯一的标识,要处理好。很多防火墙把这个屏蔽)
一般来说,软件能够实现自动的找到内容并更新
网站这方面的解决放案支持
定期连接到你的固定IP上,拷贝那个你发布的文件夹,并覆盖用户服务器上的文件夹 
复杂一点的也可以逐个检查DLL和其它文件的发布日期,来确定是否需要升级。
因为你新的网站编写成功后,原来的Dll变了。你把这些新生成的Dll文件
COPY到原来的文件夹下面去,同时,还有一个需要注意的是:WebConfig的配置
这样原来你使用了分层结构的,刷新页面就能够访问了(分层结构的最直接体现!)