WCF简介-01

WCF Windows Communication Foundation

1.1 新建一个"空白解决方案"

1.2 在解决方案中添加类库IBLL

  1.2.1 添加接口IUserInfoService  

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace IBLL
{
    [ServiceContract]
   public  interface IUserInfo
    {
        [OperationContract]
        int Add(int a ,int b);
    }
}
IUserInfo

  1.2.2 添加引用 System.ServiceModel

1.3 添加类库BLL

  1.3.1 添加引用IBLL

  1.3.2 添加类UserInfoService实现接口IBLL

using IBLL;
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BLL { public class UserInfoService:IUserInfoService { public int Add(int a, int b) { return a + b; } } }
UserInfoService

1.4 将WCF布置到控制台程序

  1.4.1 添加控制台程序Host

  1.4.2 添加引用BLL和IBLL

  1.4.3 修改App.config文件  

<?xml version="1.0" encoding="utf-8" ?>


<configuration>


  <system.serviceModel>


    <services>


      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration">


        <host>


          <baseAddresses>


            <add baseAddress="http://localhost:8000/"/>


          </baseAddresses>


        </host>


        <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint>


      </service>


    </services>


    <behaviors>


      <serviceBehaviors>


        <behavior name="behaviorConfiguration">


          <serviceMetadata httpGetEnabled="true"/>


        </behavior>


      </serviceBehaviors>


    </behaviors>


  </system.serviceModel>


</configuration>
App.config

  1.4.4 添加引用System.ServiceModel  

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(BLL.UserInfoService)))
            {
                host.Open();
                Console.WriteLine("服务启动成功!");
                Console.ReadKey();
            }
        }
    }
}
Main

  1.4.5 进入debug目录,以管理员身份启动

1.4.6 启动客户端测试服务程序

  VS安装目录下F:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\WcfTestClient.exe

 2 客户端程序

  2.1 控制台程序-新建控制台程序

F:\Users\home\Documents\Visual Studio 2013\WCFDemo\Solution1\Client

svcutil http://localhost:8000/?wsdl /o:UserInfoServiceClient.cs

2.2 将生成的文件包括到项目中

2.3 勇output.config文件替换掉App.config文件(删App,将output重命名)

2.4 添加引用BLL,IBLL和ServiceModel

2.5 client 中main方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            UserInfoServiceClient client = new UserInfoServiceClient();
            int sum = client.Add(3,6);
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }
}
Main

2.6 改造自动生成的

//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.42000
//
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------



//[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
//[System.ServiceModel.ServiceContractAttribute(ConfigurationName="IUserInfoService")]
//public interface IUserInfoService
//{
    
//    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserInfoService/Add", ReplyAction="http://tempuri.org/IUserInfoService/AddResponse")]
//    int Add(int a, int b);
    
//    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserInfoService/Add", ReplyAction="http://tempuri.org/IUserInfoService/AddResponse")]
//    System.Threading.Tasks.Task<int> AddAsync(int a, int b);
//}

using IBLL;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public interface IUserInfoServiceChannel : IUserInfoService, System.ServiceModel.IClientChannel
{
}

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class UserInfoServiceClient : System.ServiceModel.ClientBase<IUserInfoService>, IUserInfoService
{
    
    public UserInfoServiceClient()
    {
    }
    
    public UserInfoServiceClient(string endpointConfigurationName) : 
            base(endpointConfigurationName)
    {
    }
    
    public UserInfoServiceClient(string endpointConfigurationName, string remoteAddress) : 
            base(endpointConfigurationName, remoteAddress)
    {
    }
    
    public UserInfoServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
            base(endpointConfigurationName, remoteAddress)
    {
    }
    
    public UserInfoServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
            base(binding, remoteAddress)
    {
    }
    
    public int Add(int a, int b)
    {
        return base.Channel.Add(a, b);
    }

    //public System.Threading.Tasks.Task<int> AddAsync(int a, int b)
    //{
    //    return base.Channel.AddAsync(a, b);
    //}
}
UserInfoServiceClient

2.7 分别启动两个exe文件

3 我们也可以自己建立一个客户端

  3.1 创键控制台应用程序

  3.2 添加服务引用

  3.3 运行结果

转载于:https://www.cnblogs.com/YK2012/p/6687682.html

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值