博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我们一起学习WCF 第一篇初识WCF(附源码供对照学习)
阅读量:6137 次
发布时间:2019-06-21

本文共 2822 字,大约阅读时间需要 9 分钟。

     前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰。但是通过项目对wcf的运用在脑海里面也算有了初步的模型。今天我就把我从开始wcf所遇到的困难以及解决方案一点点记下来,可能还有很多不足之处那我们一起共同学习。在学习之前我们有必要初步的看下百度百科对wcf的解释,让我们心中有这一个概念,然后建立项目,然后再次看概念,然后在去更深层的建立项目,然后再去理解这样反复的去做我相信可以做好wcf。那么下面我就会从初识wcf,wcf消息协定,文件传输,聊天室,wcf和socket的联合运用来写。不好之处大家提出来 我进行修正。

第一步:创建一个解决方案

创建一个解决方案我们需要创建4个类库

IService:契约层(也就是我们常说的接口层)

Service:服务层(实现契约层)

Hosting:服务端(可以理解为服务器)

Client:客户端(请求调用)

第二步:创建接口层

1  ///  2     /// 服务契约 3     ///  4     [ServiceContract] 5    public interface IWcfService 6     { 7         ///  8         /// 测试wcf方法 9         /// 10         /// 请求用户名11         /// 
12 [OperationContract]13 string TestMethod(string Name);14 }
IWcfService

注释1:[ServiceContract] 这个表示一种特性,告诉编译器该类型属于服务契约,同理[OperationContract] 告诉编译器该类型属于操作契约

注释2:记得引用ServiceModel

第三步:实现接口层

1 public class WcfService:IService.Interface.IWcfService2     {3        public string TestMethod(string Name)4        {5            return "Hello 我是:" + Name;6        }7     }
WcfService

第四步:实现服务端

1 static void Main(string[] args) 2         { 3             Uri baseadress = new Uri("http://localhost:8080/"); 4             using (ServiceHost host = new ServiceHost(typeof (WcfService), baseadress)) 5             { 6                 WSHttpBinding binding = new WSHttpBinding(); //绑定 7                 binding.Security.Mode = SecurityMode.None; 8                 host.AddServiceEndpoint(typeof(IWcfService), binding, ""); 9                 ServiceMetadataBehavior mdBehavior = new ServiceMetadataBehavior()10                 {11                     HttpGetEnabled = true12                 };13                 host.Description.Behaviors.Add(mdBehavior);14                 host.Opened += delegate15                 {16                     Console.WriteLine("服务启动");17                 };18                 try19                 {20                     host.Open();21                 }22                 catch (Exception ep)23                 {24                     Console.WriteLine(ep.Message);25                     host.Abort();26                     host.Close();27                 }28                 Console.ReadKey();            29             }   30         }
服务端

注释3:Uri baseadress=new Uri("http://localhost:8080/")  baseadress表示一个基址(绝对地址)  区别于终结点地址(相对地址)最终地址是由(基址+终结点地址组成)

注释4:什么是终结点

终结点有三部分组成简称叫做ABC,A表示Address,B表示Binding,C表示Contract。 

Address:终结点地址,就是相对地址,比喻现在终结点地址是“admin”,那么地址就会是http://localhost:8080/admin。当然也可以默认“”,根据自己实际情况作出决定

Binding:指定如何与终结点进行通信 包括这三种模式 传输协议(比喻TCP或HTTP) 消息文本(比喻2进制) 安全模式(SSL 或 SOAP )

Contract:就是我们自己定下的契约(就是接口)

注释5:

ServiceMetadataBehavior mdBehavior = new ServiceMetadataBehavior()

{
HttpGetEnabled = true
};

这句话的目的:为了能让客户端通过添加服务能找到这个服务所以对主机进行描述(没有这句话无法通过基址找到服务端)

第五步:运行服务端,客户端寻找基址

寻找基址

客户端运行结果:

这样第一篇关于wcf就介绍完毕了。

 

转载于:https://www.cnblogs.com/LipeiNet/p/4580822.html

你可能感兴趣的文章
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>