WCF学习之路(一)
来源:互联网 发布:买逆战武器淘宝买 编辑:程序博客网 时间:2024/04/30 00:45
初次听说WCF是人事重构前期,在老师那里听到的这个词,当时对它没有概念,只知道它属于一种分布式的开发框架。现在开始参加ITOO项目,再次接触到WCF,ITOO框架中包含着WCF,所以必须进行系统学习了。
概念:
WCF,全称Windows Communication Foundation,是有微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。它是Windows平台上开发分布式应用最佳的实践方式。(来自百度)
组成部分:
1、网络服务的协议,即用什么网络协议开放客户端接入。
2、业务服务的协议,声明服务提供哪些业务。
3、数据类型声明,对客户端与服务器端通信的数据部分进行一致化。
4、传输安全性的相关定义。
契约:
WCF 的基本概念是以契约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。合约分成了四种:
数据契约(Data Contract),订定双方沟通时的数据格式。
服务契约(Service Contract),订定服务的定义。
操作契约(Operation Contract),订定服务提供的方法。
消息契约(Message Contract),订定在通信期间改写消息内容的规范。
上述内容是从百度中找到的关于WCF的一些基本概念,仅有这些概念是不行的,需要在实践中加深自己的认识和理解,下面通过一个小Demo来加深印象。
WCFDemo:
Server端的创建:
打开vs,选择Visual C# --> WCF --> WCF服务应用程序,如下图所示:
解决方案建立之后,程序会默认生成Servic和IService,我们也可以自行创建服务,如下:
建好的界面如下所示:
此时我们的Server端已经建好,Server端的代码如下:
IUser:
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WCFServerDemo{ // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IUser”。 //下面的两个契约标签必须有,使client端在引用时,可以识别是Server端的接口 [ServiceContract] //服务契约 public interface IUser { [OperationContract] //操作契约 string showName(string name); }}
User:
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WCFServerDemo{ // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“User”。 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 User.svc 或 User.svc.cs,然后开始调试。 public class User : IUser { //实现显示名称的方法 public string showName(string name) { return name +":WCF学习"; } }}
服务端建立好之后,需要进行发布,然后才能应用于client端。这里为了方便,就不在进行发布,用另外一种方法进行简单的获取Server端路径。邮件选择“在浏览器中查看”:
显示效果如下:
将上述的红色框中的地址复制,然后进行创建我们的client端。
Client端的创建:
首先建立一个空的Web应用程序:
添加服务引用:
效果显示:
添加完引用之后,再添加一个Web窗体:
HTML代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="User.aspx.cs" Inherits="WCFClientDemo.User" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> <asp:Button ID="btnShow" runat="server" Text="Button" OnClick="btnShow_Click" /> </div> </form></body></html>实现代码:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using WCFClientDemo.ServiceReference; //添加引用namespace WCFClientDemo{ public partial class User : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnShow_Click(object sender, EventArgs e) { //实例化UserClient,此类是通过添加Server端引用之后产生,主要是跟Server端建立连接 UserClient user = new UserClient(); //调用Server端方法 string result = user.showName(this.txtUserName.Text ); Response.Write(result); } }}
到此服务端和客户端就创建完成,在运行客户端之前,必须启动服务端。最终的显示效果如下:
小结:
刚开始接触WCF时,好多东西都不是特别明了,而且一开始传参时用的是实体,不知道传实体时还需要用到一些其他知识,比如数据契约的内容等,出现了好多错误。不过,也正是因为这些错误,让自己对WCF的运用机制更加熟悉。这还只是皮毛,还需要在今后的学习中深入学习WCF的调用过程以及它的作用机制。
- WCF学习之路(一)
- ITOO4.1之WCF学习(一)
- WCF学习笔记(一):WCF简介
- WCF 学习笔记 一WCF 基础(WCF基础概念)
- 学习WCF之路1:Hello WCF!
- 学习WCF之路2:配置WCF
- WCF学习总结(一)
- WCF学习(一)——了解WCF
- WCF学习(一)_Web Service+SOA+WCF简介
- 我的WCF学习(一)
- WCF学习过程和心得(一)
- 学习WCF(一)
- WCF学习笔记(一)
- wcf学习一
- WCF学习(一):实例
- WCF学习记录一
- WCF学习笔记一
- WCF学习(一)
- HDU2063——过山车(二分图,匈牙利算法2)
- C++ premer Plus 第6版第6章第5题 &&cin>>初步理解
- Android之获取手机IMEI号和IMSI号
- 【openjudge】数字组合
- Spring Boot:简化Spring应用初始搭建以及开发过程
- WCF学习之路(一)
- .NETMVC+WCF+EF框架搭建
- Android之将字符串转换为MD5码
- C++ Vector的基本操作和使用
- 《TCP/IP详解 卷1:协议》 读书笔记 第三章 IP:网际协议
- 远古程序员
- nyoj--1184--为了肾六(动态规划+滚动数组)
- Android之设置横屏、竖屏和全屏显示
- 简单的FTP共享文件pyftpdlib