nuget

.NET Core 事件总线,分布式事务解决方案:CAP

前提是你 提交于 2020-08-05 19:38:20
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景下诞生的。 最初打算做这个东西是在去年(2016)年底,最初是为了解决分布式系统中的分布式事务的问题,然后当时有了一个大概的概念轮廓,当时我对于前面两篇文章中关于异步消息和微服务之间通讯还不是太了解,只是觉得这样能够解决这一系列的问题,然后就着手做了,最后发现和这些概念竟然不谋而合。 经过大半年的不断重构以及修改,最终 CAP 1.0 版本发布了。作为一个开源项目,最初项目是在我的个人Github下,然后于上个月已经贡献给了 .NET China Foundation 组织,目前该项目由我和 DotNetCore 项目组共同维护。 CAP 介绍 Github: https://github.com/dotnetcore/CAP 开源协议:MIT CAP 是一个在分布式系统中(SOA,MicroService)实现事件总线及最终一致性(分布式事务)的一个开源的 C# 库,她具有轻量级,高性能,易使用等特点。 你可以轻松的在基于 .NET Core 技术的分布式系统中引入CAP,包括但限于 ASP.NET Core 和 ASP.NET Core on .NET Framework。 CAP

《ASP.NET MVC 4 实战》

自作多情 提交于 2020-08-05 05:03:28
**《ASP.NET MVC 4 实战》 ========== ========== ========== [作者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner [译者] (中) 徐燕萍 李萍 林逸 [出版] 人民邮电出版社 [版次] 2014年05月 第1版 [印次] 2014年05月 第1次 印刷 [定价] 69.00元 ========== ========== ========== 【第01章】 (P003) Web 本质上是无状态的。 【第02章】 (P015) 框架是如何知道将 URL 映射到一个特定的控制器动作的?答案就在 Global.asax 文件的 RegisterRoutes 方法中。 Web API 是微软随 ASP.NET MVC 4 一起发布的一个 Web 服务框架。 (P016) ViewBag 本质上是一个字典 —— 它提供了一种存储数据的方式,这些数据随后能够在视图中进行访问。 (P017) @ 前缀表示 HTML 与代码之间的转换。 【第03章】 (P032) 视图的职责看似很简单。它的生存目标是取得一个送给它的模型,并用这个模型来渲染内容。由于控制器及相关服务已经执行了所有业务逻辑,并将结果包装成一个模型对象

改造 layui 表格组件实现多重排序

拈花ヽ惹草 提交于 2020-08-05 04:46:34
  layui 的表格组件目前只支持单列排序,在实际应用中并不能很好的支撑我们的业务需求。今天一时手痒,决定改造一番以支持多重排序。   实现思路也比较简单,只需要用一个数组来存放所有排序的列,再把这个数组传到后端(后端排序)进行排序即可。沿用一般的使用习惯,按住 shift 键点击表头可增加排序列,按住 ctrl 键点击表头可减少排序列。话不多说,先上最终效果图:    1. 定义排序列数组    我当前用的是 2.5.6 版本,源码之前为适应业务需求也做过相应修改,所以下文说到的行数只是个大概数。   为兼容之前单列排序的使用习惯,我们增加一个 multiSort 的配置属性,默认为 false,为 true 时才开启多列排序。修改源码大概第 235 行,增加两个属性 multiSort、sortCols。 //构造器 , Class = function (options) { var that = this; that.index = ++table.index; that.mutlSort = false; that.sortCols = []; // 组合排序列集合 that.config = $.extend({}, that.config, table.config, options); that.render(); };   2. 修改表头点击事件  

使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服务网关:Step by Step(一)

落爺英雄遲暮 提交于 2020-08-05 04:02:30
网上这部分的文章和资料很多,有一篇非常不错的文章(《 Net Core 基于Ocelot+IdentityServer4+Eureka的搭建高性能网关介绍 》),也介绍了这个内容,我也是参考了其中的某些步骤,一步一步演练下来,感觉.NET Core在微服务生态方面也是越来越成熟,功能也越来越强大。因此,我也撰写记录一下整个步骤,通过Step by Step的形式,加上一些注解,以及对于一些遇到的坑的描述,将整个实践过程记录下来,以便帮到有需要的读者,也为自己的学习做个记录。我不会再在概念性的问题上多费笔墨,比如什么是API网关、Ocelot、IdentityServer4、Eureka又是什么之类的问题,我不会做过多的说明,我会争取用最简单快捷的方式,将相关的实践内容描述清楚,虽然本文的标题后面加了一个“(一)”的字样,代表还会有后续的文章,因为我觉得一篇估计讲不完。 案例场景 在我之前写的《 .NET Core中Ocelot的使用 》系列文章中,我设计了一个场景,同时涉及了两个微服务的RESTful API,当时使用两个微服务,不仅是为了介绍API网关的主要功能,而且还引入了服务发现的内容,因此,使用两个微服务来演示会比较合理。当然,今天我们已经学习过API网关和服务发现的基本知识了,我就进一步将案例场景简化,我们只做一个API:Countries API,在这个API中

利用C#实现OPC-UA服务端

佐手、 提交于 2020-08-05 03:00:11
前言 最近接手了一个项目,做一个 OPC-UA 服务端?刚听到这个消息我是一脸懵,发自灵魂的三问“OPC-UA是什么?”、“要怎么做?”、“有什么用?”。 我之前都是做互联网相关的东西,这种物联网的还真是第一次接触。没办法只能打开我的浏览器四处搜索,结果百度了一圈下来发现都是要么是介绍OPC-UA是什么的,要么就是OPC-UA客户端,反正服务端相关的内容是找了半天都没找到,但这是领导们安排的任务啊,我总不能回复网上没有教程吧,于是只能把目光投向了最后的希望:GitHub,好在最后找到了OPC基金会的源码。 源码地址: https://github.com/OPCFoundation/UA-.NETStandard 不过这个源码对于我这种刚接触工业物联网的人来说,太过于复杂,而且网上相关的技术说明文档太少,觉得非常有必要动手记录一下我的OPC-UA服务端实现过程,方便以后回过头来巩固。 关于什么是OPC-UA、OPCFoundation是什么我就不多说了,百度以下,一大堆说这些理论东西的,咱们还是更喜欢动手干起来。 以下就是我实现OPC-UA服务端的记录,分享出来,大家一起探讨以下。由于我也是第一次接触这种工业物联网,所以有什么说的不对的,请大家多多指点,共同学习共同进步! 引入Nuget包 Nuget包管理器中搜索 OPCFoundation.NetStandard.Opc.Ua

C# 数据操作系列

怎甘沉沦 提交于 2020-08-05 01:22:19
C# 数据操作系列 - 2. ADO.NET操作 0.前言 在上一篇中初略的介绍了一下SQL的基本写法,这一篇开始我们正式步入C#操作数据库的范围。通过这一系列的内容,我想大家能对于数据库交互有了一定的认识和基础。闲话不多说,先给大家介绍一个C#操作数据库的方式。 ADO.NET的介绍 在ADO.NET出现之前,C#连接数据库有很多种方式,各种框架琳琅满目。用户们饱受困扰,再加上乱七八糟的连接方式对语言的发展也是一种强有力的阻挠。所以微软决定搞一套标准化出来,之后ADO.NET诞生了。 ADO.NET定义了一系列操作数据库的接口和基类,而数据库厂商只需要根据自己的实际情况开发对应的实现类就可以了。 使用ADO.NET 操作需要的步骤 使用ADO.NET操作数据库,先需要一个连接也就是 IDbConnection实例,然后使用IDbCommand执行,通过 IDataReader读取数据。 先来简单介绍一下上面提到的接口: a.IDbConnection 表示一个与数据源的开放连接,并由访问关系数据库的.NET 数据提供程序实现,也就是说这只是一个接口,具体的实现得看具体的数据库。 我们先看一下,具体的属性和方法吧: public string ConnectionString { get; set; }// 获取或设置用于打开数据库的连接字符串 public string

Nancy之Forms验证

坚强是说给别人听的谎言 提交于 2020-08-05 00:03:40
授权几乎是所以系统都不可或缺的部分,在 Nancy 中怎么授权呢 ? 我们这篇博文来说一下 Nancy 的 Forms 授权。 首先在 NuGet 上安装 Nancy.Authentication.Forms Nancy 的 Forms 验证得实现 IUserMapper 接口,用户类实现 IUserIdentity 接口(为了方便,我把 DB 的 User , Model 的 User 全合成一个 User ) User.cs using Nancy.Security; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestSelfHostWeb { public class User : IUserIdentity { public User() { } public User(string userName) { UserName = userName; } /// <summary> /// 实现接口的成员 /// </summary> public string UserName { get; set; } public string Password { get;

C#基于NModbus实现MODBUSTCP字符串、浮点数读写

只愿长相守 提交于 2020-08-04 23:42:22
引用NModbus 在NuGet搜索NModbus,添加引用。 封装ModbusTcp类 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpClient tcpClient; public string IPAdress { get; set; } public int Port { get; set; } public bool Connected { get => tcpClient.Connected; } public ModbusTCP(string ip, int port) { IPAdress = ip; Port = port; modbusFactory = new ModbusFactory(); tcpClient = new TcpClient(IPAdress, Port); master = modbusFactory.CreateMaster(tcpClient); master.Transport.ReadTimeout = 2000; master.Transport.Retries = 10; } public bool[] ReadCoils(byte slaveAddress,

C#中JSON字符串中的转义字符

白昼怎懂夜的黑 提交于 2020-08-04 23:29:03
新建一个.NET Core控制台项目,然后引入Json.NET的NuGet包: Newtonsoft.Json ,我们使用Json.NET将类序列化为JSON字符串,再将JSON字符串反序列化为类,代码如下: using Newtonsoft.Json; using System; namespace NetCoreJson { public class MessageContainer { public string Message1 { get ; set ; } public string Message2 { get ; set ; } } class Program { static void Main( string [] args) { MessageContainer messageContainerToJson = new MessageContainer() { Message1 = " 这是带双引号转义字符的消息:\"今天是个好天气!\" " , Message2 = " 这是带换行的消息:今天天气真好\n适合出去郊游\n真是愉快的一天 " }; string toJsonMessage = JsonConvert.SerializeObject(messageContainerToJson, Formatting.Indented); Console

nuget 包是如何还原包的

一曲冷凌霜 提交于 2020-08-04 21:32:33
nuget 是如何还原包的 Intro 一直以来从来都只是简单的用 nuget 包,最近想折腾一个东西,需要自己搞一个 nuget 包的解析,用户指定 nuget 包的名称和版本,然后去解析对应的 nuget 包并添加引用到项目, 于是就想搞明白 nuget 包是怎么还原的,对于本地已经下载了的 nuget 包又是怎么找的 Nuget 包的引用 对于 dotnetcore 项目(这里不算之前那种 project.json 的项目,只讨论 *.csproj 这种项目),都是使用新的项目格式, PackageReference 模式 示例: <PackageReference Include="WeihanLi.Common" Version="1.0.39" /> 对于 dotnet framework 项目,如果使用 PackageReference 包格式和上面一样,如果是传统的 packages.config 包形式,会有一个 packages.config 的文件包含引用的 nuget 包,文件内容示例: <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" /> </packages>