假如我现在有一个功能模块叫做add.dll,是在用户机器上的客户端上执行的(例如执行1+1=2).
现在我想要把这个模块放在服务器端的机器上执行,结果返回给用户.
那么之前为客户端写的add.dll的源码是否需要经过一些处理(健壮性以及速度)才能放到服务端的机器上? 有相关的书籍吗?
不用管Socket通信之类的编程,假设这些底部通信机制已经搭建好了.
只管add.dll这个模块的源码是否需要修改.也就是服务端程序和客户端程序的编程(不指网页程序,脚本啥的)区别,或者有哪些需要注意的.
首先,作为服务端,健壮性、并发性等必然是要考虑的,但是必须结合实际场景。比如一个个位数用户的系统,那么并发性能必然不会要求很高,同时并发冲突的可能性也不会很多。又或者一个邮件服务的系统,他的速度性肯定不用象一个即时监控系统那么高。
第二,即然是原本为客户端写的接口,移植到服务端时必然要考虑服务端应用场景,比如原来客户端肯定就一个用户,到了服务端的话,基本上肯定有多用户,那么你的接口内是否涉及到资源冲突?
第三,具体冲突具体分析,有些是可以在接口上层解决的,有些则必需修改接口。例如你就是做个加法,那么肯定没冲突什么事,如果你结果要存数据库,要更新表,则需要考虑下会不会导致数据库锁死,如果会锁死,那么考虑下是不是外面做个线程安全的包装就可以解决问题,如果线程安全的包装需要10人日,但是就一个接口用到,而如果直接改接口则2人日就解决了,那么还是改接口吧,如果这个线程安全的包装在很多接口都用那么就做包装。
所以,具体问题具体分析...............
你首先要考虑的不是健壮性和速度,而是跨进程通信技术,你需要找本 UNIX/Windows 网络编程的书籍读读。
多谢
@ronnie_mjy:
不用管Socket通信之类的编程,假设这些底部通信机制已经搭建好了.
只管add.dll这个模块的源码是否需要修改.也就是服务端程序和客户端程序的编程(不指网页程序,脚本啥的)区别,或者有哪些需要注意的.
如果你这么来问的话,我可以告诉你没有区别,当然这里前提是你写过多线程程序,了解跨进程通迅编程,明白内存管理和异常处理。
我的理解是,不管是在服务端和客户端add.dll的功能都只是一个运算的,放在那都是一样的,而放在服务端楼主只是为自己的程序添加了一套通信模块,然后建立了一套自己的通信规则,add.dll还是它自己~ 当然这里要排除add.dll如果是存在数据共享的情况下需要考虑加个访问控制
谢了.