解决方案概览:

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. linux 内核分析之list_head

    转自:http://www.cnblogs.com/riky/archive/2006/12/28/606242.html 一.链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一 ...

  2. cmake 学习笔记(二)

    在 Cmake学习笔记一 中通过一串小例子简单学习了cmake 的使用方式. 这次应该简单看看语法和常用的命令了. 简单的语法 注释 # 我是注释 命令语法 COMMAND(参数1 参数2 ...) ...

  3. Objective-C中的类目(Category),延展(Extension)

    类目和延展的作用都是为了扩展一个类. Objective-C中的类目(Category) 一.类目的定义和作用 类目也叫分类,英文Category,在没有原类.m文件的基础上,给该类添加方法. 比如, ...

  4. ios8 swift开发:显示变量的类名称

    var ivar = [:] ivar.className // __NSDictionaryI var i = 1 i.className // error: 'Int' does not have ...

  5. cocos2d-x3.6 连连看连通画线

    我的博客:http://blog.csdn.net/dawn_moon 网上看到非常多人写的连连看,都没有画连线的实现.事实上要话连线挺简单的.cocos2d-x 提供了一个非常方便的绘图形的类.Dr ...

  6. hdu4597 Play Game

    Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  7. spark sql 以JDBC为数据源

    一.环境准备: 安装mysql后,进入mysql命令行,创建测试表.数据: 将 mysql-connector-java 的jar文件拷贝到 \spark_home\lib\下,你可以使用最新版本,下 ...

  8. POJ 1458 最长公共子序列 LCS

    经典的最长公共子序列问题. 状态转移方程为 : if(x[i] == Y[j]) dp[i, j] = dp[i - 1, j - 1] +1 else dp[i, j] = max(dp[i - 1 ...

  9. DE1-SOC连接设定

    将电源供应器插上电源接口. 使用白色的USB Type B线材将计算机与DE1-SoC上的USB-Blaster II接口连接.此接口主要负责FPGA配置以及HPS Debug使用. 使用Mini-U ...

  10. 用nohup执行python程序时,print无法输出

    python -u参数:关闭输出缓冲 nohup python -u test.py > nohup.out 2>&1 &