WCF通过配置文件搭建—— 一起嗨

服务三要素: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 = "服务已经启动";
        }
    }
}

后记:

一张图胜过千言万语,此处省略*个字


    最好的生活状态就是对什么都不在乎,只有这样才能真正的洒脱,不奢求、不期待于他人,平平淡淡,心如止水,也是一种境界;总之看淡了就好

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值