首先讲一下用到的技术:Remoting,Socket
  
   讲一下我系统启动时所做的工作:
1、为了防止重复打开此软件,首先在程序运行的时候检查进程是否有同名进程存在,如果没有则读INI配置文件,将用户名显示在文本框中。(系统要求登录,和QQ一样)
2、然后把所输入的用户名和密码存放在一变量中,传到下个窗体,在这个窗体中依次检查服务器端的程序有没有运行,FTP服务器是否连得上(用于下载更新),验证用户的合法性,下载用户所需要的XML文件(每个文件只有5K左右,一般只下4个文件),取用户ID,取用户的MAC地址并更新数据库,检查用户当前的版本号,就分为这几步。问题一:在系统配置为内存256,CPU:赛扬2.4G,系统:WindowsXP framework1.1的情况下,开机第一次启动准确的说需要10秒钟。第二次以后只需小于3秒。问题二:winform在启动的时候,首先会检查或执行什么?(我认为是先检查有没有安装framework,然后再检查EXE相关的DLL,所以会开机运行这么慢)。问题三:这些步骤全部成功后,才会进入主窗体,在这段时间里,这段时间的运行以上面的配置标准需要花掉30秒的时间,因机器配置不同,运行的时间也不同。不知道是机器的问题还是程序的问题,我512内存在南京运行只需10秒,而另一台512内存在上海运行也需要10秒,而在北京运行则需要30秒。
不知道是我程序的问题还是机器或者网络问题,(所有机器都运行在中国电信网络上)
请大家谈谈想法,哪里需要改进,解决不解决都无所谓。

解决方案 »

  1.   

    说明一下:
    1、检查服务器端的程序有没有运行(用Remoting获取服务端的远程对象返回的值,如果有值则说明服务端已运行)
    2、FTP服务器是否连得上(用于下载更新,Socket连接FTP下载)
    3、验证用户的合法性(把用户名和密码传入服务器端Remoting,服务端需要用到用户名)
    4、下载用户所需要的XML文件(每个文件只有5K左右,一般只下4个文件,Socket连接FTP下载)
    5、取用户ID(根据用户名取得用户ID,再次查询数据库)
    6、取用户的MAC地址并更新数据库.
    7、检查用户当前的版本号(Remtoing取得服务器的版本号,与客户端版做比较)
      

  2.   

    1.第一次启动时要编译成本地机器码,所以当然会慢些。2.你可以看一下《.NET框架程序设计》这本书。并且搜索一下PE结构的相关知识。3."这些步骤全部成功后,才会进入主窗体"这些时间算在一起没什么意义,你一件一件的说,比如说打开要多久,登陆要多久,登陆时间若比较久可能是服务器的问题。
      

  3.   

    在有防火墙的情况下,第一步:检查服务器端的程序有没有运行用了8秒
    第四步:下载用户所需要的XML文件,用了30秒。其它用的很少。总计时:42秒。
    这种速度真是让人受不了了。
      

  4.   

    我记得Winform 程序和ASP.NET 程序的运行机制差不多 如果是这样的话就好解释了
      

  5.   

    1.依次检查服务器端的程序有没有运行,
    2.FTP服务器是否连得上(用于下载更新),
    3.验证用户的合法性,
    4.下载用户所需要的XML文件(每个文件只有5K左右,一般只下4个文件),如果真的是搂主说得依次的话,不论你交换的数据再小,多次的网络连接本身的开销也是非常大的,是不是考虑,将dlls哈希后拿值去服务器验证版本是否最新,xml文件(估计是联系人?)也一样处理,再加上用户,密码对(或使用本地加密后的串),mac一起发给服务器,尽量减少网络交互