【项目背景】
在高效云平台项目中,我们各个模块采用的创建分布式服务(即wcf),这样的好处之一:我们不用同在一个解决方案中,方便了彼此之间接口的调用,只要引用服务,该服务中的接口,接口中的方法都可以使用。
【问题描述】
我权限注册模块调用用户模块的接口方法,正常情况下,我调用用户模块发布好的服务即可。可如果用户模块B层中我调用的方法更改后,我再调用,如果是调用它本地的代码(在我本地生成用户模块服务),则没有问题,但当他提交到svn,并jenkins构建成功后,我调用发布好的用户模块服务就有问题:为什么?
【思考过程】
1·用户模块更改B层方法和更改wcf层的contract方法,我调用时是一样的解决方案吗?
2·用户模块更改方法后,是nuget发布重新呢还是?
3·我引用用户模块最新生成的contract.dll,对于合作开发,这样合适吗?
4·还是用户模块直接更改,我直接调用发布好的服务即可?
【暂时正解】(考虑过程或许有所欠缺,,)
正常情况下,他直接更新就可以,因为我调用他发布好的dll路径就在他服务端网站所对应的物理路径,这个物理路径是最新的dll才对,这样的话,我调用的都是最新的dll,无需其他任何操作。
可能错误的原因:
1·发布网站对应的物理路径有问题:物理路径应该是对应项目发布文件的路径。
2·如果物理路径没有问题,那就要考虑是不是该物理路径下的bin文件是不是最新的?来源是源代码的wcf中的bin路径,该设置在服务端的bat文件中,设置即可。
3·如果bat中的各项配置都没有问题,那就要看源文件中的bin是不是最新的?而这个源文件的bin是通过jenkins构建将svn的源代码复制到服务器的workspace中。所以,接下来就要看jenkins构建的配置过程是是否有所遗漏?如图所示:
暂时就到这里。博文有些短,之所以写出来我是想把自己多次遇到这个问题,到解决问题的整个思考过程暴漏出来,如果看完这篇博客,大家有共鸣,我特别希望和你们一起交流这个问题。遇到问题的思考方式以及我们怎么更有效的思考。