一、开发环境

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

最新文章

  1. [System] CentOS虚拟机系统克隆后的网络配置
  2. Objective-C( Foundation框架 一 NSDictionary (NSMutaleDictionary))
  3. FMDB 多线程使用
  4. HDU1502 Regular Words
  5. [POLITICS] S Korea lawmakers vote to impeach leader
  6. OpenCV学习(一)
  7. [Leetcode] Container With Most Water ( C++)
  8. enumerate小技巧和列表推导式
  9. Undefined symbols for architecture armv7错误解决方法
  10. grep命令及基本正则表达式
  11. scrapy爬取西刺网站ip
  12. Mysql原理与优化
  13. spring-boot 参考链接
  14. 浅谈Vue之双向绑定
  15. 利用 JMetal 实现大规模聚类问题的研究(一)JMetal配置
  16. Android Handler 异步调用修改界面与主线程
  17. 简单入门dos程序
  18. java中的date类型转换为js中的日期显示 我改
  19. knockoutjs -- if 绑定
  20. Bitcoin: A Peer-to-Peer Electronic Cash System(比特币论文翻译)

热门文章

  1. 二级域名相同的情况下子页面调用父页面的js方法
  2. Java日期LocalDate使用
  3. Ubuntu 16.04安装TortoiseSVN(基于CrossOver)
  4. Zookeeper学习 &amp; Paxos
  5. Jafka源码分析——LogManager
  6. 使用shell分页读取600万+的MySQL数据脚本
  7. 从编译器源代码中提取ARMv8的指令编码
  8. 告诉大家我是如何在14:00秒杀到 《深入理解Bootstrap》
  9. RPC和微服务
  10. build.gradle解析