通过添加服务引用后生成的代码,可以得知首先要设置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
 

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

  1. 一个.NET Core下的开源插件框架

    插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...

  2. .NET Core 下调用WebAPI

    前言 今天我们介绍多种客户端调用WebApi的方式,可以是原生写的,也可以借助.NET 框架下的其他HTTP库.我们一起来看看它们之间的一些异同吧- RestSharp 首先要介绍的就是这款REST ...

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

    1.Django的 CBV 中在请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法 class APIView(View): def ...

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

    注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity ...

  5. Net Core下多种ORM框架特性及性能对比

    在.NET Framework下有许多ORM框架,最著名的无外乎是Entity Framework,它拥有悠久的历史以及便捷的语法,在占有率上一路领先.但随着Dapper的出现,它的地位受到了威胁,本 ...

  6. Orchard Core Framework:ASP.NET Core 模块化,多租户框架

    Orchard Core Framework:ASP.NET Core 模块化,多租户框架 上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core ...

  7. .NET Core下的日志(1):记录日志信息

    记录各种级别的日志是所有应用不可或缺的功能.关于日志记录的实现,我们有太多第三方框架可供选择,比如Log4Net.NLog.Loggr和Serilog 等,当然我们还可以选择微软原生的诊断机制(相关A ...

  8. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

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

    基于SpringMVC下的Rest服务框架搭建[1.集成Swagger] 1.需求背景 SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的re ...

随机推荐

  1. Linux中apache服务

    httpd访问控制生成共享文件vim var/www/html/cq/index.html编辑配置文件 vim /etc/httpd/conf/httpd.conf<Directory &quo ...

  2. APP微信支付实现

    参考官方文档 设计到的API: 统一下单API.支付结果通知API和查询订单API 下面代码是请求预支付ID // 构建下单bean final WxPayUnifiedOrderBean unifi ...

  3. case when null then 'xx' else 'yy' end 无效

    Sql Server 中使用case when then 判断某字段是否为null,和判断是否为字符或数字时的写法不一样,而且语法能正常执行, 如果不注意数据内容,很容易搞错. 错误方法: CASE ...

  4. IIS Express 无法启动

    IIS Express 无法启动1. \.vs\config\applicationhost.config2. 打开.csproject 中把 <UseIIS> 改成 False ---- ...

  5. Problem07 处理字符串

    题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用while 语句,条件为输入的字符不为'\n'. import java.util.*; public clas ...

  6. pip install keras==1.2.1

    [该方法仅适用于压缩包中含有setup.py的情况] 先从GitHub上找到想要下载的历史版本,右键复制链接地址. 然后执行命令: pip install https://github.com/ker ...

  7. 如何成为一名:黑客/Programmer/Python高手

    如何成为一名黑客 Eric Steven Raymond https://translations.readthedocs.org/en/latest/hacker_howto.html How To ...

  8. 3d Max 2013安装失败怎样卸载3dsmax?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  9. 在Application_Error获取Asp.Net未处理异常信息

    在Application_Error获取Asp.Net未处理异常信息 protected void Application_Error(object sender, EventArgs e) { // ...

  10. POJ 1236——Network of Schools——————【加边形成强连通图】

    Network of Schools Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u ...