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; } } } }