项目是Android客户端,WCF作为服务器提供数据,现在接口已经写好了,可是由于需求的添加,接口里面的方法越来越多!
在网上也搜索了一些资料,但是都是说的C#写的客户端,WCF服务端的例子,没有Android端的例子!
就是想问问怎么来拆分服务端的接口,那么Android端需要做什么改动呢?
希望有这方面经验的大哥能够提点建议!
接口的设计尽量精简,面向的东西更细分。WCF的一个服务可以同时兼容和提供多个接口的服务,所以只要将拆分后的接口再应用一次就好了,还不会影响现有的接口。
嗯,接口我们设计的确实有点烂!
关于“WCF的一个服务可以同时兼容和提供多个接口的服务,所以只要将拆分后的接口再应用一次就好了” 这个方案头脑里没有很明确的方案,能够具体一点嘛?
@TimYang: 比如现有的服务ServiceA应用了当前接口IFat,将IFat拆分为IA和IB,为了兼容和地址不变,可以在现有的ServiceA上实现IA和IB,等客户端完全弃用IFat后再移除IFat,这样过度就没有兼容的问题了。
@今昭:
大哥再问一个问题啊!
你这样是把IFat接口拆成了IA和IB,那么实现他们的ServiceA不是还有很多方法吗?
可能是我WCF还学的不好吧,谢谢大哥的建议!
@TimYang: 每隔类的工作不一样,IA的具体实现可能在类A、IB的实现可能在类B,但是作为容器类S职责就是提供服务调用,类A和类B也可以提供服务但是这个时候服务的端点就不稳定了。
@今昭:
MyA是不是就是你说的容器。
你的意思是不是变成这样的:
1 public interface IA 2 { 3 void GetOne(); 4 5 void GetTwo(); 6 } 7 8 public interface IB 9 { 10 void GetThree(); 11 12 void GetFour(); 13 } 14 15 public class MyA : IA, IB 16 { 17 public void GetOne() 18 { 19 throw new NotImplementedException(); 20 } 21 22 public void GetTwo() 23 { 24 throw new NotImplementedException(); 25 } 26 27 public void GetThree() 28 { 29 throw new NotImplementedException(); 30 } 31 32 public void GetFour() 33 { 34 throw new NotImplementedException(); 35 } 36 }
@TimYang: 是的
@今昭:
那如果这样,那么在配置文件里就要指定多个Endpoint了,每个Endpoint对应一个接口了。
这样讲对不?
<services>
<service name="MyA" behaviorConfiguration="">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="" contract="IA" >
</endpoint>
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="" contract="IB" >
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://192.168.23.15/FrontendWebService/"/>
</baseAddresses>
</host>
</service>
</services>
@TimYang: 如果几个协议一样可以只写一个endpoint缺省比较好,最理想是用编程来取代死板的config