日期:2014-05-17  浏览次数:20690 次

请教一个WEBSERVICE的问题
要做一个客户端,调用的是服务器端的WEBSERVICE的一个方法,这个方法是一个商业机密,请问,如果在客户端调用WEBSERVICE的方法,能否会导致算法的逻辑泄露到客户端?比如通过观察内存中的一些啥东西来推算算法?

另外,如果客户端在启动的时候就得到了WEBSERVICE的对象,在运算的时候调用的方法是不是只在客户端进行不再请求服务器了?因为这个需要进行大量的运算,比如一秒钟几百次。如果每次运算都请求服务器的话肯定不靠谱。



请熟悉WEBSERVICE的朋友来帮忙解答一下,100分敬上。

谢谢

------解决方案--------------------
1、如果在客户端调用WEBSERVICE的方法,能否会导致算法的逻辑泄露到客户端?比如通过观察内存中的一些啥东西来推算算法?
—— 不能,客户端只是简单的参数传递和取得结果值,并不存在所谓观察内存;WebService服务不是网格计算,代码和计算环境都是在服务端;
—— 但是,如果算法本身简单,可能可以通过大量参数和结果进行推演,就跟人家破解密码是类似的。通过大量很细微差异的参数和服务端计算的结果,推演服务端算法为如何。


2、运算的时候调用的方法是不是只在客户端进行不再请求服务器了?
—— 显然不是,客户端就是傻傻的调用。所谓“得到了WEBSERVICE的对象”只是得到一个通讯代理而已。
—— 只有网格计算和RichClient之类的架构模型,才会允许代码和计算环境在设备间移动。
------解决方案--------------------
其实你可以把webservice理解成一个普通的接口,接口是不会暴露实现的,只不过这个接口是可以被远程调用的。

------解决方案--------------------
同意楼上两位!!!
------解决方案--------------------
探讨

引用:

1、如果在客户端调用WEBSERVICE的方法,能否会导致算法的逻辑泄露到客户端?比如通过观察内存中的一些啥东西来推算算法?
—— 不能,客户端只是简单的参数传递和取得结果值,并不存在所谓观察内存;WebService服务不是网格计算,代码和计算环境都是在服务端;
—— 但是,如果算法本身简单,可能可以通过大量参数和结果进行推演,就跟人家破解密码是类似的。通过……

------解决方案--------------------
探讨
请问一秒钟运算几百次的话,调用WEBSERVICE会有什么结果?

------解决方案--------------------
你可以简单的理解为:webservices客户端调用的是服务端的API,客户端只知道API的名字和参数以及返回结果,而并不知具体实现.
每一次调用请求及返回都是通过xml大文本进行传输然后解析的,所以效率相比其他远程调用方式会慢.
至于你具体的需求,还是建议你以测试为准
------解决方案--------------------
探讨

引用:

引用:
请问一秒钟运算几百次的话,调用WEBSERVICE会有什么结果?

所谓“一秒钟运算几百次”,你运算的是什么?
计算机一秒钟进行几百万次位运算都很轻松,要是你计算的是个数学公式,一秒钟计算几十万次也不见得难,如果你说一秒钟进行了几百次的数据库连接/关闭操作,或者一秒钟进行了几百次的文件读写操作,那肯定会挂掉。


一秒钟几百……

------解决方案--------------------
探讨
请问一秒钟运算几百次的话,调用WEBSERVICE会有什么结果?

------解决方案--------------------
如果运行场景是大规模并发访问的话,建议两个调整:
1、不要用WebService,选择其它轻量级远程调用模型;
2、集群并实现负载均衡。
------解决方案--------------------
看似webservice有调用时,会“用到服务器的方法”,但实际运行程序时,和常规的web程序一样,只是客户端发送一个包含类和方法名(包括参数值)的信息给服务器,服务器把这个方法运行后的生成的数据再发回客户端。

整个流程中,客户端其实完全不知道服务器端做了什么,调用时的方法名其实也只是“参数列表”的一部分。如果想保密一点,只要把方法名改成一串乱码就可以了。当然如果调用方很多次使用,就回破密码的流程一样还是会知道你的服务器端程序在什么,这是时间长短的。

webservice的调用方式只是让编程人员假想服务器的程序可以本地运行了。但实质不是把服务器的程序文件下载到客户端上跑。不要误会。