当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
-
asp.net教程之WCF应用 创建WCF应用
创建WCF应用
在Visual Studio 2008中,可以方便的创建WCF应用。在菜单栏中选择【文件】选项,在下拉菜单中单击【新建项目】选项,在弹出的【新建项目】窗口中选择WCF,如图18-7所示。图18-7 创建WCF服务库
创建WCF服务库后,应用程序会自动生成Server1.cs和IServer1.cs接口,IServer1.cs接口示例代码如下所示。
using System;
using System.Collections.Generic;
using System.Linq; //使用必要的命名空间
using System.Runtime.Serialization; //使用必要的命名空间
using System.ServiceModel; //使用必要的命名空间
using System.Text;
namespace _18_2
{
// 注意: 如果更改此处的接口名称“IService1”,也必须更新 App.config 中对“IService1”的引用。
[ServiceContract]
public interface IService1
{
[OperationContract] //声明契约
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// 任务: 在此处添加服务操作
}
// 使用下面示例中说明的数据协定将复合类型添加到服务操作
[DataContract]
public class CompositeType //创建类
{
bool boolValue = true; //创建字段
[DataMember]
string stringValue = "Hello "; //声明string变量
[DataMember]
public bool BoolValue //创建属性
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue //创建属性
{
get { return stringValue; }
set { stringValue = value; }
}
}
}
上述代码创建了一个IServer1接口,并通过ServiceContractAttribute标识服务契约,同样也通过DataContractAttribute、DataMemberAttribute来标识自定义数据类型和属性,示例代码如下所示。
[ServiceContract] //标识服务契约
public interface IService1 //创建接口
[DataContract]
public class CompositeType
创建接口后则需要实现接口,接口的实现在Server.cs文件内,示例代码如下所示。
public class Service1 : IService1 //实现接口
{
public string GetData(int value) //实现接口方法
{
return string.Format("You entered: {0}", value); //返回string值
}
public CompositeType GetDataUsingDataContract(CompositeType composite) //实现接口方法
{
if (composite.BoolValue) //实现方法代码
{
composite.StringValue += "Suffix"; //添加相应数据
}
return composite; //返回值
}
上述代码实现了IServer1接口中的方法,单击【运行】按钮或快捷键【F5】,WCF应用程序就能够运行,如图18-8所示。
从图18-8中可以看出,在Server1.cs文件中实现的方法都能够在测试客户端中看到,单击测试客户端中相应的方法就能够在客户端测试调用服务器端的方法,如图18-9所示。
图18-8 服务测试客户端 图18-9 测试方法调用
双击GetData方法后,在右侧选项卡中就会分为两层,这两层分别为请求和响应。在请求框中可以在值那一栏编写需要传递的值,编写完毕后单击【调用】按钮就能够实现服务器端方法的调用并在响应框中呈现相应的值。
18.3.2 创建WCF方法
一个简单的WCF应用程序运行后,就会发现其实WCF并没有想象中的复杂。WCF允许开发人员通过使用ServiceContractAttribute标识服务契约,同样开发人员还能够创建服务契约以提供客户端的方法的调用。在IServer1接口中首先需要定义该方法,示例代码如下所示。int GetSum(DateTime time); //定义接口方法
[OperationContract] //标识调用
string GetShopInformation(string address);
上述代码声明了两个方法,这两个方法分别为GetSum和GetShopInformation,,GetSum用于获取某一天麦当劳餐厅中出售总量,而GetShopInformation用于获取麦当劳地址和一些商店的信息,GetSum和GetShopInformation具体实现如下所示。
public int GetSum(DateTime time) //实现方法
{
int BreadNum = 10; //声明必要字段
int Milk = 5; //声明必要字段
int HotDryNuddle = 20; //声明必要字段
int today = BreadNum + Milk + HotDryNuddle; //实现计算
return today; //返回值
}
public string GetShopInformation(string address) //实现方法
{
if (address == "武汉") //判断地址
{
return "武汉麦当劳连锁店"; //返回相应结果
}
else if (address == "北京") //判断地址
{
return "北京麦当劳连锁店"; //返回相应结果
}
else if (address == "上海") //判断地址
{
return "上海麦当劳连锁店"; //返回相应结果
}
else
{
return "没有该连锁店"; //返回默认结果
}
}
在GetSum方法中,用于获取当天的销售总量,而GetShopInformation实现了商店信息的反馈,运行后如图18-10所示。
图18-10 创建方法
从图18-10中可以看出,GetShopInformation已经在测试客户端中服务器项目中显式了,并且输入了“武汉”这个信息,就能够返回“武汉麦当劳连锁店”。而GetSum方法并没有呈现在服务器项目中,这是因为GetSum方法并没有使用[OperationContract]标识进行声明,所以不会作为契约的一部分,若需要在客户端调用GetSum方法就必须使用[OperationContract]标识进行声明,示例代码如下所示。
[OperationContract]
int GetSum(DateTime time); //标识客户端方法
WCF应用程序运行后如图18-11所示。
图18-11 使用[OperationContract]标识
开发人员能够使用WCF快速的创建WCF应用程序并从客户端调用该方法,这样就能够在客户端隐藏服务器方法并且让客户端只关注逻辑实现而不需要关注底层是如何进行消息通信的。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式