wcf mysql_C# 一个WCF简单实例

WCF实例(带步骤)

本篇转自百度文档,自己试过,确实可以用。

以订票为例简单应用wcf

新建一个wcf服务应用程序

471ad50327941e303a04c4c1a6f79f60.png

在IService1.cs定义服务契约

namespace WcfDemo

{

// 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。

[ServiceContract] // 服务合同 即提供服务的接口或类

public interface IService1

{

[OperationContract]

/* 增加车票的方法*/

void AddTicket(int count);

[OperationContract]

/*购买车票的方法*/

int BuyTickets(int Num);

[OperationContract] //服务契约 即提供服务的实现方法

/*查询车票的方法*/

int GetRemainingNum();

// 任务: 在此处添加服务操作

}

// 使用下面示例中说明的数据约定将复合类型添加到服务操作。

[DataContract] //数据契约

public class Ticket

{

bool boolCount = true;//判断是否还有车票

int howmany = 10;//还有多少车票

[DataMember]

/*判断是否还有票*/

public bool BoolCalue

{

get { return boolCount; }

set {

if (HowMany > 0)

{

boolCount = false;

}

else

{

boolCount = true;

}

}

}

[DataMember]

/*返回票数*/

public int HowMany

{

get { return howmany; }

set { howmany = value;}

}

}

}

在Service1.svc中实现契约服务

namespace WcfDemo

{

// 注意: 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。

public class Service1 : IService1

{

Ticket T=new Ticket();

/*实现添加票数的方法*/

public void AddTicket(int count)

{

T.HowMany=T.HowMany+count;

}

/*实现返回票数的方法*/

public int GetRemainingNum()

{

return T.HowMany;

}

/*实现购买车票的方法*/

public int BuyTickets(int Num)

{

if (T.BoolCalue)

{

T.HowMany = T.HowMany - Num;

return 1;

}

else

{

return 0;

}

}

}

}

添加宿主程序用于监测服务

添加WinForm项目加入解决方案

界面如下图:

e3b56186c4a1055aa94e045f90066a69.png

界面上两个按钮:

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

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

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

后台代码为:

应用命名空间 using System.ServiceModel;

添加引用 wcf服务生成的dll文件

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

ServiceHost host = null;//定义 ServiceHost

private void button1_Click(object sender, EventArgs e)

{

host = new ServiceHost(typeof(WcfDemo.Service1));//WcfDemo.Service1 为引用的dll中的服务

host.Open();//启动服务

this.label1.Text = "服务已启动";

}

private void button2_Click(object sender, EventArgs e)

{

if (host.State != CommunicationState.Closed)//判断服务是否关闭

{

host.Close();//关闭服务

}

this.label1.Text = "服务已关闭";

}

}

接下来配置app.config

程序运行结果:

261b0f11bb69ef8ecd6c3bf644f548c9.png在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务

89ac3e01b0fda1c53ee966949d7eae5f.png

到这服务以及服务主机都已经创建好了下面该创建测试客户机了!新建个WinForm程序做为我们的测试客户机界面两个按钮一个label

624304f7188e7f88afc86e187552243b.png

购买车票:调用wcf服务的BuyTickets()方法查询车票:调用wcf服务的GetRemainingNum()方法label用于显示运行信息为项目添加服务引用地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)

6b74612bdec41021802e66bcb2b3a7ed.png后台代码为:

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

ServiceReference1.Service1Client TClient = new WinFormsClient.ServiceReference1.Service1Client();

//声明客户端调用

private void button1_Click(object sender, EventArgs e)

{

int i = TClient.BuyTickets(2); //调用WCF中的方法

if (i == 1)

{

this.label1.Text = "购买成功";

}

this.label1.Text += "剩余车票还有" + TClient.GetRemainingNum().ToString();

}

private void button2_Click(object sender, EventArgs e)

{

this.label1.Text = "";

this.label1.Text = TClient.GetRemainingNum().ToString();//调用WCF中的方法

}

}

点击购买车票时调用wcf的BuyTicket()方法并返回剩余车票的信息

点击查看车票时调用wcf的GetRemainingNum()得到剩余车票信息

运行结果如下:

点击购买车票:

70c72ae8e4c67723580daa7ec5f70798.png

点击查询票数时:166a0adfea4f758e6326556574740cda.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单C# WCF 服务的例子: 首先,在 Visual Studio 中创建一个新的 WCF 服务应用程序项目。然后,在服务契约中定义一个简单的操作: ```C# [ServiceContract] public interface IMyService { [OperationContract] string GetMessage(string name); } ``` 这个操作接受一个字符串类型的参数,返回一个字符串类型的消息。 接下来,在服务实现中实现这个操作: ```C# public class MyService : IMyService { public string GetMessage(string name) { return "Hello, " + name + "!"; } } ``` 这个实现接受一个字符串类型的参数,返回一个拼接了该参数的消息。 然后,在配置文件中定义一个终结点: ```XML <system.serviceModel> <services> <service name="MyService"> <endpoint address="http://localhost:8080/MyService" binding="basicHttpBinding" contract="IMyService"/> </service> </services> </system.serviceModel> ``` 这个终结点定义了服务的地址、绑定和契约等信息。 最后,在 host 中启动服务: ```C# ServiceHost host = new ServiceHost(typeof(MyService)); host.Open(); ``` 这个 host 启动了 MyService 类型的服务。 现在,WCF 服务已经启动并且可以接收客户端的请求。在客户端中,你可以使用类似下面的代码来调用服务: ```C# ChannelFactory<IMyService> factory = new ChannelFactory<IMyService>( new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/MyService")); IMyService proxy = factory.CreateChannel(); string message = proxy.GetMessage("World"); Console.WriteLine(message); ``` 这个客户端创建了一个 IMyService 类型的代理对象,并调用了它的 GetMessage 方法,将 "World" 作为参数传递,并将返回的消息打印到控制台上。 这就是一个简单C# WCF 服务的例子,它展示了如何定义服务契约、实现服务操作、配置服务终结点和启动服务 host。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值