您的位置:首页 > 其它

SOA的应用和心得

2006-06-20 09:14 369 查看
经过前面的研讨之后,奖SOA框架付诸开发,由于项目时间比较近张,因此选择了在五一期间加班赶工实现了该框架,并且开发过程中调整了一些细节,毕竟设计和开发还是有一定的偏差。最终除了服务管理功能尚未实现,其他都实现了。
在开发过程修改后,WebService服务端调整成需要发布成SOA的远程方法依旧按照WebService来开发,即用WebMethod属性标记该方法,但该WebService必须实现DataSet CallServiceMethod(DataSet)。CallServiceMethod方法用于根据参数来反射调用本WebService类的其他方法。
使用效果:本次项目主要是OA的开发,本OA定位于企业整合平台为主方向的OA,力求该OA系统和其他系统耦合性非常低,能够将任意第三方数据进行OA的审核,另外还有门户信息发布平台、权限系统、单点登陆等,这几个系统力求独立运行,互相不依赖,但是信息却是互相共享的。比如这些网站只要登陆任何其中一个后,访问其他网站则不需再登陆;比如任其它业务站点都可以往信息发布平台发布数据;比如权限系统为其他所有业务系统提供校验服务等等。SOA很好的解决了这些问题。由于目前数据量比较小,因此性能上尚未表现出劣势。其优势前面也分析过,这些系统任何一个升级改造,只要保持发布的WebService方法能够满足业务的要求,其他系统均可轻松调整配置文件即可适应其变化。
当然,在本次项目开发中,由于所有系统都是自己人员开发的,因此其WebService方法基本已经确定,反而显得每个调用WebService的其他业务系统都要开发相应的Client类有点累赘。
在使用过程中,也发现另外一个问题。在AOP的实现过程中,我们使用了System.Runtiome.Remoting.Messaging.LogicalCallContext.SetData(string,object)的方法来保存上下文共享对象,并且该上下位共享对象的名字是写死的,这就导致了一定问题。如果多人访问,会不会造成别人拿到的上下文对象不是自己保存的呢?目前这方面还没有详细测试,但我想肯定会有问题的。当然这个问题需要解决还是比较容易的,可以通过由外面传递一个标记用户的参数进来,用该参数标记上下文对象即可,因此不伤大雅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: