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 WCFService
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IUser”。
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}

6.在User.svc.cs文件中,实现具体的方法

namespace WCFService
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“User”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 User.svc 或 User.svc.cs,然后开始调试。
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
            return wcfName;
        }
    }
}

7.将User.svc设置为启动项,并运行项目,VS会自动调用WCF的客户端测试工具

8.点击要测试的方法名,然后在请求体中输入值

9.点击调用,在相应窗口会出现该方法的返回值。

10.点击XML,可以看到传输的原始数据格式

(1)请求报文

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IUser/ShowName</Action>
  </s:Header>
  <s:Body>
    <ShowName xmlns="http://tempuri.org/">
      <name>Kimisme</name>
    </ShowName>
  </s:Body>
</s:Envelope>

(2)响应报文

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header />
  <s:Body>
    <ShowNameResponse xmlns="http://tempuri.org/">
      <ShowNameResult>WCF服务,显示姓名:Kimisme</ShowNameResult>
    </ShowNameResponse>
  </s:Body>
</s:Envelope>

三、应用

我们把上面的WCF程序部署到IIS,然后实现服务器A的应用程序来访问服务器B上的WCF程序,实现服务器端的应用程序通讯

1.运行IIS上的WCF程序

注:SvcUti所在目录为:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe

2.新建一个Web项目,并新建一个一般处理程序WCFTest.ashx

namespace WCFClient
{
    /// <summary>
    /// WCFTest1 的摘要说明
    /// </summary>
    public class WCFTest1 : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            UserClient user = new UserClient();
            string msg = user.ShowName("Kimisme");
            context.Response.Write(msg);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

同时在项目中添加对上图中的http://localhost:9003/User.svc?singleWsdl引用

3.运行VS可以看到如下页面

4.参考文章

http://www.tuicool.com/articles/uAjMvyn

http://www.cnblogs.com/iamlilinfeng/category/415833.html

时间: 2024-10-07 22:40:20

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

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

一.什么是SuperSocket 以下是作者的介绍 执行以下命令,获取SuperSocket项目 $ git clone https://github.com/kerryjiang/SuperSocket 二.项目结构 三.开发过程 1.新建一个控制台项目ConsoleApp 1.1引用相关项目 1.2从Solution Items中引进日志文件 1.3设置SuperSocket.SocketBase45的log4net文件属性设置为[复制到本地] 2.编写Main方法 1 using Syst

DirectX11 学习笔记4 - 一个完整的封装框架

本程序主要由5个文件组成.1个CPP 4个H文件  本来H文件可以分为4个CPP4个H,但是感觉太多了,就写到一起了 XMain 这个文件就是windows程序的入口函数 <span style="font-size:14px;">//入口 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow) { XWindow *xwindow=new

WCF学习笔记 -- 如何用C#开发一个WebService

假设所有工程的命名空间是demo. 新建一个C#的ClassLibrary(类库)工程. 在工程引用中加入System.ServiceModel引用. 定义接口,你可以删除自动生成的代码,或者直接修改代码来添加接口. [ServiceContract] Interface IMath { [Operationcontract] Int add (int a, int b); } 实现接口 添加一个新类,如Math实现该接口. Public class Math : IMath{ Int add(

WCF学习笔记(一)

WCF是什么? 官方解释: Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点. 服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务.终结点可以是从服务终结点请求数据的服务客户端.简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流. 网络收集: Windows通信基础(Windows Commu

wcf 学习笔记1

1. wcf 中的所有消息均为SOAP消息,注意WCF的消息与传输协议无关,与WEB服务不同,因此WCF服务可以在不同的协议之间传输,而不仅限于HTTP 2. wcf的每一个服务都有一个唯一的地址,地址包含两个元素:服务位置和传输协议:服务位置包括机器名,站点,通讯端口,管道或队列,以及一个可选的特定路径或URI统一资源标识 3. wcf 通讯协议有:http ,tcp , peer network , ipc , msmq ,使用命名管道的服务只能接收来自同一台机器的调用,每台机器只能打开一个

wcf 学习笔记2

服务契约 我们知道,serviceContrac特性能够将接口或者类公开为面向服务的契约,允许开发者使用c#语言编程,把类似接口这样的语法结构公开为WCF契约和服务. 操作重载,基于WSDL的操作不支持操作重载,但是,我们可以手动的启动操作重载,使用operationContract特性的name属性,为操作指定别名,如下: [ServiceContract] interface ICalculator { [OperationContract(Name="AddInt")] int

iOS: 学习笔记, 添加一个带界面约束的控制器

1. 创建一个空iOS应用程序(Empty Application). 2. 添加加控制器类. 修改控制器类的viewDidLoad 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 //创建标题 5 UILabel *header = [[UILabel alloc] init]; 6 header.text = @"欢迎来到我的世界!"; 7 header.textAlignment = NSTextAlignmentCenter

WCF学习笔记 -- 基本概念

WCF是实现WebService的一种微软提出的技术,整合了.Remote, .NET及ASP.NET服务的一种框架.是Windows Communication Foundation的缩写.WebService就是分布式应用程序间实现互操作性的一种标准.它与语言和平台无关,你可以使用任务语言编写发布到任何平台.它在底层通过SOAP协议来传送数据. WebService必须包含的几个要素: Address – 地址,也就是在哪找到该服务.地址必须唯一. Binging – 绑定协议,即通过什么方

Access应用笔记&lt;四&gt;-一个完整的自动化报表搭建过程

距离之前的三篇日志已经很久啦,今天终于完成了一个比较完整的自动化报表搭建过程 基于公司数据保密原则,样板就不放到网上来了,简单说一下背景: 这次access实现的功能包括: 1)为部门整体搭建了一个员工基本资料数据库,里面包括从各个系统里获得的员工信息,如Zhang San,一个系统里叫San Zhang,一个系统叫sazhang,一个系统叫sun Zhang.这些信息汇总后,存在部门共享盘里,包括此次的Access,都是直接链接到这个总access表里,这样,有新员工来的时候,只需要更新一个a