博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[WCF]WCF起航
阅读量:4931 次
发布时间:2019-06-11

本文共 2796 字,大约阅读时间需要 9 分钟。

解决方案概览:

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. 测试实例调用。
1  static void Main(string[] args) 2         { 3             string a = Console.ReadLine(); 4               5             //根据建议,也这么实例化一个 6             SRUserWSDL.UserClient b = new SRUserWSDL.UserClient(); 7  8             //调用方法 9             a = b.ShowName(a);10             //关闭连接 11             b.Close();12             //将返回的结果展示在屏幕上 13             Console.WriteLine(a);14 15             a = Console.ReadLine();16 17             //实例化一个参数更改的方式18             //Service在本地建立的时候,可能是localhost,但是发布的时候,该ip地址可能会发生变化。19             //BasicHttpBinding_IAnimal 这个字段来自 客户端(调用端) 的config里面。而不是WCF服务的服务段的config里面20             AnimalService.AnimalClient c = new AnimalService.AnimalClient("BasicHttpBinding_IAnimal", "http://192.168.159.142/WcfService1/Animal.svc");21 22             a = c.DoWork(a);23 24             c.Close();25 26             Console.WriteLine(a);27 28             a = Console.ReadLine();29 30             //另一种连接地址变化的方法31             AnimalService.AnimalClient d = new AnimalService.AnimalClient();32 33             d.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://192.168.159.142/WcfService1/Animal.svc"); 34 35             a = d.DoWork(a);36             d.Close();37 38             Console.WriteLine(a);39 40             Console.ReadKey();41         }
winform端调用
1  protected void Page_Load(object sender, EventArgs e)2         {3             AnimalService.AnimalClient c = new AnimalService.AnimalClient("BasicHttpBinding_IAnimal", "http://192.168.159.142/WcfService1/Animal.svc");4 5             Response.Write(c.DoWork("webtest"));6             Response.Flush();7         }
web端调用
  1. 调用结果

winform端:

web端:


 

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

转载于:https://www.cnblogs.com/Xuhaiyang/p/4250093.html

你可能感兴趣的文章
busybox里的僵尸进程为何那么多
查看>>
python debug
查看>>
java 连接数据库之一个完整的函数
查看>>
mysql脚本
查看>>
OllyDBG 入门系列教学--让你瞬间成为破解高手
查看>>
Dubbo点滴(2)之集群容错
查看>>
检测不到兼容的键盘驱动程序
查看>>
listbox用法
查看>>
冲刺第九天 1.10 THU
查看>>
传值方式:ajax技术和普通传值方式
查看>>
Linux-网络连接-(VMware与CentOS)
查看>>
寻找链表相交节点
查看>>
linq 学习笔记之 Linq基本子句
查看>>
[Js]布局转换
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>