WCF--我的第一个WCF程序

第一:当然是要建立WCF服务程序了。

程序创建后发现生成了三个文件:App.config,IService1.cs,Service1.cs
    App.config代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- 部署服务库项目时,必须将配置文件的内容添加到
  主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
  <system.serviceModel>
    <services>
      <service name="WcfServiceLibrary1.Service1" behaviorConfiguration="WcfServiceLibrary1.Service1Behavior">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
        <endpoint address ="" binding="wsHttpBinding" contract="WcfServiceLibrary1.IService1">
          <!--
              部署时,应删除或替换下列标识元素,以反映
              在其下运行部署服务的标识。删除之后,WCF 将
              自动推导相应标识。
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- 元数据交换终结点由服务用于向客户端做自我描述。-->
        <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfServiceLibrary1.Service1Behavior">
          <!-- 为避免泄漏元数据信息,
          请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- 要接收故障异常详细信息以进行调试,
          请将下值设置为 true。在部署前
            设置为 false 以避免泄漏异常信息-->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

这是个配置文件,类似于asp.net程序中的web.config。

IService1.cs :
    我删除了点其它的方法,保留了一个方法.

 [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);
    }

这里定义了一个接口,和普通程序中的接口是一样的,唯一不同的是在接口上面有一个特性[ServiceContract],这是契约中的一种:服务契约。有了这个标记,它就可能面向客户端了。在下面申明的方法中和普通方法也有点不同,同样是多了一个标记[OperationContract],这个标记将方法向客户端公开。

Service1.cs :它继承了上面的接口.

public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

    }

第二:有了服务端当然少不了客户端了。这我就用ASP.NET来充当了。
       客户端要想应用服务端程序,一定要添加服务引用了,这里我的服务端与客户端在一个项目里面就可以直接添加服务引用了。


    
   由于我的服务端是本地的,所在点击“发现”,程序就会发现项目中我上面创建的WCF程序。点确定就成功的添加了服务端的引用了。

第三:写客户端的调用程序。

页面代码:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

页面代码:

private void transferWCF()
        {
            ServiceReference1 .Service1Client prox=new WebApplication1.ServiceReference1.Service1Client ();
            int i = 0;
            int.TryParse(this.TextBox1.Text.Trim(), out i);
            string s = prox.GetData(i);
            Response.Write(s);

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            this.transferWCF();

        }

上面的就是我的第一个基于HELLO WORLD 的程序了。
       客户端调用时要先创建代理类
 ServiceReference1 .Service1Client prox=new WebApplication1.ServiceReference1.Service1Client ();
通过这个代理类就可以调用服务端的方法了。由于只在接口是对外公开的,所有只能调用到接口的方法,你并不能直接调用Service1.cs的方法。这样和我们现在一直提倡的“面向接口编程”非常相似。
我在应用这个程序的时候,证明了WCF默认情况下是不运行操作符重载的。在C#中的利用重载是相当普遍的做法,但在WCF程序中如果你不做具体设置它会出现异常(InvalidOperationException)。
下面是错误的代码,并不能编译成功。

[OperationContract
string GetData(int value);
[OperationContract
string GetData(string value);

WCF并不是不支持这种操作重载,而要手动指定。这里要用到OperationContract特性的Name属性。下面是正确的代码.

[OperationContract(Name="int")]
string GetData(int value);
[OperationContract(Name="string")]
string GetData(string value);

这样在生成代理的时候,程序就会自动在GetData后面加上相应的标记来区分了,这样就达到了操作重载的效果了。

时间: 2024-11-08 23:28:50

WCF--我的第一个WCF程序的相关文章

【WCF】创建第一个WCF应用程序

一.什么是WCF: Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,也可以说是一套软件开发包.WCF合并了Web服务..net Remoting.消息队列和Enterprise Services的功能并集成在Visual Studio中.WCF专门用于面向服务开发. WCF的最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息.并为服务提供直接的支持.托管.安全.事务管理.离线对立等等

WCF 入门教程一(动手新建第一个WCF程序并部署)

WCF的相关概念信息就不在此赘述了,网上一搜一大把. 现在让我们动手搭建我们的第一个wcf程序吧,具体流程如下: 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序. 2.建立完成后如下图所示: 3.删除系统生成的两个文件IService1.cs与Service1.svc(或者自己重命名,在系统生成的基础文件中进行编码,此处感觉重命名麻烦,于是选择删除--新建) 4.添加自定义的WCF[服务文件]Test.svc 5.此时vs2010会自动生成WCF接口文件ITes

WCF入门教程2——创建第一个WCF程序

本节目标 定义服务契约 创建宿主程序 创建客户端程序访问服务 定义服务契约 ServiceContract特性:该特性可被用来作用于子类或者借口之上,并允许重复声明. OperationContract:只有定义了该特性的方法才会被放入服务之中. 1.新建服务程序 新建项目--类库,这里我们先不直接新建一个WCF服务,而是新建一个类库,命名为HelloService 添加引用 删除Class1.cs,然后新建一个接口IHelloService.cs: using System; using Sy

我的第一个WCF程序,很简单适合我等菜鸟

1.首先我罗列一下网站搜索并经过自己理解的WCF的含义: 1)WCF:(WIndows Communication Foundation)是由微软是由微软发展的一组数据通信的应用开发接口,可以翻译为Windows通讯接口,             最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息,专门用于面向服务开发(SOA) 2)WCF整合了.NET远程技术(Remoting).Web Service和微软消息队列服务等技术 2.下面我新建一个WCF

跟我一起学WCF(4)——第一个WCF程序

一.引言 前面几篇文章分享了.NET 平台下其他几种分布式技术,然而前面几种分布式技术专注于某一特定的领域,并且具有不同编程接口,这使得开发人员需要掌握多个API的使用.基于这样的原因,微软在.NET 3.0时实现了WCF.WCF是.NET平台下各种分布式技术的集成,它将前面介绍的几种分布式技术完全整合在一起,并提供了一套统一的编程接口(API).对于,开发人员来来说只需要掌握WCF一套的API,就可以实现之前分布式技术所实现的所有功能. 二.WCF详细介绍 WCF(Windows Commun

WCF学习笔记(1)-一个完整的例子

一.开发环境 IDE:VS2013 OS:Win10 IIS:IIS 10 二.开发流程 1.项目结构 2.添加一个WCF程序 3.删除系统自动生成的两个文件IService1.cs和Service1.svc 4.添加自定义的WCF服务文件 5.在IUser.cs文件中,定义方法名 注: [ServiceContract]来说明是一个WCF接口,不加的话,不能被外部调用 [OperationContract]来说明该方法是一个WCF接口的方法,不加不能被外部调用 namespace WCFSer

【转】WCF入门教程六[一个简单的Demo]

一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来学习的,我们学习WCF也是一样的.从简单来看(不包括安全.优化等相关问题),WCF的增删改查和WebForm相差无几.WCF只是把具体"实现"写在"Service端",而"调用"放在了"Client端".觉得有帮助别忘了点个赞哈,

无废话WCF入门教程六[一个简单的Demo]

wcf技术交流,同学习,同进步. 群号:89718412 一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来学习的,我们学习WCF也是一样的.从简单来看(不包括安全.优化等相关问题),WCF的增删改查和WebForm相差无几.WCF只是把具体“实现”写在“Service端”,而“调用”放在了“Client端”.觉得有帮助别忘了点个赞哈,谢谢哦~ 二

WCF入门随笔 (一). 新建一个WCF服务

1. 新建服务 (1). [文件]--[新建项目]--[WCF服务应用程序] (2). 将默认生成的IService1.cs和Service1.svc文件删除掉 (3). 添加自定义的WCF[服务文件]Math.svc,此时vs2012会自动生成WCF接口文件IMath.cs,我们在IMath中定义WCF方法Add,在Math.svc.cs对该接口的方法进行实现. IMath.cs文件 1 namespace WCFService 2 { 3 [ServiceContract] 4 public

WCF基础教程——vs2013创建wcf应用程序

引言 近期在项目中见到了师哥们常常谈到的WCF这方面的知识.当时在写程序的时候也没有理解wcf究竟是个什么东西? 以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格式的代码.随着代码敲 的越来越多就慢慢的懂得了如何实现client和服务端的连同,可是wcf真正的执行机制还是一点也不懂,近期在听师 哥们讲课的时候有解说了一些关于WCF的知识,自己感觉应该好好理解这方面的知识了,而且这个东西在项目中是非 经常见的,以下就结合我实现的一个小Demo来和大家分享一下. 当