[WCF]WCF起航
解决方案概览:

Client:windows 控制台应用程序。
WcfService1: windows 服务应用程序。
WCFWebTest:asp.net 空web应用程序。
变量程序命名、结构可能不是那么规范,重点在与说明问题。
- 建立WCF服务项目。
在解决方案上面点右键->添加->新建项目->wcf服务应用程序(图标是齿轮带3个小箭头)。
删掉自动生成的服务和协议。
- 添加服务。
在wcf服务项目上点右键,点添加->新建项->wcf服务。本例中建立了两个服务,User.svc 和Animal.scv。建立服务后,会自动生成对应的协议(接口),IUser、IAnimal.
- 测试方法创建。
在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
- 测试实例调用。
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端调用
- 调用结果
winform端:

web端:

后续如果还有进一步发现或者问题修改还会继续补充。
[WCF]WCF起航的更多相关文章
- Dynamics AX 2012 R2 Service Middle Tier WCF WCF转发
参考了蒋金楠老师08年的文章.好吧,那时候我才大二.大三,大神果然是大神. http://www.cnblogs.com/artech/archive/2008/09/01/1280939.html ...
- (WCF) WCF and Service Debug
需要做一个多程序间的通讯,采用WCF和WCF Service是目前的选择. 需求:和产品进行通讯,和用户有交互操作,并将最后结果传送个DB 基本思路: 1. 用WPF客户端程序和产品进行通讯,获取必要 ...
- WCF WCF的宿主
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- web service, wcf, wcf rest, web api之间的区别
在.NET Framework中,有很多种技术可以创建基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等.网上有很多的文章教我们如何开发.使用这几种技 ...
- (WCF) WCF Service Hosting.
3 Options. 1. Host inside of an application. 2. Host into Windows service. 3. Host into IIS 参考: http ...
- WCF学习系列汇总
最近在学习WCF,打算把一整个系列的文章都”写“出来,包括理论和实践,这里的“写”是翻译,是国外的大牛写好的,我只是搬运工外加翻译.翻译的不好,大家请指正,谢谢了.如果觉得不错的话,也可以给我点赞,这 ...
- c# 动态调用WCF方法笔记!
//动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...
- WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】
http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...
- WCF学习总结
1. WCF简介 WCF (Windows Communication Foundation)是由微软发展的一组数据通信的应用程序开发借口.WCF由服务地址(Address) .协议绑定 (Bindi ...
随机推荐
- 转: seajs手册与文档之 -- require规则
require 规则 正确拼写 不要修改 使用直接量 动态依赖的小提示 书写规则 使用 SeaJS 书写模块代码时,需要遵循一些简单规则: 1. 正确拼写 在模块代码中,第一个参数 必须 命名为 re ...
- android中使用DisplayMetrics获取屏幕参数
--关于Density int android.graphics.Bitmap.getDensity(),返回bitmap-density(密度).默认的density就是当前display-dens ...
- IT第十八天 - 类的封装、继承、重载、上周总结★★★
IT第十八天 上午 封装 1.关键字this,是表示该类在实例化时的对象,即this.表示为该对象的属性 2.类的数据保护,set.get方法的写法规则,为了之后的反射机制的读取数据,set方法中对于 ...
- JSON XML IO数据操作
一.XML解析 通过继承org.xml.sax.helpers.DefaultHandler类,覆写characters(),startDocument(),startElement(),endEle ...
- js模态窗口
最近在看js,正好公司用的框架中用到了模态窗口,以前没有接触过,现在把模态窗口的用法先记下来. 常用的浏览器chrome,Firefox,ie11,这三种分别支持document.open(),win ...
- 限制QLineEdit的数值输入范围(一共4种限制器:QDoubleValidator, QIntValidator, QRegExpValidator, 和QRegularExpressionValidator)
在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360].Qt提供了QIntValidator和Q ...
- redis(四)redis与Mybatis的无缝整合让MyBatis透明的管理缓存
redis的安装 http://liuyieyer.iteye.com/blog/2078093 redis的主从高可用 http://liuyieyer.iteye.com/blog/207809 ...
- php前端控制器2
Front Controllers act like centralized agents in an application whose primary area of concern is to ...
- 进入MFC讲坛的前言(五)
框窗.视图和文档及其关系 MFC架构的另外一个特色是它的框窗.视图和文档这个三位一体的结构,它是一个典型的MVC(Model.View and Controler)结构.严格的讲,框窗不属于MVC中的 ...
- CreateFile函数使用方法详细介绍
CreateFileThe CreateFile function creates or opens the following objects and returns a handle that c ...