码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-16 23:07:35      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:

一、开发环境

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

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

标签:

原文地址:http://www.cnblogs.com/2star/p/5399406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!