• .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
     
  • 相关阅读:
    Mybatis插件之Mybatis-Plus的实体类注解篇
    Mybatis插件之Mybatis-Plus(SpringBoot)
    Mybatis插件之Mybatis-Plus(传统模式)
    Java中简单测试FastDFS的文件上传
    Linux下部署FastDFS
    SpringBoot中使用 RabbitMQ -测试
    RabbitMQ的安装(Windows环境下)
    SpringBoot中使用aop-测试
    正则表达式之图文混排
    正则表达式的使用总结
  • 原文地址:https://www.cnblogs.com/llcdbk/p/9048654.html
Copyright © 2020-2023  润新知