一.新建wcf

如下图:wcf可以简历俩种形式

1.库文件,就是一个类库文件,可以用windows服务或控制台开启。

2.服务应用程序,可以直接IIS上面发布。

二.库文件自动生成的类

接口类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5.  
  6. using System.Text;
  7.  
  8. namespace WCFLib
  9. {
  10. using System.ServiceModel;
  11.  
  12. /*
  13. WCF服务的特点:
  14. * 1、在接口上必须贴上 [ServiceContract]标签来标记这个接口是一个wcf的服务
  15. * 2、在这个接口中的方法上贴上 [OperationContract] 标记这个方法是一个wcf的服务方法,可以被外界调用
  16. */
  17. [ServiceContract]
  18. public interface IService1
  19. {
  20. [OperationContract]
  21. string GetData(int value);
  22.  
  23. }
  24. }

实现类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5. using System.ServiceModel;
  6. using System.Text;
  7.  
  8. namespace WCFLib
  9. {
  10. /// <summary>
  11. /// WCF服务的实现类,它是用来处理wcf服务方法的逻辑代码的
  12. /// </summary>
  13. public class Service1 : IService1
  14. {
  15. public string GetData(int value)
  16. {
  17. return string.Format("你输入了: {0}", value);
  18. }
  19. }
  20. }

配置文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3.  
  4. <appSettings>
  5. <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  6. </appSettings>
  7. <system.web>
  8. <compilation debug="true" />
  9. </system.web>
  10. <!-- 部署服务库项目时,必须将配置文件的内容添加到
  11. 主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
  12. <system.serviceModel>
  13. <!-- services节点负责存放所有的WCF服务的-->
  14. <services>
  15. <!-- name 一定是配置为当前服务实现类的全名称 契约 (合同)-->
  16. <service name="WCFLib.Service1">
  17. <host>
  18. <baseAddresses>
  19. <!-- 表示当前Service1这个服务的地址,被服务器来监听-->
  20. <add baseAddress = "http://localhost:8733/Design_Time_Addresses/WCFLib/Service1/" />
  21. </baseAddresses>
  22. </host>
  23. <!-- 终结点,也是供服务器来监听,
  24. address="" :表示当前监听的地址使用上面host配置节点中的baseAddress中的地址
  25. 如果这个地址不为空,优先使用这个地址
  26. binding="basicHttpBinding" :表示客户端与wcf服务的通讯方式基于基本的http模式
  27. basicHttpsBinding: 表示表示客户端与wcf服务的通讯方式基于基本的https模式, 数据传输更加安全,但是速度要慢一些
  28. contract="WCFLib.IService1" :表示当前wcf服务Service1所对应的节点是谁
  29. -->
  30. <endpoint address="" binding="basicHttpBinding" contract="WCFLib.IService1">
  31. </endpoint>
  32.  
  33. <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。
  34. 类似于Webservices的元数据,客户端将来生成的代理类就是按照这个元数据中的描述信息来生成的-->
  35. <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
  36. <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  37. </service>
  38.  
  39. </services>
  40. <behaviors>
  41. <serviceBehaviors>
  42. <behavior>
  43. <!-- 为避免泄漏元数据信息,
  44. 请在部署前将以下值设置为 false -->
  45. <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
  46. <!-- 要接收故障异常详细信息以进行调试,
  47. 请将以下值设置为 true。在部署前设置为 false
  48. 以避免泄漏异常信息-->
  49. <serviceDebug includeExceptionDetailInFaults="False" />
  50. </behavior>
  51. </serviceBehaviors>
  52. </behaviors>
  53. </system.serviceModel>
  54.  
  55. </configuration>

控制台托管的代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace WCF服务的自托管
  8. {
  9. using System.ServiceModel;
  10. using WCFLib;
  11.  
  12. class Program
  13. {
  14. static void Main(string[] args)
  15. {
  16. //开启托管MenusMgr这个wcf的服务
  17. //如果ServiceHost() 的第二个参数不填写的话,自动去查找当前运行项目中的配置文件
  18. //所以要记得在当前项目的app.config中配置好wcf服务库的节点
  19. using (ServiceHost host = new ServiceHost(typeof(MenusMgr)))
  20. {
  21. //开启监听,等待客户端的连接
  22. host.Open();
  23.  
  24. Console.WriteLine("服务已经开启");
  25. Console.ReadKey();
  26. }
  27. }
  28. }
  29. }

三.客户端调用的方式

引用--添加服务引用--输入地址OK

四.引用好服务调用

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. namespace Client
  9. {
  10. using Client.WcfServer;
  11. public partial class WebForm1 : System.Web.UI.Page
  12. {
  13. protected void Page_Load(object sender, EventArgs e)
  14. {
  15.  
  16. }
  17.  
  18. protected void Button1_Click(object sender, EventArgs e)
  19. {
  20. MyServerClient my = new MyServerClient();
  21. string str = my.GetPerson("张三");
  22. this.TextBox1.Text = str;
  23. }
  24. }
  25. }

简述wcf应用的更多相关文章

  1. [翻译]15个最常见的WCF面试问题

    WCF和ASMX WebService的区别是什么? 最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯.但WCF可以使用任意协议(HTTP, ...

  2. 通过 WCF 实现点对点文件共享 z

    下载免费的项目源代码 下载项目的数据库 目录 简介 背景 为什么是WCF? WCF历史简述 WCF基础 点对点概念 代码分析(它是怎么工作的) 核心转化引擎层 下载管理层 服务层 代码的使用(如何运行 ...

  3. 浅议Grpc传输机制和WCF中的回调机制的代码迁移

    浅议Grpc传输机制和WCF中的回调机制的代码迁移 一.引子 如您所知,gRPC是目前比较常见的rpc框架,可以方便的作为服务与服务之间的通信基础设施,为构建微服务体系提供非常强有力的支持. 而基于. ...

  4. Android调用Web服务

    现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...

  5. .net面试中的一些常见问题与答案

    1.页面传值的方式及其优缺点?   Session,Application,Cookies,Requst.QueryString,Requst.Form,Server.Transfer(通过Conte ...

  6. 简述WebService与.NET Remoting的区别及适应场合 WCF

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/166990 为了 ...

  7. 再见WCF

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  8. WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成

    原文:WCF技术剖析之七:如何实现WCF与EnterLib PIAB.Unity之间的集成 在这之前,我写过深入介绍MS EnterLib PIAB的文章(参阅<MS Enterprise Li ...

  9. WCF Restful调用跨域解决方案

    目前很多项目中CRM更多扮演一个纯后台管理系统,用户更多的操作是在移动端执行,不管是安卓还是IOS甚至是H5.这里以H5为例,CRM提供数据接口,移动web端来调用接口进行数据处理,这里就会涉及到一个 ...

随机推荐

  1. ROS探索总结(四)——简单的机器人仿真

    前边我们已经介绍了ROS的基本情况,以及新手入门ROS的初级教程,现在就要真正的使用ROS进入机器人世界了.接下来我们涉及到的很多例程都是<ROS by Example>这本书的内容,我是 ...

  2. 2018 - Start Up

    转眼2017已经过去,从大四下学期出来实习,到现在工作一年多了,很遗憾没有经营好自己博客园&CSDN. 献上一篇鼓励工程师写blog的博客:https://kb.cnblogs.com/pag ...

  3. linq 初步认识

    linq to sql 类 介绍: linq如果不能用的话 重装一下vs就好了 LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言 ...

  4. ZROI2018提高day3t2

    传送门 分析 我们设A[i]表示点i有几个矿,B[i]表示这之中有几个矿是第一次出现,所以点i的贡献即为 (2^B[i]-1)*(2^(A[i]-B[i])) 注意减一的原因是第一次出现的矿应至少有一 ...

  5. Mat的迭代器使用

    如果你熟悉 C++的 STL 库,那一定了解迭代器(iterator)的使用.迭代器可以方便地遍历所有元素.Mat 也增加了迭代器的支持,以便于矩阵元素的遍历.下面的例程功能跟上一节的例程类似,但是由 ...

  6. 使用Serializable接口进行JAVA的序列化和反序列化

    OBJECT STREAMS – SERIALIZATION AND DESERIALIZATION IN JAVA EXAMPLE USING SERIALIZABLE INTERFACE Hite ...

  7. HttpGet和HttpPost处理重定向的区别

    get方法默认会处理302的重定向,response获取到的页面其实是重定向以后的页面,通过response.getStatusLine(),取到的值是200. 通过设置可以用post方法去请求或者把 ...

  8. [译]Javascript中的循环

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  9. 处理器适配器(handlerAdapter)执行源码分析(涉及到适配器模式)(九)

    适配器:实现很多接口统一管理. DispatcherServlet 组建的默认配置 HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,A ...

  10. 乱谈zip、rar文件格式

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2006.11.21最近更新:2006.11.25 目录一.目录表(TOC)与分卷(Volume)二.固实(solid)压缩方 ...