WCF服务

摘要:
添加完成后WCF服务就会被挂起,等待客户端对WCF服务中的方法进行调用,如图18-19所示。图18-18添加服务引用图18-19WCF服务主机已经启动分别为ASP.NET应用程序和WinForm应用程序添加WCF引用后,就可以在相应的应用程序中使用WCF服务提供的方法了。图18-20实现检索功能图18-21实现异常处理2.WinForm客户端在WinForm客户端中使用WCF提供的服务也非常的方便,其使用方法基本同ASP.NET相同,这也说明了WCF应用的开发极大的提高了开发人员在不同客户端之间的开发效率,节约了开发成本。

创建了一个WCF服务之后,为了能够方便的使用WCF服务,就需要在客户端远程调用服务器端的WCF服务,使用WCF服务提供的方法并将服务中方法的执行结果呈现给用户,这样保证了服务器的安全性和代码的隐秘性。

18.5.1 在客户端添加WCF服务
为了能够方便的在不同的平台,不同的设备上使用执行相应的方法,这些方法不仅不能够暴露服务器地址,同样需要在不同的客户端上能呈现相同的效果,这些方法的使用和创建不能依赖本地的应用程序,为了实现跨平台的安全应用程序开发就需要使用WCF。

创建了WCF服务,客户端就需要进行WCF服务的连接,如果不进行WCF服务的连接,则客户端无法知道在哪里找到WCF服务,也无法调用WCF提供的方法。首先需要创建一个客户端,客户端可以是ASP.NET应用程序也可以是WinForm应用程序。右击解决方案管理器,单击【项目】,在下拉菜单中选择【添加新项】,分别为该项目添加一个ASP.NET应用程序和一个WinForm应用程序,如图18-16和图18-17所示。

图18-16 添加Win Form应用程序 图18-17 添加ASP.NET应用程序

添加完成后在项目中就会出现这两个项目,分别为这两个项目添加WCF引用,右击当前项目,在下拉菜单中单击【添加服务引用】选项,在弹出窗口中单击【发现】按钮,即可发现WCF服务,如图18-18所示。添加完成后WCF服务就会被挂起,等待客户端对WCF服务中的方法进行调用,如图18-19所示。

图18-18 添加服务引用 图18-19 WCF服务主机已经启动

分别为ASP.NET应用程序和Win Form应用程序添加WCF引用后,就可以在相应的应用程序中使用WCF服务提供的方法了。

18.5.2 在客户端使用WCF服务
当客户端添加了WCF服务的引用后,就能够非常方便的使用WCF服务中提供的方法进行应用程序开发。在客户端应用程序的开发中,几乎看不到服务器端提供的方法的实现,只能够使用服务器端提供方的方法。对于客户端而言,服务器端提供的方法是不透明的。

1.ASP.NET客户端

在ASP.NET客户端中,可以使用WCF提供的服务实现相应的应用程序开发,例如通过地名获取麦当劳的商店的信息,而不想要在客户端使用数据库连接字串等容易暴露服务器端的信息,通过使用WCF服务提供的方法能够非常方便的实现这一点。Aspx页面看代码如下所示。

<body>

<form runat="server">

<div>

输入地名 :<asp:TextBox runat="server"></asp:TextBox>

<br />

<br />

获得的结果:<asp:TextBox runat="server"></asp:TextBox>

<br />

<br />

<asp:Button 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服务器,这对应用程序开发和健壮性提供了良好的环境
原文出处:http://www.wangluosky.cn/show.asp?id=2429

免责声明:文章转载自《WCF服务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇算法---BitMapffmpeg参数说明(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

layui 添加复选框checkbox后,无法正确显示及点击的方法

layui 添加复选框checkbox后,无法正确显示方式,这个是由于html里的样式添加 layui-form后,没有加载 form插件 ,具体如下: <body style="background-color: white;"> <div class="layui-form"> <div...

Android基于ksoap2调用WCF服务(二):Android篇

上一篇通过一个非常简单的例子,完成了一个WCF的服务。接下来介绍一下Android端。 Android端调用WCF,采用基于ksoap2包来实现。 下载地址(这个需要fan qiang访问,你们懂的):https://code.google.com/p/ksoap2-android/ 我用的3.3.0版本,我传到csdn上,上面地址如果不能访问,可以用这个...

原生js实现form表单序列化

当我们有form表单而且里面的表单元素较多时,咱们总不能一个个去获取表单元素内的值来进行拼接吧!这样会很让人蛋疼!为了方便与后台交互并且提高自己的开发效率,并且不让你蛋疼;我们一起用原生来写一个表单序列化方法: 先介绍一下jquery中有相应的表单序列化的方法: 1.serialize()方法 格式:var data = $("form").seriali...

JavaEE系列之(二)commons-fileupload实现文件上传、下载

一、文件上传概述     实现Web开发中的文件上传功能,需要两步操作:     1、在Web页面中添加上传输入项 <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="file...

laraveladmin新手的使用

1.添加页面 配置好laravel-admin的模板后 点击管理员管理里的菜单列表,输入如下信息即可 提交之后刷新页面,左侧菜单就会显示新增的广告管理的标签 2.定义路由 配置好前端的页面显示之后就要配置对应的路由了。 路由的配置信息在app=>Admin=>routes.php 直接在function下一行添加一个新的路由(被上传的水印...

asp.net core 系列 3 项目实战之:NetCore 的 Web 应用程序(参考自:Microsoft教程)

十年河东,十年河西,莫欺少年穷 学无止境,精益求精 概述:此教程介绍了生成 Razor Pages Web 应用的基础知识。具体分为如下部分 创建 Razor 页面 Web 应用 向 Razor 页面应用添加模型 基架(生成)Razor 页面 使用数据库 更新 Razor 页面 添加搜索 添加新字段 添加验证 首先,我们启用VS新建一个项目: 本篇主...