(原创)用参数传文本
2013-04-10 18:59 Keiven_LY 阅读(220) 评论(0) 编辑 收藏 举报5.1 项目说明
该实例的服务宿主为控制台应用程序,客户端为Windows窗体应用程序。
5.2 项目架构
5.3 项目开发过程
第一步:创建一个空的解决方案,命名为“WCFTest_7”,(可以任意取名);
第二步:在上述解决方案中,文件——>添加——>新建项目,选择控制台应用程序,取名Host,这个控制台程序用来作为服务的宿主程序;
第三步:在解决方案中,右键Host——>添加——>新建项,选择WCF服务,取名TextService,系统自动生成ITextService.cs、TextService.cs、App.config。其中ITextService.cs为接口,在此添加契约,相当于web service中的methord;TextService.cs为契约的实现方法;
ITextService.cs中的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace Host { // 注意: 如果更改此处的接口名称 "ITextService",也必须更新 App.config 中对 "ITextService" 的引用。 [ServiceContract] public interface ITextService { [OperationContract] void DoWork(); //这个是默认的,不需要管 //下面定义了三个契约,分别表示:紧急广播,广播和MP3播放功能 [OperationContract] string Alern(string value); [OperationContract] string Broadcast(int id_1, int id_2); [OperationContract] string MP3(int id_1, int id_2); } }
TextService.cs中的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace Host { // 注意: 如果更改此处的类名 "TextService",也必须更新 App.config 中对 "TextService" 的引用。 public class TextService : ITextService { public void DoWork() { } //这个是默认的,不需要管 //下面是实现三个契约的方法,分别表示:紧急广播,广播和MP3播放功能 public string Alern(string value) { return value; } public string Broadcast(int id_1, int id_2) //注意参数设置 { return string.Format("你所输入的节点{0}区{1}号,广播调用成功!", id_1, id_2); } public string MP3(int id_1, int id_2) //注意参数设置 { return string.Format("你所输入的节点{0}区{1}号,MP3播放成功!", id_1, id_2); } } }
App.config文件原则上可以不用改,但是address太长了
(默认的为baseAddress=http://localhost:8731/Design_Time_Addresses/Host/TextService/)
修改为baseAddress=http://localhost:8731/TextService/
修改Program.cs中的代码:
using System; using System.ServiceModel; //这里需要添加引用 using System.Collections.Generic; using System.Linq; using System.Text; namespace Host { class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(Host.TextService))) { host.Open(); Console.ReadLine(); host.Close(); } } } }
第四步:保存,启动项目,系统在项目保存文件夹下自动生成Host.exe ,路径为:项目保存文件夹——>Host——>bin——>Debug——>Host.exe,双击Host.exe文件,启动服务;
第五步:添加客户端应用程序,文件——>添加——>新建项目——>Windows,选择Windows窗体应用程序,取名TextClient。接下来设计用户计算器界面如下:
接下来,添加服务引用,将服务端的地址填入地址(A)栏,点击前往,出现TextService服务,修改命名空间为TextService,如下图,点击“确定”即可
接下来,双击界面上的三个Button按钮,转到Button的click事件,整个代码如下:
using System; using System.ServiceModel; //这个必须添加 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TextClient { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { using (TextService.TextServiceClient proxy_1 = new TextService.TextServiceClient()) //创建代理,用于连接服务器 { label3.Text = proxy_1.Alern("全区进入紧急状况!!"); } } private void button2_Click(object sender, EventArgs e) { using (TextService.TextServiceClient proxy_2 = new TextService.TextServiceClient()) //创建代理,用于连接服务器 { label3.Text = proxy_2.Broadcast(Convert.ToInt32(this.txt1.Text), Convert.ToInt32(this.txt2.Text)); } } private void button3_Click(object sender, EventArgs e) { using (TextService.TextServiceClient proxy_3 = new TextService.TextServiceClient()) //创建代理,用于连接服务器 { label3.Text = proxy_3.MP3(Convert.ToInt32(this.txt1.Text), Convert.ToInt32(this.txt2.Text)); } } } }
5.4 运行结果
单击“紧急广播”按钮,显示结果:
在文本框中输入节点号后,单击“广播”按钮,显示结果:
在文本框中输入节点号后,单击“MP3”按钮,显示结果: