公司现在开发的产品是基于webservice(delphi(ui) + tomcat + xfire + spring + hibernate + db2)
1.由于delphi的客户端要调用java的webservice服务,在调用服务前需要进行身份的验证,这个验证过程我们现在采用的是模拟session的办法,即用数据库表存储登录信息并返回一个登记号,由于每次调用都需要校验,在业务访问量大时,会影响到服务器的响应速度,而关于xfire的介绍里有没有找到类似于.Net里的SetCookie类似的方法,不知道大家都是如何处理的。
2.业务同步问题,公司现在的业务处理,本地与远程共同维护业务记录,这就有可能造成本地与远程的数据不同步的问题,如远程调用webservice成功,本地失败(可以通过业务的手段去弥补),大家在开发这种分布式应用时,是如何处理的呢?前提,我们的应用是要求实时的,不能采用那种定时的同步的方法希望大家讨论一下!!

解决方案 »

  1.   

    你公司的产品与我正在规划的产品结构基本一样,我的是: delphi(ui) + tomcat + xfire + jboss + sql server,也计划使用WebService连接,希望与你多多交流。关于第一个问题,我的做法分两步:1. 在验证时,提供Account, Password, 随机值(此值需要保存,后会用到),NetMac, IP等于App, App返回一个依NetMac与LoginTime生成的SessionID,同时在数据表中予以记录供日后追查;2. 在Client做了一个“心跳”定时器,定时向后台刷新SessionID的存活时间,若后台返回false, 则表示该前台SessionID失效,此Session自动失效,Client自动强制退出。 --此步是为了防止Client不正常退出销毁SessionID,后台可以自动关闭Session或手工踢出该Session。3. 每次在请求时,均提交一个SessionID与LoginTime于WebService,若前台提供的SessionID与随机值符合规则,则视SessionID为有效,并提供服务,否则拒绝服务。关于第二个问题,不清楚你的作业方式,是有做本地数据库还是其它?请详细说明一下。
      

  2.   

    打错了一处字:"均提交一个SessionID与LoginTime于WebService" 应为 "均提交一个SessionID与随机值于WebService",当然,你可以使用LoginTime做随机值,我是使用随机生成的Guid
      

  3.   

    "依NetMac与LoginTime生成的SessionID" 应为 "依Account与随机值生成的SessionID", 还在感冒中,头脑有些浑浑的,抱歉!
      

  4.   

    "依NetMac与LoginTime生成的SessionID" 更正 "依随机值生成的SessionID", 感冒中,头脑还不清醒,抱歉!
      

  5.   

    欢迎讨论,
    1. 在验证时,提供Account, Password, 随机值(此值需要保存,后会用到),NetMac, IP等于App, App返回一个依NetMac与LoginTime生成的SessionID,同时在数据表中予以记录供日后追查; ======================
    我的方式与你相似,采用每一个用户名对应一个SESSIONID的方式,下一次登录后会将上一次的SESSIONID置为无效;
    这样的试有一个问题,就是一个用户在两台机器上登录,先登录的用户的SESSIONID会失效!!!而如果要让后登录的用户
    不能登录到系统中,要时刻监听客户端的连接状态或是由客户端来不断确认(与你的2里面提到的方法类似),但如果客户端
    出现异常时,无法再执行登录状态确认过程,可能就比较麻烦(采用你提到的登录时间办法应该可以解决)。
    2.关于数据验证
    我的架构中,本地保存业务数据(供离线、快速查询使用),这样就有可能在网络、数据库、计算机等出现异常的情况导致客户端与中心端的数据
    不一致
      

  6.   

    to MartinWang, 聊个离题的事:
    用delphi的vcl如TStringList用惯了,现改用Java的ArrayList等不习惯,而且也不便于团队中其它不熟悉的人员转移到Java中。
    我想在java中做一套类似于delphi的vcl, 比如常用的Variant, TStringList, TADOConneciton, TADOQuery等, 有没有兴趣一起做?
      

  7.   

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++力争成为中国最大的架构师群联盟,架构师1群:43545919已满,2群:59048426的招募也近尾声,
    现3群:17303696正式 开放,各群内容基本相同,高手也经过群主进行了调整,希望大家不必重复加入!
    培训经过筛选才会进行,请大家不必 着急!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
    google 、
    eBay、
    Youtube、
    淘宝等
    ......
    技术文章包括:
    《自己动手写操作系统》
    《搜索引擎-原理、技术与系统》
    《企业应用架构模式》
    ......
    重要的RUP实例
    设计模式精解
    ......
    资料陆续上传中++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      

  8.   

    我现在正在使用XFire开发WebService服务端和客户端SDK,开发过程中也用Axis和Axis2分别做了一套WebService服务端和客户端;
    总结来看,确实如网友所说,XFire使用起来确实比Axis?方便得多,也快得多.
    欢迎来交流WebService技术,msn:[email protected]