起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1747|回复: 5

[分享]X3客户端运行原理

[复制链接]
发表于 2007-9-14 10:27:36 | 显示全部楼层 |阅读模式
[B]第一次运行[/B]
1.        客户端>>通过 http://服务器IP:端口号 访问服务器
2.        服务端<<返回相应的网页,网页中给出了X3X.OCX的guid和包含这个OCX的X3X.CAB文件地址、版本号等信息
3.        客户端>>根据地址下载X3X.CAB文件,解压缩出来X3X.OCX放到 windows\ Downloaded Program Files 目录下,并注册这个控件,执行下载UpdateVersion动作
4.        服务端<<返回client\ versions.xml文件给客户端
5.        客户端>>根据versions.xml文件,向服务端请求AutoUpdate.exe程序
6.        服务端<<返回需要的AutoUpdate.exe文件
7.        客户端>>把AutoUpdate.exe下载到%appdata% \Justep\X3Client目录下,执行AutoUpdate.exe程序,获取需要更新的文件列表
8.        服务端<<返回client\NewVersion\ update.xml文件
9.        客户端>>根据update.xml文件中的文件列表,向服务器请求每一个文件
10.        服务端<<根据客户端的请求,返回每一个需要的文件
11.        客户端>>服务器返回的每一个文件,解压缩到%appdata% \Justep\X3Client目录
12.        客户端>>执行dlcache.exe下载文件系统缓存
13.        客户端>>执行dlcache.exe下载组织机构缓存
14.        客户端>>执行 系统初始化 功能,显示登陆界面
回复

使用道具 举报

 楼主| 发表于 2007-9-14 10:30:23 | 显示全部楼层
[B]正常运行[/B]
正常运行时候,因为客户端已经有了需要的各种文件,每一个请求服务端文件的地方都会有版本的检查,只有版本有更新才会下载新的文件,如果没有更新就不需要下载了。
1.        X3X.OCX文件自身有版本号,和服务端的X3X.CAB中的文件版本号比较,只有服务端的版本号大才会下载
2.        AutoUpdate.exe文件通过计算得到一个哈希值,跟服务端返回的Versions.xml文件中的哈希值比较,只要不一致就会更新AutoUpdate.exe
3.        NewVersion目录的每一个文件,也是通过在客户端计算哈希值跟服务端返回的update.xml文件中的哈希值比较,只要不一致就会更新,如果update.xml文件中有但是客户端没有的文件,就会下载到客户端来。
4.        文件系统缓存和组织机构缓存都是分成节点信息(或者称目录信息)和流信息(文件内容)来下载的,每次当有目录信息的更新,都会完整的下载整个节点信息;
5.        流信息(文件内容)比较大,因此是根据网速下载的,如果整个流信息可以在5秒内下载完,那么就下载整个流信息;如果不能在5秒下载完,根据节点信息中的文件哈希值跟本地的节点信息比较,判断文件内容是否被改变,如果有更改则删除更改的文件内容,在用到时候只下载这个用到的文件内容。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-14 10:55:18 | 显示全部楼层
根据这个运行原理,很多错误就可以很容易排查出来了。
比如:IE提示错误“对象不支持此属性或方法”排查这个错误的过程就是
首先到windows\ Downloaded Program Files 目录下看是否有X3X.OCX文件,如果有说明跟控件版本有关了,比较一下本地ocx版本和服务端CAB中ocx文件的版本号
如果客户端没有这个ocx文件,可能是服务端没有X3X.CAB文件,用 http://服务器iP:端口号/x3/X3X.CAB 看是否可以显示这个文件的内容,如果可以说明服务器没有问题
再看看客户端IE的设置是否允许下载OCX控件
如果这个设置也是正确的,就要看看是否有流氓软件的插件了。


如果用http://服务器iP:端口号/x3/X3X.CAB 出错,就要看看在X3 Server\tomcat\Webapps\x3目录下是否有X3X.CAB文件了
如果有,就可以用 Telnet 服务器IP 端口号,看客户端是否可以连接服务器的指定端口

如果用 Telnet 服务器IP 端口号无法连接到这个端口,就可以在服务端执行 netstat -ano 看看服务端是否在监听这个端口了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-17 15:41:21 | 显示全部楼层
安装部署过程中,常用的工具
1.        检验端口是否被占用
netstat -ano
说明
a:显示所有连接和监听的端口
n:用ip地址的形式显示地址和端口
o:显示和连接相关的进程id。
用这个方法查出占用端口的进程id
Linux系统中,使用
netstat -anp
2.        检验SQL Server 2000是否打了SP3补丁
在SQL Server的客户端工具SQL Analyser中执行Select @@version
Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)中日期大于Dec 17 2002 14:22:05为打过sp3补丁的)
3.        检验客户端是否可以访问服务端的某个端口
telnet 服务器地址 端口号
C:\Documents and Settings\Administrator>telnet 127.0.0.1 1433
正在连接到127.0.0.1...不能打开到主机的连接, 在端口 1433: 连接失败
4.        检验是否可以访问到服务端的控件
http://服务器IP:端口号/x3/X3X.CAB
5.        检验是否连接到了正确的服务端
在X3 Server\Tomcat\Webapps\X3目录下放一个test.txt文件,然后在客户端的IE地址栏打 http://服务器IP:端口号/x3/test.txt 看是否可以得到test.txt文件(注意inux/Unix下是大小写区分的)
6.        获取本机IP地址
ipconfig /all
Linux下是ifconfig /all
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-17 15:41:55 | 显示全部楼层
[B]服务端常见错误[/B]
config.justep.xml文件中,IP地址用缺省的127.0.0.1,而不是真正的服务器IP地址
服务器打开了防火墙,客户端无法连接服务器
数据库服务器没有运行
数据库服务器的端口与配置文件中不一致
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-17 15:43:08 | 显示全部楼层
[B]客户端常见错误:[/B]
客户端IE设置不对,不能下载OCX控件
检查IE是否脱机浏览了
客户端使用代理服务器
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 18:06 , Processed in 0.039826 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表