.net core 下调用.nett 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
 

原文地址:https://www.cnblogs.com/llcdbk/p/9048654.html

时间: 2024-10-07 14:35:31

.net core 下调用.nett framework框架的WCF方法写法的相关文章

Python下调用Linux的Shell命令的方法

下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族 Python的exec系统方法同Unix的exec系统调用是一致的.这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回.( 这个看了点 help(os)  --> search "exec" 的相关介绍,但是没太搞明白咋使用) 1.2. os模块的system方法 system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果.这个方法比较适用于外部程序没

python-django rest framework框架之dispatch方法源码分析

1.Django的 CBV 中在请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法 class APIView(View): def dispatch(self, request, *args, **kwargs):#1.1 把wsgi的request进行封装 request = self.initialize_request(request, *args, **kwargs) self.request = request #此时

如何在ASP.NET Core中应用Entity Framework

注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity Framework 首先为大家提醒一点,.NET Core和经典.NET Framework的Library是不通用的,包括Entity Framework! 哪怎么办? 别急,微软为.NET Core发布了.NET Core版本的Entity Framework,具体配置方法与经典.NET Framew

基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】

基于SpringMVC下的Rest服务框架搭建[1.集成Swagger] 1.需求背景 SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的rest服务,通常这些服务要不就是用于手机app的开发,要不就是提供给第三方开发者使用,不管哪种情况,你都需要提供详细的说明给别人,而Swagger就是为这种情况而生的,通过在接口上的注解,生成可供第三方模拟测试和阅读的接口列表,既美观又使用,真是行走江湖之必备良药. [XmPlatform原创,转载的

NET Core 以及与 .NET Framework

简析.NET Core 以及与 .NET Framework的关系 简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. Windows Store AppModel & ASP.NET Core 1.0 三 .NET Core 与 .NET 其他平台的关系 1 .NET Core & .NET Framework 2 .NET Core &

.NET Core下的日志(2):日志模型详解

NET Core的日志模型主要由三个核心对象构成,它们分别是Logger.LoggerProvider和LoggerFactory.总的来说,LoggerProvider提供一个具体的Logger对象将格式化的日志消息写入相应的目的地,但是我们在编程过程中使用的Logger对象则由LoggerFactory创建,这个Logger利用注册到LoggerFactory的LoggerProvider来提供真正具有日志写入功能的Logger,并委托后者来记录日志. 目录一.Logger    扩展方法L

.Net Core下使用WCF

在.net core 下的wcf 和framework下的wcf使用方式有点不太一样.在core下用wc,需要安装VS扩展Visual Studio WCF Connected Service,目前这个插件不是特别的稳定,经常会出现莫名其妙的错误,前段时间最高支持到.net standard 1.6,可是我用的是.net core 2.0 于是,在同事的提醒下,我先将 .net standard 降为1.6 调用完wcf服务后,再升级为2.0.不会出现任何错误.最近好了,升级到2.0了,直接可以

net.sz.framework 框架 轻松搭建数据服务中心----读写分离数据一致性,滑动缓存

前言 前文讲述了net.sz.framework 框架的基础实现功能,本文主讲 net.sz.framework.db 和 net.sz.framework.szthread; net.sz.framework.db 是 net.sz.framework 底层框架下的orm框架,仿照翻译了hibernate实现功能,虽然不足hibernate强大:但在于其功能实现单一高效和高可控性: net.sz.framework.szthread 是 net.sz.framework 底层框架下的线程控制中

Git.Framework 框架随手记--ORM项目工程

前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫技之类的文章,只是工作的记录和总结,希望能够给大家一些启迪,忘诸位勿喷! 一. 组建项目需要的几个部分 .NET中最为经典的三层结构,众所周知,无人不晓. 在Git.Framework框架中我们也遵循最基本的这种结构,ORM部分我们划分为如下: 数据实体层,数据访问接口层,数据访问层,[层序主入口加