首页 > 代码库 > WCF创建简单程序

WCF创建简单程序

1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:

技术分享

  2.删除系统生成的两个文件IService1.cs与Service1.svc,当然你也可以直接在这两个自动生成的文件中编码。

  3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。代码如下:

 

using System.ServiceModel;namespace WCFService{    [ServiceContract]    public interface IUser    {        [OperationContract]        string ShowName(string name);    }}namespace WCFService{    public class User : IUser    {        public string ShowName(string name)        {            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);            return wcfName;        }    }}

 

大家可以看到,在WCF中的接口与普通接口的区别只在于两个特性,其他的和我们正常学习的接口一样。定义这两个特性要添加System.ServiceModel的引用。

[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 

此时我们的第一个WCF服务程序就建立好了,将User.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS2010自动调用了WCF的客户端测试工具以便我们测试程序:

技术分享

  我们双击上图中的 ShowName() 方法,出现如下图:

技术分享

  在请求窗口中的值中输入参数“你的姓名”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务,显示姓名:你的姓名”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑,即非常简单的打印姓名的方法,测试也成功了。那么我们怎么用呢?

我们可以在WCF测试客户端窗口长看到WCF服务的地址:http://localhost:2059/User.svc

我们可以在其他项目中添加服务引用来添加WCF服务,当然也可以把WCF服务发布到IIS上,然后然别人去调用。

接下来我们就以发布到IIS为例:

首先我们将WCF应用程序发布一下,然后部署在B服务器的IIS之上,如下图所示:

 

技术分享

  鼠标右键浏览Uesr.svc,在游览器中出现如下图所示,说明服务部署成功。

技术分享

   上图中的http://localhost/User.svc?wsdl即为我们要引用的服务地址。因为我们的IIS是在同一台计算机上,所以是localhost

我们这里以Web应用程序为例。

  新建解决方案,并且创建ASP.NET Web应用程序的项目。命名为:WCFClient,如下图所示:

 

 

 

技术分享

 

  (1)新建Asp.net页面,命名为:WcfTest.aspx。

 

  (2)添加在第五步中部署的服务的引用。如下图所示:

 

技术分享

 

  此时弹出添加服务引用的窗体,如下图所示:

 

技术分享

 

  我们在地址里写上我们寄宿在IIS上的WCF服务的地址服务路径,此处为:http://localhost/User.svc?wsdl,在名称空间处填写WCFService[此名称空间要在下面的客户端中引用]然后点击“前往”-->“确定”按钮。此时我们完成了对服务的引用。我们再次查看解决方案,里面多了Service References的文件夹,通过资源管理器打开后里面多了些文件,这些文件用于客户端向服务端的调用,现在先不用管他。

WcfTest.aspx.cs的代码如下:

 

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;//引用WCF服务的名称空间using WCFClient.WCFService;namespace WCFClient{    public partial class WCFTest : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {        }        protected void btnClick(object sender, EventArgs e)        {            UserClient user = new UserClient();            string result = user.ShowName(this.txtName.Text);            Response.Write(result);        }    }}

 

WCF创建简单程序