服务三要素:ABC
A:adress在哪里(传输方式信息)
B:binding:怎么去实现(与地址的传输方式要匹配)
C:Contract做什么(服务契约)第一步
大体步骤:
都要引用servicemodel
新建类库:
新建项:接口(方便重用)——定义方法,添加model引用,定义契约
新建项目:
Windows窗体应用程序:添加项目引用
新建类:实现接口操作
其中的一个方法:获得用户信息:链接数据库、sql语句
SqlConnection conn = new SqlConnection(@"Server=PHEOBEM;DataBase=WCFText;userid=sa;pwd=mjx;");
配置文件
具体的代码:
service
namespace WCFServiceDemo
{
/// <summary>
/// 服务契约
/// </summary>
[ServiceContract]
public interface IHelloService
{
[OperationContract]
DateTime getDateTime();
[OperationContract]
DataTable getUserInfo();
}
}
具体的实现类:
namespace WCFWinformHello
{
/// <summary>
/// 实现接口方法,即服务方法
/// </summary>
public class HelloService:WCFServiceDemo.IHelloService
{
public DateTime getDateTime()
{
return DateTime.Now;
}
public System.Data.DataTable getUserInfo()
{
string connstring = @"Data Source=PHEOBEM;Initial Catalog=WCFText;Persist Security Info=True;User ID=sa";
//SqlConnection conn = new SqlConnection(@"Server=PHEOBEM;DataBase=WCFText;userid=sa;pwd=mjx;");
SqlConnection conn = new SqlConnection(connstring);
SqlDataAdapter sda = new SqlDataAdapter("select * from tbUser", conn);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
}
}
配置文件;
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<services><!-- 链接服务 接口/及其实现 -->
<!--name:具体实现服务契约WCFServiceDemo的类-->
<!--behaviorConfiguration配置下面的serviceBehaviors-->
<service name="WCFWinformHello.HelloService" behaviorConfiguration="TestBehavior">
<host> <!--宿主--><!--宿主--><!--宿主-->
<baseAddresses>
<!--基地址:协议、计算机、端口、路径-->
<add baseAddress="http://localhost:8080/Hello"/>
</baseAddresses>
</host>
<!--终点地址: address上有省略, binding协议这里是http协议, contract:契约,接口:方法-->
<endpoint address="" binding="basicHttpBinding" contract="WCFServiceDemo.IHelloService" ></endpoint>
</service>
</services>
<!--可选内容-->
<behaviors>
<serviceBehaviors>
<!--上面的behaviorConfiguration-->
<behavior name="TestBehavior">
<!--可以访问-->
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
客户端通过host调用:
运行时最好是以“管理员身份”运行
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.ServiceModel;
namespace WCFWinformHello
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//宿主host
ServiceHost host = null;
private void button1_Click(object sender, EventArgs e)
{
//实现哪个服务 WCFWinformHello.HelloService
host = new ServiceHost(typeof(WCFWinformHello.HelloService));
host.Open();
//简单说明
label1.Text = "服务已经启动";
}
}
}
后记:
一张图胜过千言万语,此处省略*个字
最好的生活状态就是对什么都不在乎,只有这样才能真正的洒脱,不奢求、不期待于他人,平平淡淡,心如止水,也是一种境界;总之看淡了就好