WCF探索之旅(二)——从零开始WCF实例

    对于WCF,上篇博客已经做了简单介绍,这里跟大家一起做一个入门的小Demo,方便大家快速上手。

    依照下面的过程,实现自己的第一个WCF实例吧!

1、新建服务端项目

首先,新建一个WCF应用程序,没啥可说的,VS轻松完成。

新建的项目目录如下

2、重命名文件

这里我们一用户服务为例,重命名接口和实现类。

3、定义实体类User

	namespace WcfServiceDemo
	{
	    public class User
	    {
	        private string userid;
	        private string username;
	        private string password;
	
	
	        public string Userid
	        {
	            get { return userid; }
	            set { userid = value; }
	        }
	
	        public string Username
	        {
	            get { return username; }
	            set { username = value; }
	        }
	
	        public string Password
	        {
	            get { return password; }
	            set { password = value; }
	        }
	    }
	}

4、完成服务端接口

	namespace WcfServiceDemo
	{
	    [ServiceContract]//次标记说明该接口是公开给外部的
	    public interface IUserService
	    {
	        /// <summary>
	        /// 添加用户
	        /// </summary>
	        /// <param name="enUser"></param>
	        /// <returns></returns>
	        [OperationContract]//此标记说明这个方法是公开给外部的。
	        string AddUser(User enUser);
	
	        /// <summary>
	        /// 删除用户
	        /// </summary>
	        /// <param name="userid"></param>
	        /// <returns></returns>
	        [OperationContract]
	        string DeleteUser(string userid);
	    }
	}

5、完成服务端实现类

	namespace WcfServiceDemo
	{
	    public class UserServiceImpl : IUserService
	    {
	        
		   public string AddUser(User enUser)
	        {
	            //这里实现添加用户操作
	            return "调用到了添加用户方法!";
	        }
	
	        public string DeleteUser(string userid)
	        {
	            //这里实现删除用户操作
	            return "调用到了删除用户方法!";
	        }
	    }
	}
    到这里,我们的 WCF 服务端就算是开发完成了。你可以把这个服务生成 dll 发布到服务器中,这里为了简单起见,我们自己添加一个宿主程序,模拟服务器发布。后续将介绍如何发布服务到服务器。

6Server端添加WinForm项目加入解决方案

界面上两个按钮:

启动服务按钮:用于启动wcf服务

停止服务按钮:用于停止wcf服务

Label:用于显示服务相关信息

如图:

首先添加引用 wcf服务生成的dll文件、引用WcfServiceDemo.UserServiceImpl项目引用

代码如下:

	namespace WCFServerDemo
	{
	    public partial class Form1 : Form
	    {
	        public Form1()
	        {
	            InitializeComponent();
	        }
	        ServiceHost host = null;//定义 ServiceHost 
	        private void button1_Click(object sender, EventArgs e)
	        {
	            host = new ServiceHost(typeof(WcfServiceDemo.UserServiceImpl));//WcfServiceDemo.UserServiceImpl 为引用的dll中的服务 
	            host.Open();//启动服务 
	            this.label1.Text = "服务已启动";
	        }
	
	        private void button2_Click(object sender, EventArgs e)
	        {
	            if (host.State != CommunicationState.Closed)//判断服务是否关闭 
	            {
	                host.Close();//关闭服务 
	            }
	            this.label1.Text = "服务已关闭";
	        }
	    }
	} 

7.在Server段添加App.config应用程序配置文件,配置访问地址等

	<configuration>
	  <system.serviceModel>
	    <services>
	      <!--添加服务-->
	      <service name="WcfServiceDemo.UserServiceImpl" behaviorConfiguration="ServiceBehavior">
	        <!--name 必须与代码中的host实例初始化的服务一样behaviorConfiguration 行为配置 -->
	        <host>
	          <baseAddresses>
	            <!--添加调用服务地址-->
	            <add baseAddress="http://localhost:8000/"/>
	          </baseAddresses>
	        </host>
	        <!--添加契约接口 contract="WcfServiceDemo.IUserService" WcfServiceDemo.IUserService为契约接口 binding="wsHttpBinding" wsHttpBinding为通过Http调用-->
	        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceDemo.IUserService"></endpoint>
	      </service>
	    </services>
	    <!--定义ServiceBehavior的行为-->
	    <behaviors>
	      <serviceBehaviors>
	        <behavior name="ServiceBehavior">
	          <serviceMetadata httpGetEnabled="true"/>
	          <serviceDebug includeExceptionDetailInFaults="false"/>
	        </behavior>
	      </serviceBehaviors>
	    </behaviors>
	  </system.serviceModel>
	</configuration>

    在服务启动后可通过appConfigbaseAddress节点中的baseAddress地址查看Wcf服务

    到这服务以及服务主机都已经创建好了

    最后,我们建立一个测试客户端


8、新建一个winform项目,与原来的项目不在一个解决方案中。

结构如图

界面如图

添加服务引用


启动前面写的服务端后,点击启动服务。在这里输入在app.config设置的地址,点击前往将能看到我们发布的服务了,点击确定,完成引用的添加

客户端后台代码

	namespace wcfClient
	{
	    public partial class Form1 : Form
	    {
	        public Form1()
	        {
	            InitializeComponent();
	        }
	        UserService.UserServiceClient TClient = new UserService.UserServiceClient();
	        private void button1_Click(object sender, EventArgs e)
	        {
	            this.label1.Text = "";
	            this.label1.Text = TClient.AddUser(new UserService.User());
	           
	        }
	
	        private void button2_Click(object sender, EventArgs e)
	        {
	            this.label1.Text = "";
	            this.label1.Text =  TClient.DeleteUser("111");
	        }
	    }
	}<span style="font-family: Arial, Helvetica, sans-serif;">	</span>

    好了,至此,一个完整的WCF实例完成了:包括服务端、客户端、服务宿主,也包含了使用WCF的主要的过程。

    试试吧!这才是.NET中比较有意思的东西啊。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值