zoukankan      html  css  js  c++  java
  • WCF学习笔记(1)-一个完整的例子

    一、开发环境

    IDE:VS2013

    OS:Win10

    IIS:IIS 10

    二、开发流程

    1.项目结构

    image

    2.添加一个WCF程序

    image

    3.删除系统自动生成的两个文件IService1.cs和Service1.svc

    4.添加自定义的WCF服务文件

    image

    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的客户端测试工具

    image

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

    image

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

    image

    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 SDKsWindowsv8.0AinNETFX 4.0 ToolsSvcUtil.exe

    image

    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引用

    image

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

    image

    4.参考文章

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

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

  • 相关阅读:
    Codeforces Bubble Cup 8
    Codeforces Bubble Cup 8
    BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树
    hdu 5279 Reflect phi 欧拉函数
    hdu 5278 Geometric Progression 高精度
    hdu 5428 The Factor 分解质因数
    hdu 5427 A problem of sorting 水题
    Codeforces Gym 100610 Problem A. Alien Communication Masterclass 构造
    Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP
    Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
  • 原文地址:https://www.cnblogs.com/kimisme/p/5399406.html
Copyright © 2011-2022 走看看