初步需求:我们有一个合作伙伴为我们提供一些数据,合作伙伴在互联网上已部署好了一台服务器,服务器对我们提供相应的Web Service服务,我们也只能通过Web Service来获取数据。当我们做完这个系统以后,需要把我们自己的系统放在虚拟主机上运行,然后我们的客户通过互联网访问我们的系统。
我们是中小企业,资金有限,老总不愿投资也不关心此系统,只是一句说话推下来我必须给包了。惨啊
问题:由于特殊原因,我们的系统必须也只能使用虚拟主机来运行,而虚拟主机环境是运行.net3.5 提供300M网站空间和可怜的20M数据库,IIS并发150。在我们公司订购的用户通过我们这个网站提供信息查询服务。同时访问我们系统的在200~300人左右,最高不超过500.
我们的系统是这样的,根据用户在我们这订购的信息,我们再通过Web Service从合作伙伴服务器获取数据,放在我们系统(虚拟主机),但现在问题是我获取的数据放在网站空间(生成文件),还是放在数据库好呢,由于需要访问大量Web Service,所以我们定在每日00:30后开始访问互联网服务器更新数据。
一个用户的数据量包括几百条产品信息,几百到几千条销售信息。用户所有这些数据都是累加的,用户每日的数据都不一样。
在虚拟主机条件不变的情况下,如何才能构建一个好的平台为用户提供服务呢?为每个用户生成静态网页可以减低IIS的需求吗,数据生成静态HTML保存在网站空间还是数据库呢,毕竟虚拟主机上的网站空间比数据库便宜。互联网用户数也不会有大变动,就是那些人了。
如确实必须不得不,只能申请增加数据库或网站空间。情况大概像下图描述
生成静态HTML肯定要好很多,不过如果你的用户需要动态查询,就比较麻烦。是不是可以每个用户生成一个静态HTML,将数据也放到这个HTML中,然后通过Javascript在用户的本机进行查询,这样用户每天只需要加载一次HTML页面就可以了,之后对IIS的压力很小,因为浏览器对静态页面都有缓存。
(1) Web Service 可以 缓存 (Cache),若不常更新内容的 WS 数据,可用内存替代访问数据库。
(2) Web Service 可以用异步 (Asynchronous) 调用,只要小改一点代码即可。用户在调用此 WS 时,浏览器不会被锁住等待 WS 服务器响应。
(3) 改用 WCF。为了解决 XML 和传统 Web Service 传输时的性能问题,WCF 可将 XML 用二进制的方式编码。
(4) 不要用虚拟主机。