由一次WCF项目的需求扩展想到的

本文介绍了一种通过创建中间WCF服务的方式,使得Android、iOS等客户端能够跨平台访问原有的PC客户端WCF服务。该方案避免了对原始WCF服务进行大量修改,通过反射分析DLL文件并转换参数类型实现调用。
这个小项目或者说是小功能大约一年以前开发的。现在写这篇文章只是为了共享这个思路使有同样需求的人少走弯路。公司其它人员开发了一个适用于pc客户端调用的wcf服务。由于公司添加了android与ios客户端的开发。所以这些代码也需要访问这个wcf服务,之前让许多人做别人不是android访问不到就是对原有wcf改动太大(还有一个 Zhou某某,平时吹的挺牛B,弄了好几天也没弄好)。后来领导把这个任务交给了我。接到这个任务后,我分析了下现有的代码,由于android与javascript,c#调用访问的资源是一样的,只不过是访问方式不同而已。所以最好还是不要动现有的wcf,于是我就另启了一个wcf服务,专门用来给android访问。而我的服务接收到andoird的请求后,再访问原先的wcf服务。这样做的好处是:
  一,可以将代码的改动量做到最小,基本上原先的wcf服务不用动,只要改动时,把发布后的dll文件替换掉就行。
  二,得用反射分析Wcf发布的dll文件(这其中用到了部分的编译原理知识)。
  现在简单描述下这个项目的运行原理:
  其实就是让android访问wcf时,将要调用的方法名及参数,用一个统一的json对象包装起来。首先根据调用的方法名来动态分析dll文件,查找是否有此方法,如果没有则返回错误。如果有,则利用反射动态分析些方法,主要是参数及返回值,然后根据获取到的参数及返回值信息来将android传入的json对象一一进行类型转换,然后调用此方法,并将返回值转换成json,返回给andriod或ios(其实javascript访问也是这个原理,只不过是wcf配置稍有不同而已)。
这个小项目或者说小功能做好后,运行很稳定。可惜后来由于要写公司的解析程序及地图信息服务,领导把这个项目让我交给别人了(可能领导到现在还不知道这个方法的原理,也许以后说起时就是别人的功劳了)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值