WCF客户端代理

  • 创建类库WCFServiceProxy
  • 添加System.ServiceModel、WCFService(见上篇文章)引用
  • 创建类:BookServiceClient
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Text;
using System.Threading.Tasks;
using WCFService;
using WCFService.Models;

namespace WCFServiceProxy
{
    public class BookServiceClient : ClientBase<IBookService>, IBookService
    {
        public BookServiceClient() : base() { }
        public BookServiceClient(string endpointConfigurationName) : base(endpointConfigurationName) { }
        public BookServiceClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { }
        public BookServiceClient(string endpointConfigurationName, EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { }
        public BookServiceClient(Binding binding, EndpointAddress remoteAddress) : base(binding, remoteAddress) { }
        public bool Add(string name, double price)
        {
            return base.Channel.Add(name, price);
        }

        public List<Book> GetList()
        {
            return base.Channel.GetList();
        }
    }
}

创建类BookServiceProxy

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

namespace WCFServiceProxy
{
    public static class BookServiceProxy
    {
        private static string _clientEndpointName = "bookInfo";
        static List<Book> list = new List<Book>();
        public static bool Add(string name, double price)
        {
            BookServiceClient client = null;
            try
            {
                client = new BookServiceClient(_clientEndpointName);
                client.Add(name, price);
                client.Close();
                return true;
            }
            catch (Exception ex)
            {
                if (client != null && client.State != CommunicationState.Closed)
                {
                    client.Abort();
                    client = null;
                }
                return false;
            }
            finally
            {
                client = null;
            }
        }

        public static List<Book> GetList()
        {
            BookServiceClient client = null;
            try
            {
                client = new BookServiceClient(_clientEndpointName);
                list = client.GetList();
                client.Close();
                return list;
            }
            catch (Exception ex)
            {
                if (client != null && client.State != CommunicationState.Closed)
                {
                    client.Abort();
                    client = null;
                }
                return null;
            }
            finally
            {
                client = null;
            }
        }
    }
}

 

posted on 2014-03-16 18:27  朝着  阅读(396)  评论(0编辑  收藏  举报