WCF 学习小结

来源:互联网 发布:有关大数据的毕业设计 编辑:程序博客网 时间:2024/05/16 18:33

    以前学习过,但没有写什么总结,时间有限,只对今天的成果做下总结吧!

    WCF起到的作用:

1 定位一个服务的位置;

2 提供寻址的辅助信息

3 标识服务的真实身份

   WCF指定地址:

                         

1 通过代码方式指定地址

using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))

{

host.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "http://127.0.0.1:9999/calculatorservice");

host.Open();

}

2 通过Config配置指定地址

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <services>
            <service name="Services.CalculatorService">
                <endpoint address="http://127.0.0.1:9999/calculatorservice/" binding="basicHttpBinding"
                    bindingConfiguration="" contract="Contracts.ICalculator" />
            </service>
        </services>
      
    </system.serviceModel>
</configuration>

3 IIS寄宿下对地址的指定

要点:必须创建一个.svc文件,并将该文件部署到一个确定的IIS虚拟目录下。

.svc文件配置内容

<%@ ServiceHost Service="Services.CalculatorService,Services" %>

基地址与相对地址

除了以绝对路径对其进行设置服务的终结点外,还可通过“基地址+相对地址”的方式进行设置。一个服务可以指定一个或多个基地址,但是对于一种传输协议类型,只能具有一个唯一的基地址。服务的基地址和终结点的相对地址可以通过代码的方式进行指定。

由于指定的是相对地址,所以WCF系统会根据绑定采用的传输协议进行匹配基地址。相对地址和基地址组合确定终结点的绝对地址。

配置文件配置

如果采用了代码和配置的方式,两者都会生效,所以必须确保两者设置的内容不能相互冲突,如果一个基于HTTP的基地址通过配置和代码的方式加了两次,则报错。



    服务契约:ServiceContract特性能够将接口(或类)公开为看向服务的契约,允许开发者使用如C#语言进行编辑,把类似于接口这样的语法结构公开为WCF契约和服务。

   注:  基于WSDL的操作却不支持操作重载。

 public interface ICalculator                           
    {
        [OperationContract]
        double Add(double x, double y);

        [OperationContract]

        int Add(int x, int y);

    }

解决方式:进行手动指定OperationContract别名

public interface ICalculator        【错误】                   
    {
       [OperationContract(Name="AddDouble")]
        double Add(double x, double y);

        [OperationContract(Name="AddInt")]
        int Add(int x, int y);

    }


         时间比较匆忙,也就回忆了下今天学习的东西,看起来有点凌乱,解释的也不详细。

         记:以后有时间尽量写的详细些。

                                                    Fighting!



原创粉丝点击