(转载)WCF Demo

WCF编程系列(一)初识WCF

Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型。
WCF的基本概念:
  地址:定义服务的地址
  绑定:定义服务的通讯方式(传输协议、编码方案)
  契约:定义服务的具体实现
  终结点:由地址、绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务。

下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们将在后续介绍):
1.新建项目,名称 XfrogWCFService,解决方案名称 XfrogWCFStudy001,模板选择类库,选择.NET Framework 3.0版本
2.修改Class1.cs文件名称为 IFirstService.cs
3.添加引用 System.ServiceModel
4.修改IFirstService.cs代码如下:

Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型。
WCF的基本概念:
  地址:定义服务的地址
  绑定:定义服务的通讯方式(传输协议、编码方案)
  契约:定义服务的具体实现
  终结点:由地址、绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务。

下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们将在后续介绍):
1.新建项目,名称 XfrogWCFService,解决方案名称 XfrogWCFStudy001,模板选择类库,选择.NET Framework 3.0版本
2.修改Class1.cs文件名称为 IFirstService.cs
3.添加引用 System.ServiceModel
4.修改IFirstService.cs代码如下:

IFirstService.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. using System.ServiceModel;
    
  5. 
    
  6. namespace Xfrog.Study.WCF
    
  7. {
    
  8.     [ServiceContract]
    
  9.     public interface IFirstService
    
  10.     {
    
  11.         [OperationContract]
    
  12.         String GetData(String name);
    
  13.     }
    
  14. }
    
  15. 
    

我们定义了一个IFirstService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法上声明了OperationContract特性,表示该方法是IFirstService的一个服务方法,客户端可远程调用该方法。

5.添加一个新类,文件名为FirstService.cs,代码如下:

FirstService.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. 
    
  5. namespace Xfrog.Study.WCF
    
  6. {
    
  7.     public class FirstService : IFirstService
    
  8.     {
    
  9.         string IFirstService.GetData(String name)
    
  10.         {
    
  11.             return String.Format("Hello {0},Welcome To WCF!", name);
    
  12.         }
    
  13.     }
    
  14. }
    
  15. 
    

OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。
6.在同一解决方案下新建一个项目,名称为Host,类型为控制台应用程序
7.Host项目中添加引用,引用项目XfrogWCFService,然后再添加引用:System.ServiceModel
8.修改Program.cs代码如下:

隐藏行号 复制代码 ?Program.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. using System.ServiceModel;
    
  5. using Xfrog.Study.WCF;
    
  6. 
    
  7. namespace Host
    
  8. {
    
  9.     class Program
    
  10.     {
    
  11.         static void Main(string[] args)
    
  12.         {
    
  13.             using (ServiceHost host = new ServiceHost(typeof(FirstService)))
    
  14.             {
    
  15.                 host.Open();
    
  16.                 Console.WriteLine("服务已启动,按任意键中止...");
    
  17.                 Console.ReadKey(true);
    
  18.                 host.Close();
    
  19.             }
    
  20.         }
    
  21.     }
    
  22. }
    
  23. 
    

以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定,本步骤可通过WCF的管理工具,或直接编写配置文件来完成。我们先采用手工编写配置文件的方式:
9.新建项,选择应用程序配置文件,文件名App.config保持不变。
10.修改app.config内容如下:

App.config

  1. <?xml version="1.0" encoding="utf-8" ?>
    
  2. <configuration>
    
  3.   <system.serviceModel>
    
  4.     <services>
    
  5.       <service name="Xfrog.Study.WCF.FirstService" behaviorConfiguration="behaviorConfiguration">
    
  6.         <host>
    
  7.           <baseAddresses>
    
  8.             <add baseAddress="http://localhost:8000/"/>
    
  9.           </baseAddresses>
    
  10.         </host>
    
  11.         <endpoint address="" binding="basicHttpBinding" contract="Xfrog.Study.WCF.IFirstService"></endpoint>
    
  12.       </service>
    
  13.     </services>
    
  14.     <behaviors>
    
  15.       <serviceBehaviors>
    
  16.         <behavior name="behaviorConfiguration">
    
  17.           <serviceMetadata httpGetEnabled="true"/>
    
  18.         </behavior>
    
  19.       </serviceBehaviors>
    
  20.     </behaviors>
    
  21.   </system.serviceModel>
    
  22. </configuration>
    

11.设置Host项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址:http://localhost:8000/ ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
12.在同一解决方案下新建一个项目,名称为Client,类型为控制台应用程序
13.我们将使用微软的svcutil工具生成FirstService服务的客户端代理类,通过开始菜单/Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示,启动命令环境。
14.确认FirstService服务已启动
15.切换当前路径到解决方案目录:
cd G:\Study\WCF\XfrogWCFStudy001
g:
16.输入命令:
svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs
执行成功后,会在解决方案目录下生成两个文件:FirstServiceClient.cs 和output.config
17.中止Host项目的调试,回到Client项目,选择添加 现有项 ,然后选择这两个文件,添加后,将output.config重命名为App.config
18.Client项目中添加引用,选择System.ServiceModel
19.修改program.cs代码如下:

Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型。
WCF的基本概念:
  地址:定义服务的地址
  绑定:定义服务的通讯方式(传输协议、编码方案)
  契约:定义服务的具体实现
  终结点:由地址、绑定和契约共同构成一个终结点,服务器通过终结点向客户端公开服务,客户端通过终结点调用服务。

下面通过一个简单的服务示例来认识WCF(只需让本例顺利运行即可,关于代码中的各种类型及WCF的相关概念我们将在后续介绍):
1.新建项目,名称 XfrogWCFService,解决方案名称 XfrogWCFStudy001,模板选择类库,选择.NET Framework 3.0版本
2.修改Class1.cs文件名称为 IFirstService.cs
3.添加引用 System.ServiceModel
4.修改IFirstService.cs代码如下:

IFirstService.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. using System.ServiceModel;
    
  5. 
    
  6. namespace Xfrog.Study.WCF
    
  7. {
    
  8.     [ServiceContract]
    
  9.     public interface IFirstService
    
  10.     {
    
  11.         [OperationContract]
    
  12.         String GetData(String name);
    
  13.     }
    
  14. }
    
  15. 
    

我们定义了一个IFirstService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法上声明了OperationContract特性,表示该方法是IFirstService的一个服务方法,客户端可远程调用该方法。

5.添加一个新类,文件名为FirstService.cs,代码如下:

FirstService.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. 
    
  5. namespace Xfrog.Study.WCF
    
  6. {
    
  7.     public class FirstService : IFirstService
    
  8.     {
    
  9.         string IFirstService.GetData(String name)
    
  10.         {
    
  11.             return String.Format("Hello {0},Welcome To WCF!", name);
    
  12.         }
    
  13.     }
    
  14. }
    
  15. 
    

OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。
6.在同一解决方案下新建一个项目,名称为Host,类型为控制台应用程序
7.Host项目中添加引用,引用项目XfrogWCFService,然后再添加引用:System.ServiceModel
8.修改Program.cs代码如下:

Program.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. using System.ServiceModel;
    
  5. using Xfrog.Study.WCF;
    
  6. 
    
  7. namespace Host
    
  8. {
    
  9.     class Program
    
  10.     {
    
  11.         static void Main(string[] args)
    
  12.         {
    
  13.             using (ServiceHost host = new ServiceHost(typeof(FirstService)))
    
  14.             {
    
  15.                 host.Open();
    
  16.                 Console.WriteLine("服务已启动,按任意键中止...");
    
  17.                 Console.ReadKey(true);
    
  18.                 host.Close();
    
  19.             }
    
  20.         }
    
  21.     }
    
  22. }
    
  23. 
    

以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定,本步骤可通过WCF的管理工具,或直接编写配置文件来完成。我们先采用手工编写配置文件的方式:
9.新建项,选择应用程序配置文件,文件名App.config保持不变。
10.修改app.config内容如下:

App.config

  1. <?xml version="1.0" encoding="utf-8" ?>
    
  2. <configuration>
    
  3.   <system.serviceModel>
    
  4.     <services>
    
  5.       <service name="Xfrog.Study.WCF.FirstService" behaviorConfiguration="behaviorConfiguration">
    
  6.         <host>
    
  7.           <baseAddresses>
    
  8.             <add baseAddress="http://localhost:8000/"/>
    
  9.           </baseAddresses>
    
  10.         </host>
    
  11.         <endpoint address="" binding="basicHttpBinding" contract="Xfrog.Study.WCF.IFirstService"></endpoint>
    
  12.       </service>
    
  13.     </services>
    
  14.     <behaviors>
    
  15.       <serviceBehaviors>
    
  16.         <behavior name="behaviorConfiguration">
    
  17.           <serviceMetadata httpGetEnabled="true"/>
    
  18.         </behavior>
    
  19.       </serviceBehaviors>
    
  20.     </behaviors>
    
  21.   </system.serviceModel>
    
  22. </configuration>
    

11.设置Host项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址:http://localhost:8000/ ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
12.在同一解决方案下新建一个项目,名称为Client,类型为控制台应用程序
13.我们将使用微软的svcutil工具生成FirstService服务的客户端代理类,通过开始菜单/Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示,启动命令环境。
14.确认FirstService服务已启动
15.切换当前路径到解决方案目录:
cd G:\Study\WCF\XfrogWCFStudy001
g:
16.输入命令:
svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs
执行成功后,会在解决方案目录下生成两个文件:FirstServiceClient.cs 和output.config
17.中止Host项目的调试,回到Client项目,选择添加 现有项 ,然后选择这两个文件,添加后,将output.config重命名为App.config
18.Client项目中添加引用,选择System.ServiceModel
19.修改program.cs代码如下:

Program.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. 
    
  5. namespace Client
    
  6. {
    
  7.     class Program
    
  8.     {
    
  9.         static void Main(string[] args)
    
  10.         {
    
  11.             String key = "";
    
  12.             while (String.Compare(key, "Q", true)!=0)
    
  13.             {
    
  14.                 FirstServiceClient client = new FirstServiceClient();
    
  15.                 Console.WriteLine(client.GetData(key));
    
  16. 
    
  17.                 key = Console.ReadLine();
    
  18.             }
    
  19.         }
    
  20.     }
    
  21. }
    
  22. 
    

20.Host项目上单击右键,选择调试—>启动新实例,待服务启动完成后,在Client项目上单击右键,选择调试—>启动新实例。输入任意字符回车,Client将调用FirstService服务GetData方法,返回一个字符串。输入q退出Client。

20.Host项目上单击右键,选择调试—>启动新实例,待服务启动完成后,在Client项目上单击右键,选择调试—>启动新实例。输入任意字符回车,Client将调用FirstService服务GetData方法,返回一个字符串。输入q退出Client。

我们定义了一个IFirstService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法上声明了OperationContract特性,表示该方法是IFirstService的一个服务方法,客户端可远程调用该方法。

5.添加一个新类,文件名为FirstService.cs,代码如下:

FirstService.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. 
    
  5. namespace Xfrog.Study.WCF
    
  6. {
    
  7.     public class FirstService : IFirstService
    
  8.     {
    
  9.         string IFirstService.GetData(String name)
    
  10.         {
    
  11.             return String.Format("Hello {0},Welcome To WCF!", name);
    
  12.         }
    
  13.     }
    
  14. }
    
  15. 
    

OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。
6.在同一解决方案下新建一个项目,名称为Host,类型为控制台应用程序
7.Host项目中添加引用,引用项目XfrogWCFService,然后再添加引用:System.ServiceModel
8.修改Program.cs代码如下:

Program.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. using System.ServiceModel;
    
  5. using Xfrog.Study.WCF;
    
  6. 
    
  7. namespace Host
    
  8. {
    
  9.     class Program
    
  10.     {
    
  11.         static void Main(string[] args)
    
  12.         {
    
  13.             using (ServiceHost host = new ServiceHost(typeof(FirstService)))
    
  14.             {
    
  15.                 host.Open();
    
  16.                 Console.WriteLine("服务已启动,按任意键中止...");
    
  17.                 Console.ReadKey(true);
    
  18.                 host.Close();
    
  19.             }
    
  20.         }
    
  21.     }
    
  22. }
    
  23. 
    

以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定,本步骤可通过WCF的管理工具,或直接编写配置文件来完成。我们先采用手工编写配置文件的方式:
9.新建项,选择应用程序配置文件,文件名App.config保持不变。
10.修改app.config内容如下:

App.config

  1. <?xml version="1.0" encoding="utf-8" ?>
    
  2. <configuration>
    
  3.   <system.serviceModel>
    
  4.     <services>
    
  5.       <service name="Xfrog.Study.WCF.FirstService" behaviorConfiguration="behaviorConfiguration">
    
  6.         <host>
    
  7.           <baseAddresses>
    
  8.             <add baseAddress="http://localhost:8000/"/>
    
  9.           </baseAddresses>
    
  10.         </host>
    
  11.         <endpoint address="" binding="basicHttpBinding" contract="Xfrog.Study.WCF.IFirstService"></endpoint>
    
  12.       </service>
    
  13.     </services>
    
  14.     <behaviors>
    
  15.       <serviceBehaviors>
    
  16.         <behavior name="behaviorConfiguration">
    
  17.           <serviceMetadata httpGetEnabled="true"/>
    
  18.         </behavior>
    
  19.       </serviceBehaviors>
    
  20.     </behaviors>
    
  21.   </system.serviceModel>
    
  22. </configuration>
    

11.设置Host项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址:http://localhost:8000/ ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
12.在同一解决方案下新建一个项目,名称为Client,类型为控制台应用程序
13.我们将使用微软的svcutil工具生成FirstService服务的客户端代理类,通过开始菜单/Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示,启动命令环境。
14.确认FirstService服务已启动
15.切换当前路径到解决方案目录:
cd G:\Study\WCF\XfrogWCFStudy001
g:
16.输入命令:
svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs
执行成功后,会在解决方案目录下生成两个文件:FirstServiceClient.cs 和output.config
17.中止Host项目的调试,回到Client项目,选择添加 现有项 ,然后选择这两个文件,添加后,将output.config重命名为App.config
18.Client项目中添加引用,选择System.ServiceModel
19.修改program.cs代码如下:

Program.cs

  1. using System;
    
  2. using System.Collections.Generic;
    
  3. using System.Text;
    
  4. 
    
  5. namespace Client
    
  6. {
    
  7.     class Program
    
  8.     {
    
  9.         static void Main(string[] args)
    
  10.         {
    
  11.             String key = "";
    
  12.             while (String.Compare(key, "Q", true)!=0)
    
  13.             {
    
  14.                 FirstServiceClient client = new FirstServiceClient();
    
  15.                 Console.WriteLine(client.GetData(key));
    
  16. 
    
  17.                 key = Console.ReadLine();
    
  18.             }
    
  19.         }
    
  20.     }
    
  21. }
    
  22. 
    

20.Host项目上单击右键,选择调试—>启动新实例,待服务启动完成后,在Client项目上单击右键,选择调试—>启动新实例。输入任意字符回车,Client将调用FirstService服务GetData方法,返回一个字符串。输入q退出Client。

时间: 2024-12-28 06:21:53

(转载)WCF Demo的相关文章

Web Service Demo图解和WCF Demo图解对比

1.新建一个MVC web项目. 2.点击项目,[右键]→[添加]→[新建项] 3.点击[Web]→[Web服务] 4.恭喜,Web Service已经新建成功,里面的方法就可以参考着根据自己的需要进行修改了,是不是很简单. 5.Web Serice建成之后当然是开始调用了.在[引用]上[右键],添加[服务引用] 6.开始引用. 7.恭喜服务已经引用成功. 再看配置文件,会多出一些代码,这些都是自动生成的,可以看看理解理解. 8.开始在程序中调用方法了 9.到此为止Web Service的建立到

[转载]WCF和ASP.NET Web API在应用上的选择

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html http://msdn.microsoft.com/en-us/library/jj823172.aspx http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api 在最近发布的Visual Studio 2012及.NET 4.5中, 微软正式推出新的网络服务框架ASP.NET Web API.作

【转】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系列之一个简单的Demo

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

将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)

前天刚写了篇文章使用Bootstrap为你的博客园自定义轮播图片(今天将图片加载的顺序调整了下,不在访问的时候直接加载,而是页面加载最后在脚本里面动态添加dom元素),虽说技术含量不怎么高,但是大家还算感兴趣.其实对博主来说最关键是博客的积分在涨.所以趁热打铁,再来一篇使用wcf+js ajax跨域请求数据同步空间说说的帖子. 因为是请求qq说说的数据,所以要登陆我的qq,这个很麻烦,总不能让每个访客都登陆的qq,然后把数据取出来吧,而且qq也没有相关的接口提供,登陆的时候还要处理验证码.所以这

Wcf:可配置的服务调用方式

添加wcf服务引用时,vs.net本来就会帮我们在app.config/web.config里生成各种配置,这没啥好研究的,但本文谈到的配置并不是这个.先看下面的图: 通常,如果采用.NET的WCF技术来架构SOA风格的应用,我们会把项目做一些基本的分层,如上图: 01. contract层:通常定义服务的接口(即服务契约ServiceContract,指明该服务提供了哪些方法可供外部调用).以及接口方法中传输的Model定义(即:数据契约DataContract,指明方法中的对象参数的Clas

WCF入门教程系列六

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

Android Studio通过Ksoap2连接WCF

<环境> Android Studio:1.1 Visual Studio:2013 Ksoap2:3.4 运行:Server2012R2 + IIS8.0 + xiaomi4.4.2 <目的> 通过VS建立一个简单的WCF服务HelloService,并提供服务方法SayHello,AS中通过Ksoap2连接到该服务并调用SayHello方法,并得到返回数据. 参考: http://blog.sina.com.cn/s/blog_87131d9a0101rmwg.html htt