zoukankan      html  css  js  c++  java
  • .net core 下调用.net framework框架的WCF方法写法

    通过添加服务引用后生成的代码,可以得知首先要设置Basic连接写法的属性,并且设置WCF服务的地址:

    我在这里建立工厂类如下:

    using System;
    using System.ServiceModel;
    using System.ServiceModel.Channels;
    using ShoppingMall.Enums;
    
    namespace ShoppingMall.ClientBll
    {
        public class EndpointFactory
        {
            private static Binding GetBindingForEndpoint(EndpointConfigurationEnums endpointConfiguration)
            {
                if ((endpointConfiguration == EndpointConfigurationEnums.BasicHttpBinding_ICustomerService))
                {
                    BasicHttpBinding result = new BasicHttpBinding();
                    result.MaxBufferSize = int.MaxValue;
                    result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
                    result.MaxReceivedMessageSize = int.MaxValue;
                    result.AllowCookies = true;
                    return result;
                }
                throw new InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration));
            }
    
            private static EndpointAddress GetEndpointAddress(EndpointConfigurationEnums endpointConfiguration)
            {
                if ((endpointConfiguration == EndpointConfigurationEnums.BasicHttpBinding_ICustomerService))
                {
                    return new EndpointAddress("http://你的地址");
                }
                throw new InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration));
            }
    
            public static Binding GetDefaultBinding()
            {
                return GetBindingForEndpoint(EndpointConfigurationEnums.BasicHttpBinding_ICustomerService);
            }
    
            public static EndpointAddress GetDefaultEndpointAddress()
            {
                return GetEndpointAddress(EndpointConfigurationEnums.BasicHttpBinding_ICustomerService);
            }
        }
    
    }

    然后,在客户端调用时需要调用类继承ClientBase类并且继承WCF的接口,该类的类型是服WCF接口的类型

    并且要再客户端调用类的构造参数中继承ClientBase的构造方法,实例化Basic以及WCF服务的地址

    最后通过继承ClientBase的Channel方式调用服务方法,完全代码如下:

    using Microsoft.Extensions.Configuration;
    using ShoppingMall.IService;
    using ShoppingMall.Model;
    using System.Collections.Generic;
    using System.ServiceModel;
    
    namespace ShoppingMall.ClientBll
    {
        public class CustomerBll:ClientBase<ICustomerService>, ICustomerService
        {
            public IConfigurationRoot configuration; 
            public CustomerBll() : base(EndpointFactory.GetDefaultBinding(), EndpointFactory.GetDefaultEndpointAddress())
            {
    
            }
    
            public List<Buyer> GetBuyerList()
            {
                return Channel.GetBuyerList();
            }
    
            public bool InsertBuyerInfo(Buyer info)
            {
                return Channel.InsertBuyerInfo(info);
            }
    
        }
    }

    其次,WCF的服务接口应该有对应标记,例如:

    using ShoppingMall.Model;
    using System.Collections.Generic;
    using System.ServiceModel;
    
    namespace ShoppingMall.IService
    {
        /// <summary>
        /// 用户信息处理服务
        /// </summary>
        [ServiceContract]
        public interface ICustomerService
        {
            /// <summary>
            /// 获取买家列表
            /// </summary>
            /// <returns></returns>
            [OperationContract]
            List<Buyer> GetBuyerList();
    
            /// <summary>
            /// 添加买家信息
            /// </summary>
            /// <returns></returns>
            [OperationContract]
            bool InsertBuyerInfo(Buyer info);
        }
    
    
    }

    这样,接口标记:

    ServiceContract。
    方法标记:
    OperationContract
     
  • 相关阅读:
    《Centos服务器版安装教程》
    从CentOS官网下载系统镜像详细教程
    一键LNMP文件
    Centos 7 ip地址
    cmd常用命令
    bat命令
    JAVA学习资源整理
    DevOps 高效 shell 命令
    编程范式:命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)
    Java 中的函数式编程(Functional Programming):Lambda 初识
  • 原文地址:https://www.cnblogs.com/llcdbk/p/9048654.html
Copyright © 2011-2022 走看看