码迷,mamicode.com
首页 > 其他好文 > 详细

不引用服务使用WCF,编写客户端代理类

时间:2016-09-30 07:49:08      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

首先在解决方案中新建一个类库TestService.cs 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace WCFService
{
    [ServiceContract]
    public interface IHelloWCFService
    {
        [OperationContract]
        string HelloWCF();
    }

    public class HelloWCFService : IHelloWCFService
    {
        public string HelloWCF()
        {
            return "Hello WCF!";
        }
    }
    class TestService
    {
    }
}

  然后编译一下,这样在bin文件夹就会有一个WCFService.dll动态链接库

2.在HelloWCFService中引用WCFService.dll

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

namespace HelloWCFService
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceHost host = new ServiceHost(typeof(WCFService.HelloWCFService));
            WSHttpBinding httpBinding = new WSHttpBinding(SecurityMode.None);
            host.AddServiceEndpoint(typeof(WCFService.IHelloWCFService), httpBinding, "http://localhost:2589/");
            host.Open();
            Console.WriteLine("服务已启动");
            Console.Read();
            host.Close();
        }
    }

   
}

3.此时从服务端启动服务即可。

至此,服务端工作到此结束,当然了,这不是在IIS上部署,而是使用控制台启动服务的。

接下来就是客户端代理了,

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

namespace FiveWCFClient
{
    class Program
    {
        static void Main(string[] args)
        {
            EndpointAddress remoteAddress = new EndpointAddress("http://localhost:2589/");
            HelloWCFClient client = new HelloWCFClient(new WSHttpBinding(SecurityMode.None), remoteAddress);
            string result = client.HelloWCF();
            client.Close();
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }


    public class HelloWCFClient : ClientBase<IHelloWCFService>, IHelloWCFService
    {
        public HelloWCFClient(System.ServiceModel.Channels.Binding binding, EndpointAddress remoteAddress)
            : base(binding, remoteAddress)
        { }
        public string HelloWCF()
        {
            return base.Channel.HelloWCF();
        }
    }
}

这是启动客户端,将会返回服务端方法的返回值。

不引用服务使用WCF,编写客户端代理类

标签:

原文地址:http://www.cnblogs.com/osay/p/5922521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!