当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
-
asp.net教程之在客户端使用WCF服务
在客户端使用WCF服务
当客户端添加了WCF服务的引用后,就能够非常方便的使用WCF服务中提供的方法进行应用程序开发。在客户端应用程序的开发中,几乎看不到服务器端提供的方法的实现,只能够使用服务器端提供方的方法。对于客户端而言,服务器端提供的方法是不透明的。1.ASP.NET客户端
在ASP.NET客户端中,可以使用WCF提供的服务实现相应的应用程序开发,例如通过地名获取麦当劳的商店的信息,而不想要在客户端使用数据库连接字串等容易暴露服务器端的信息,通过使用WCF服务提供的方法能够非常方便的实现这一点。Aspx页面看代码如下所示。
<body>
<form id="form1" runat="server">
<div>
输入地名 :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<br />
获得的结果:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="检索" />
</div>
</form>
</body>
上述代码在页面中拖放了两个Textbox控件分别用于用户输入和用户结果的返回,并拖放了一个按钮控件用于调用WCF服务中的方法并返回相应的值。.cs页面代码如下所示。
protected void Button1_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(TextBox1.Text))
{
//开始使用WCF服务
ServiceReference1.Service1Client ser = new Web.ServiceReference1.Service1Client();
TextBox2.Text = ser.GetShopInformation(TextBox1.Text); //实现方法
}
else
{
TextBox2.Text = "无法检索,字符串为空"; //输出异常提示
}
}
上述代码创建了一个WCF服务所提供的类的对象,通过调用该对象的GetShopInformation方法进行本地应用程序开发。上述代码运行后如图18-20和图18-21所示。
图18-20 实现检索功能 图18-21 实现异常处理
2.Win Form客户端
在Win Form客户端中使用WCF提供的服务也非常的方便,其使用方法基本同ASP.NET相同,这也说明了WCF应用的开发极大的提高了开发人员在不同客户端之间的开发效率,节约了开发成本。在Win Form客户端中拖动一些控件作为应用程序开发提供基本用户界面,示例代码如下所示。
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox(); //创建textBox
this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); //创建TimePicker
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(13, 13); //实现textBox属性
this.textBox1.Name = "textBox1"; //实现textBox属性
this.textBox1.Size = new System.Drawing.Size(144, 21); //实现textBox属性
this.textBox1.TabIndex = 0; //实现textBox属性
//
// dateTimePicker1
//
this.dateTimePicker1.Location = new System.Drawing.Point(166, 13); //实现TimePicker属性
this.dateTimePicker1.Name = "dateTimePicker1"; //实现TimePicker属性
this.dateTimePicker1.Size = new System.Drawing.Size(114, 21); //实现TimePicker属性
this.dateTimePicker1.TabIndex = 1; //实现TimePicker属性
this.dateTimePicker1.ValueChanged //实现TimePicker属性
+= new System.EventHandler(this.dateTimePicker1_ValueChanged);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); //实现Form属性
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; //实现Form属性
this.ClientSize = new System.Drawing.Size(292, 62); //实现Form属性
this.Controls.Add(this.dateTimePicker1); //添加Form控件
this.Controls.Add(this.textBox1); //添加Form控件
this.Name = "Form1"; //实现Form属性
this.Text = "Form1"; //实现Form属性
this.ResumeLayout(false);
this.PerformLayout();
}
上述代码在Win From窗体中创建了一个TextBox控件和一个DataTimePicker控件,并向窗体注册了dateTimePicker1_ValueChanged事件,当DataTimePicker控件中的值改变后,则会输出相应天数的销售值。在前面的WCF服务中,为了实现销售值统计,创建了一个GetSum方法,在Win From窗体中无需再实现销售统计功能,只需要调用WCF服务提供的方法即可,示例代码如下所示。
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
ServiceReference1.Service1Client ser = new WindowsForm.ServiceReference1.Service1Client();
textBox1.Text = ser.GetSum(Convert.ToDateTime(dateTimePicker1.Text)).ToString();
}
上述代码使用了WCF服务中提供的GetSum方法进行了相应天数的销售额的统计,运行后如图18-22所示。
图18-22 Win From客户端使用WCF服务
创建和使用WCF服务不仅能够实现不同客户端之间实现相同的功能,还通过WCF应用提供了一个安全性、可依赖、松耦合的开发环境,对于其中任何一种客户端的实现,都不会暴露服务器中的私密信息,并且对于其中的某个客户端进行任何更改,也不会影响其他客户端,更不会影响到WCF服务器,这对应用程序开发和健壮性提供了良好的环境。
18.6 小结
本章简单的介绍了WCF的基本知识,包括什么是WCF和为什么需要WCF。WCF在现在的中大型应用程序开发中起到了非常重要的作用,使用WCF技术能够实现分布式的应用程序开发和管理,WCF为应用程序开发提供了安全、可依赖和松耦合的开发环境。本章还包括:q WCF基础:讲解了基本的WCF知识,包括WCF技术的组成和为何需要WCF。
q WCF应用:通过实例讲解了如何创建一个WCF应用,并修改和创建相应的方法实现WCF服务中的方法。
q WCF消息传递:简单的介绍了WCF消息传递的几种模式和消息操作。
q 使用WCF服务:介绍了如何在客户端中添加WCF引用并使用WCF引用。
本章只是简单的讲解了WCF的基础知识,本书并不是专门进行WCF知识的讲解,而且WCF知识需要一定的开发经验和编程水平,所以本书并没有详细的讲解WCF技术。但是在ASP.NET开发中,一些中大型的项目同样需要使用WCF进行分布式应用,从而实现不同的客户端对ASP.NET应用的访问,了解基本的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.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式