wcf的配置文件,包含服务端和客户端两个。入门用到的比较少,我先来做最简单的介绍。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:3721/calculatorservice/metadata" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="metadataBehavior" name="Service.CalculatorService">
<endpoint address="http://127.0.0.1:3721/calculatorservice"
binding="wsHttpBinding" bindingConfiguration="" contract="Service.Interface.ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>
这么大一坨,其实新手用到的或者要了解的不需要太多,最好自己手工敲几遍,然后你大概就知道这都是什么东西了。
首先<system.serviceModel>
这个类似于叫服务模板吧,里面包含的东西也多,就不一一介绍了。主要研究下面这一块:
<services><!--服务组,就是你可以创建一堆的服务-->
<!--behaviorConfiguration:这个可以忽略,name:服务的名字,就是前面创建的类库,命名空间.服务的类名-->
<service behaviorConfiguration="metadataBehavior" name="Service.CalculatorService">
<!--endpoint:所谓的终结点 address:其实这个可以随便起,书上有具体的介绍,可以看具体的-->
<!--binding:绑定,这个有很多的选项,书上有很多介绍,看书,默认的这个知道即可-->
<!--contract:合同,其实就是那个服务接口,书面语叫合同-->
<endpoint address="http://127.0.0.1:3721/calculatorservice"
binding="wsHttpBinding" bindingConfiguration="" contract="Service.Interface.ICalculator" />
</service>
客户端的配置,跟服务端基本没区别,主要多了个name用来区分的,因为后面要用,我把用的地方贴出来:
<system.serviceModel>
<!--client:就是客户端的意思嘛,所有的都在这里配置-->
<client>
<!--endpoint:跟客户端都一个样,终结点,这个多个name:也可以随便起,当然有意义更好,这个后面要引用的
address:跟服务的一个样就行了
binding:跟服务的一个样就行了
contract:跟服务的一个样就行了-->
<endpoint name="calculatorService" address="http://127.0.0.1:3721/CalculatorService" binding="wsHttpBinding" contract="Service.Interface.ICalculator"/>
</client>
</system.serviceModel>
main里面用到了这个:
static void Main(string[] args)
{
using (ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>("calculatorService"))
{
//创建服务代理对象
ICalculator proxy = channelFactory.CreateChannel();
//调用计算器方法
Console.WriteLine("x+y={2} when x={0} and y={1}", 1, 2, proxy.Add(1, 2));
Console.ReadLine();
}
}
配置里面的内容太多,慢慢学习,慢慢的掌握吧。我懂的也比较少。