解决方案概览:

Client:windows 控制台应用程序。
WcfService1: windows 服务应用程序。
WCFWebTest:asp.net 空web应用程序。

变量程序命名、结构可能不是那么规范,重点在与说明问题。


  1. 建立WCF服务项目。

在解决方案上面点右键->添加->新建项目->wcf服务应用程序(图标是齿轮带3个小箭头)。

删掉自动生成的服务和协议。

  1. 添加服务。

在wcf服务项目上点右键,点添加->新建项->wcf服务。本例中建立了两个服务,User.svc 和Animal.scv。建立服务后,会自动生成对应的协议(接口),IUser、IAnimal.

  1. 测试方法创建。

    在IUser中,定义一个方法接口。ShowName,用来接收一个字符串,返回一个字符串。

    [ServiceContract]
public interface IUser
{
[OperationContract]
string ShowName(string name);
}

IUser

    在IAnimal中,定义一个方法接口。DoWork,也用来接收一个字符串,返回一个字符串。

[ServiceContract]
public interface IAnimal
{
[OperationContract]
string DoWork(string a);
}

IAnimal

    记得在方法前面增加

[OperationContract]

    在Animal.scv 和User.svc 中分别实现接口方法。

    public class User : IUser
{
#region IUser 成员 public string ShowName(string name)
{
return string.Format("Test:{0}", name);
} #endregion
}

User

public class Animal : IAnimal
{
public string DoWork(string a)
{
return string.Format("Animal Test:{0}", a);
}
}

Animal

  1. 测试实例调用。
  static void Main(string[] args)
{
string a = Console.ReadLine(); //根据建议,也这么实例化一个
SRUserWSDL.UserClient b = new SRUserWSDL.UserClient(); //调用方法
a = b.ShowName(a);
//关闭连接
b.Close();
//将返回的结果展示在屏幕上
Console.WriteLine(a); a = Console.ReadLine(); //实例化一个参数更改的方式
//Service在本地建立的时候,可能是localhost,但是发布的时候,该ip地址可能会发生变化。
//BasicHttpBinding_IAnimal 这个字段来自 客户端(调用端) 的config里面。而不是WCF服务的服务段的config里面
AnimalService.AnimalClient c = new AnimalService.AnimalClient("BasicHttpBinding_IAnimal", "http://192.168.159.142/WcfService1/Animal.svc"); a = c.DoWork(a); c.Close(); Console.WriteLine(a); a = Console.ReadLine(); //另一种连接地址变化的方法
AnimalService.AnimalClient d = new AnimalService.AnimalClient(); d.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://192.168.159.142/WcfService1/Animal.svc"); a = d.DoWork(a);
d.Close(); Console.WriteLine(a); Console.ReadKey();
}

winform端调用

  protected void Page_Load(object sender, EventArgs e)
{
AnimalService.AnimalClient c = new AnimalService.AnimalClient("BasicHttpBinding_IAnimal", "http://192.168.159.142/WcfService1/Animal.svc"); Response.Write(c.DoWork("webtest"));
Response.Flush();
}

web端调用

  1. 调用结果

winform端:

web端:


后续如果还有进一步发现或者问题修改还会继续补充。

[WCF]WCF起航的更多相关文章

  1. Dynamics AX 2012 R2 Service Middle Tier WCF WCF转发

    参考了蒋金楠老师08年的文章.好吧,那时候我才大二.大三,大神果然是大神. http://www.cnblogs.com/artech/archive/2008/09/01/1280939.html ...

  2. (WCF) WCF and Service Debug

    需要做一个多程序间的通讯,采用WCF和WCF Service是目前的选择. 需求:和产品进行通讯,和用户有交互操作,并将最后结果传送个DB 基本思路: 1. 用WPF客户端程序和产品进行通讯,获取必要 ...

  3. WCF WCF的宿主

    一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...

  4. web service, wcf, wcf rest, web api之间的区别

    在.NET Framework中,有很多种技术可以创建基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等.网上有很多的文章教我们如何开发.使用这几种技 ...

  5. (WCF) WCF Service Hosting.

    3 Options. 1. Host inside of an application. 2. Host into Windows service. 3. Host into IIS 参考: http ...

  6. WCF学习系列汇总

    最近在学习WCF,打算把一整个系列的文章都”写“出来,包括理论和实践,这里的“写”是翻译,是国外的大牛写好的,我只是搬运工外加翻译.翻译的不好,大家请指正,谢谢了.如果觉得不错的话,也可以给我点赞,这 ...

  7. c# 动态调用WCF方法笔记!

    //动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...

  8. WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】

    http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...

  9. WCF学习总结

    1. WCF简介 WCF (Windows Communication Foundation)是由微软发展的一组数据通信的应用程序开发借口.WCF由服务地址(Address) .协议绑定 (Bindi ...

随机推荐

  1. QT学习 之 文本文件读写

    上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读的文件.为了操作这种文件,我们需要使用QTextStream类.QTextStream和QDataS ...

  2. BZOJ 1601 [Usaco2008 Oct]灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...

  3. Cocos2d-x 创建自己定义项目模板

    你是否以前为cocos方便高速开发而兴奋,你是否以前为各种工具的便利开发而感动,但如今的你是否为每次创建一个新的项目都是HelloWorldScene而苦恼? 好吧,事实上我也感觉到了,每次创建一个项 ...

  4. Android Testing(1) 浅尝Android测试的奥秘

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 仅供学习和交流使用,翻译不好勿喷,请只摘除不合适的地方 Testing The Android fram ...

  5. goahead 移植

    1.网上下载goahead-3.1.-0-src.tgz包 2.解压 tar -zxvf goahead-3.1.-0-src.tgz 3.编译 cd goahead-3.1.-0 make CC=a ...

  6. hadoop -- mapreduce执行过程

    1.运行mapreduce程序  ---run2.本次运行将会生成呢个一个Job , 于是JobClient向JobTracker申请一个JobID 标识该Job.3.JobClient将Job需要的 ...

  7. ZOJ 2972 Hurdles of 110m 【DP 背包】

    一共有N段过程,每段过程里可以选择 快速跑. 匀速跑 和 慢速跑 对于快速跑会消耗F1 的能量, 慢速跑会集聚F2的能量 选手一开始有M的能量,即能量上限 求通过全程的最短时间 定义DP[i][j] ...

  8. 基于FPGA的DW8051移植(二)

    基于上一篇博文继续,本来想换到oc8051,但是还是不甘心,弄了这么久还是没有弄出来,真是打击屎了. 上一篇说3f进入了operation code所以判断是代码错误,后来发现不可以这么判断. 因为地 ...

  9. static timing analysis 基础

    此博文依据 特权同学在电子发烧友上的讲座PPT进行整理而成. static timing analysis   静态时序分析基础 过约束:有不必要的约束,或者是约束不能再某一情况下满足.——约束过头了 ...

  10. mysql 创建临时节点

    use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; use IO::Socket; my $zk = ZooKeeper->new(ho ...