自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dotNET跨平台

在这里你可以谈微软.NET;Mono的跨平台开发技术,也可以谈谈其他的跨平台技术.;;在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux主流平台

  • 博客(89)
  • 收藏
  • 关注

原创 安全——《微服务设计》读书笔记

身份认证和授权       1.单点登录(SSO)       当主体试图访问一个资源,他会被定向到一个身份提供者那里进行身份验证,身份提供者验明正向后会发消息给服务提供者,让服务提供者来决定是否允许它访问资源。       SAML和OpenID Connect/OAuth2.0是企业领域中占据统治地位的单点解决方案。       2.单点登录网关       现在问题来了,多个微服务

2017-04-30 08:52:05 321

原创 未来的C#之只读引用与结构体

C++中提供了const特性,使用该特性定义的参数,其所引用的参数或对象将不会被调用函数修改(当然const还提供了更多的特性,参见“Const正确性”)。在新的建议中,C#也将提供类似的特性。 只读ref参数 在C#中,“只读引用”也可称为“in参数”,两者提供了类似的限制。只读引用的基本思想是,如果用“readonly ref”或仅是“in”标注一个参数,那么编译器会解释为“将该参数按引用

2017-04-30 08:52:05 324

原创 十二个 ASP.NET Core 例子

前言 在今天的博客中,我将介绍十几个可以在 ASP.NET Core 应用程序中使用的简单示例。从最简单的东西开始,比如 Options, 中间件,数据库,甚至 Nginx 或者 Docker。 首先确定你已经执行过了 dotnet restore , 然后运行 dotnet run 来启动应用程序,如果该示例正在使用比如像数据库这样的外部资源的话,请确保你已经安装并且运行它。 #1. Op

2017-04-30 08:52:05 1967

原创 监控——《微服务设计》读书笔记

在单块应用的世界里,当我们遇到问题时,我们至少清楚从哪里开始调查。网站访问速度?网站访问异常?CPU占用过高?这些都是单块应用程序的问题,单一的故障点会极大地简化对问题的排查。       而现在我们面对了多个微服务,我们需要多个服务器、多个服务来完成我们的功能。那么如果现在生产服务延迟了,我们该从何查起呢?其实很简单:监控单台小的服务,然后聚合起来看整体。   监控模型       1.

2017-04-29 07:06:29 455

原创 .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇

Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯、控制等方面,是实现Linux大型服务的基础技术之一。 去年我也曾写了一篇关于守护进程的帖子,名字叫《.NET跨平台实践:用C#开发Linux守护进程》

2017-04-29 07:06:29 535

原创 Windows Server Containers 支持 Windows 开发者使用 Docker

在过去几年里,Docker 和容器已成为全球开发界和企业最热门的话题之一。去年秋天发布的 Windows Server 2016 支持 Windows 开发者使用容器,使得这一热门话题再次升温。Windows 和 Docker 是如何走到一起的? 一切始于 2014 年隆重举办的普吉特海湾夏令营,当时 Windows Base 团队启动了一个新项目,最终推出了 Windows Server Con

2017-04-29 07:06:29 806

原创 第六期.Net开源社群联合分享--除了情结和价格,Azure最适合什么场景?等你来讲趟坑的实战经验!

嘿嘿,大家好啊!好荣幸啊这一期,能够咱们.NET开源社区一块来做这次线上分享会。 我就是各位小伙伴可爱而且博学而且低调而且人见人爱花见花开而且谦虚但是经常口不择言的主持人老板娘Grace。   这次有新朋友,有老朋友,有好些朋友都关注我前5期的线上分享了,如果没赶上的盆友看这里这里这里: 回顾1链接 回顾2链接 回顾3链接 回顾4链接 回顾5链接   今天我们的首届微软云Azu

2017-04-29 07:06:29 1121

原创 测试——《微服务设计》读书笔记

一.测试象限(Brain Marick)          二.测试金字塔(Mike Cohn)                 1.单元测试       通常只测试一个函数或方法调用,通过TDD或者基于属性而写的测试就属于这一类,在UnitTest中,我们不会启动服务,对且对外部文件和网络连接的使用也很有限,通常我们需要大量的单元测试。              单元测试是帮助

2017-04-28 07:09:04 758

原创 支持断线重连、永久watcher、递归操作 ZooKeeper 客户端

项目介绍 ZooKeeper本质上是一个分布式的小文件存储系统。原本是Apache Hadoop的一个组件,现在被拆分为一个Hadoop的独立子项目。 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态

2017-04-28 07:09:04 787

原创 通过 Transifex 中文化开源软件

如果您对于汉化软件充满热情, 我软已经发布了以下的开源产品在 Transifex 平台,让社区的小伙伴们参与翻译以及审核:

2017-04-28 07:09:04 1328

原创 分布式数据访问服务之1—华山论剑篇

业界主流的互联网架构中,分布式服务框架、分布式数据访问服务、消息队列服务、服务网关(API)、分布式事务等都是核心的组件和框架。 当我们的系统规模越来越大,从几台服务器扩展到几十台、几百台、上千台,传统的烟囱式的、大集中式系统架构,逐步演进为服务化SOA、分布式的系统架构: 在数据层面,应用层面,访问层面和查询方面,全都以分布式的结构来搭建,使整个系统不存在性能和横向扩展的瓶颈,实现系统的弹性

2017-04-27 07:24:24 550

原创 发力企业级市场,微软Hololens开辟了一条VR新道路

近日微软Hololens可谓是动作频频,2月份Hololens与BGC Engineering合作,从矿山规划到泥石流建模,该应用程序可帮助BGC Engineering及其客户可视化一个场景并解决工程问题。 3月份HoloLens与Cigna展开医疗合作,将Hololens用于健康检查领域,旨在鼓励人们了解四个健康数据:血压、体质指数、血糖和胆固醇。3月末 HoloLens开发了MR应用系列“

2017-04-27 07:24:24 609

原创 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

一.CI(Continuous Integration)简介    CI规则1:尽量频繁地把代码签入到分支中以进行集成   CI规则2:不光要对语法进行验,也要提供一系列的自动化来验证   CI规则3:CI失败后,要把修复CI当做第一优先级的事情   说明:作为CI流程的一部分,我们提供的制品应该每次只生成一次,然后在所有的部署一切使用,这不仅避免多次重复做一件事情,还可以保证部署上线的制

2017-04-27 07:24:24 726

原创 理解C# 4 dynamic(4) – 让人惊艳的Clay

一,多种方式初始化对象 1, 最简单的对象构建和初始化 dynamic New = new ClayFactory();var person = New.Person();person.FirstName = "Louis";person.LastName = "Dejardin"; 注意这里的Person并不是一个具体的,实际存在的类或者结构体。我们在不需要定义Person类的情况下,

2017-04-26 07:23:54 462

原创 拆分:分解单块系统——《微服务设计》读书笔记

通常,我们可能已有有一个巨大的单块系统,如何实现微服务,我们需要把它分解。 从哪里开始拆分:接缝       接缝:从接缝处可以抽取相对独立的一部分代码,对这部分代码的修改不会影响系统的其他部分。这些接缝就可以作为服务的边界。       那如何识别出接缝呢?我们可以使用前面所提到的限界上下文,也可通过程序中的命名空间来帮助我们,也可以通过工具来帮助我们,如structure101这样的工具

2017-04-26 07:23:54 488

原创 用.netcore写一个简单redis驱动,调试windows版本的redis

1. 下载windows版本的redis 2.开发环境vs2017  新建一个 .net core控制台。          private static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);       private static Buffe

2017-04-26 07:23:54 817

原创 服务的协作:服务间的消息传递——《微服务设计》读书笔记

在微服务集成——《微服务设计》读书笔记文章中,我们说过服务间的消息传递有几种方式,一种是请求/响应技术,另一种是基于事件的机制。 RPC(远程过程调用)       RPC是Remote Procedure Call的简称。       这是请求/响应技术的一种,它使用本地调用的方式和远程进行交互,如SOAP、Thrift等,比如我们常使用的WebService和Java RMI,就是这种类

2017-04-25 07:15:12 414

原创 微软正在用实际行动告诉你: 拥抱开源,微软是认真的

2017年4月19日至20日,由工业和信息化部指导、中国信息通信研究院主办、云计算开源产业联盟承办的"全球云计算开源峰会"在国家会议中心举行。微软.NET CORE开发平台荣获由峰会云计算开源产业联盟(OSCAR) 评选出的“尖峰开源技术”奖,标志着国内开源社区对微软为加速开源世界发展所做努力的充分肯定。

2017-04-25 07:15:12 954

原创 ASP.NET Core MVC四种枚举绑定方式

前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满满的干货,你值得拥有。 探讨枚举绑定方式 我们首先给出要绑定的枚举类。 public enum Language     {         JavaScript,         Ja

2017-04-25 07:15:12 956

原创 理解C# 4 dynamic(3) – DynamicObject的使用

上篇文章"理解C# 4 dynamic(2) – ExpandoObject的使用" 了解了xpandoObject的基本使用。但ExpandoObject的问题就是它是一个万金油,什么都可以做,但是又都不专注。使用DynamicObject正好可以解决这个问题。这篇文章介绍DynamicJson是如何继承DynamicObject,包装一个用来处理Json的动态类型。 一,JS可以灵活处理Js

2017-04-25 07:15:12 1112

原创 微服务集成——《微服务设计》读书笔记

一.理想的集成应该是什么样的? 1.避免破坏性修改     如果在一个微服务的响应中添加一个字段,服务的消费方不应该受到影响。 2.保证API的技术无关性     微服务之间的通信应该是与技术无关的。 3.使服务的消费方易于使用     如果消费方使用该服务比登天还难,那么无论该微服务多漂亮都没用任何意义。但同时,易于使用的服务可能内部封装了很多细节,这会增加耦合。 4.隐藏内部实现

2017-04-24 07:19:55 234

原创 理解C# 4 dynamic(2) – ExpandoObject的使用

ExpandoObject的使用非常简单,很容易入手。上一篇里面已经有详细的介绍了,可以看这里(理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用) 下面对ExpandoObject的使用场合和一些认为需要注意的地方,谈一下自己的看法: 一,ExpandoObject使用场合 在传递对象,但是又不想创建一个class或者struct

2017-04-24 07:19:55 727

原创 使用CSharp编写Google Protobuf插件

什么是 Google Protocol Buffer? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用

2017-04-24 07:19:55 873

原创 离线安装 VS2017 的正确姿势

国内的网络环境,真的是有很大的不同,有的人装 VS 的时候,号称满速,有的人(其实就是我)要等它下载很久,还告诉我有个组件没有安装成功。很久很久以前,VS 是提供 ISO 版的离线安装包的。那个时候,最幸福的事就是,把 ISO 文件链接拉到迅雷里,然后选y离线下载,之后就可以全速下载完整个安装镜像了。但随着 VS 越来越大,这样的做法已经变得不再“科学”了。VS 开始提供一个在线的安装器。但奇怪的

2017-04-24 07:19:55 5635

原创 理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用

一. 为什么是它们三个? 拿这三者比较的原因是它们在使用的时候非常相似。你可以用它们声明的变量赋任何类型的值。 看看下面的示例: var a = 1;object b = 1;dynamic c = 1;  你还可以使用关键字为它们赋上更加复杂的类型 var a = new string[]{"1"};object b = new string[]{"1"};dynamic c =

2017-04-23 08:03:51 705

原创 建模:确定服务的边界——《微服务设计》读书笔记

什么样的服务才是好的服务?       高内聚、松耦合的服务才是好的服务。简而言之,就是把相关性强的放在一起,相关性不强的分开,物以类聚,人以群分,服务的划分也是这样。这就需要确定什么要放在一起,什么是要分开的,这个寻找的过程就是确定服务边界的过程。   限界上下文        限界上下文确定了这个边界内它所承担的职责。       Evans在《领域驱动设计》中作喻:细胞之所以会存在

2017-04-23 08:03:51 1107

原创 未来的.NET之多重继承

通过抽象接口引入有限形式的多重继承,这一.NET新提议颇具争议性。该特性是受Java默认方法(Default Methods)的启发。 默认方法的目的在于允许开发人员修改已发布的抽象接口。修改已发布接口将会产生破坏性的更改,因此在Java和.NET中通常是不允许的。默认方法的提出,为接口编写者提供了一种可重写的实现,缓解了向后兼容问题。 在C#版本的提议中,将包括用于如下部分的语法:

2017-04-22 08:25:22 291

原创 C#将引入可空的引用类型

是的,标题没错。C#其中一份新提案假定,所有的引用类型在默认情况下都是不可空的。在新语法下,你需要显式地标明一个引用变量是可空的,就像对值类型所做的那样。 和值类型一样,T是指不可空类型,而T?是指可空类型。以下情况会产生警告: 取消对可空变量的引用; 一个可空变量或参数被赋值给一个不可空变量; 从T?[]转换到T[]; 从T[]转换到T?[]; 将一个空字面量赋值给一个

2017-04-22 08:25:22 354

原创 微服务架构师的职责——《微服务设计读书笔记》

如何定义架构师         架构师从英文单词Architect翻译而来,在英文中,Architect原来的意思是“建筑师”。作者吐槽英文中架构师与传统的建筑师单词相同,但实际的工作性质并不相同,以致于在英文的语境中会造成理解上的差异。       传统的建筑师在设计建筑时要求极端地精确,在正式施工之前会进行完整的论证、设计、计划等,不允许出现任何差错;而软件架构师则地面对的问题更加不可测,

2017-04-22 08:25:22 384

原创 .NET程序在Linux容器中的演变

本文将首先讨论镜像的构建时间和启动时间,接着会将一个简单的.NET程序运行在基于容器的应用上,然后观察镜像大小的变化,最终缩短镜像的构建和加载时间。此外,代码优化是本文的另一个主题。 现在,.NET开发人员可以无障碍地使用如Docker这样的Linux容器,那么让我们来尝试如何以正确的方式配置一个容器。 可能,文章的标题改成“Linux容器开发人员的演变”会更好。由于.NET可在Linux(以

2017-04-21 07:41:34 261

原创 微服务的概念——《微服务设计》读书笔记

《领域驱动设计》(Eric Evans):告诉我们用代码呈现真实世界的重要性,并且告诉我们如何更好地建模。       持续交付理论:如何更有效及更高效地发布软件品,并指出保持每次提交均可发布的重要性。       六边形架构理论(Alistair Cockburn):把我们从分层架构中拯救出来,从而能更好地体现业务逻辑。(http://alistair.cockburn.us/Hexagon

2017-04-21 07:41:34 322

原创 netcore实践:跨平台动态加载native组件

缘起netcore框架下实现基于zmq的应用。在.net framework时代,我们进行zmq开发由很多的选择,比较常用的有clrzmq4和NetMQ。 其中clrzmq是基于libzmq的Interop包装, NetMQ是100%C#的zmq实现(基于AsyncIO组件)。以上两种组件我都有过应用,孰优孰劣各有千秋,本文就不详谈了。   回归正题,netcore下使用zmq首先也是想到引

2017-04-21 07:41:34 481

原创 .NET或将引入类型类和扩展

类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展(Shapes and Extensions)”中,该特性被称为外观,它们将大幅提升.NET泛型的能力。Mads Torgersen这样描述类型类: 接口抽象的是作为类型实例的对象和值的“外观(shape)”。从根本上讲,类型类背后的思想是抽象类型本身的外观。而且,当通过类型声明引入需要的类型实现一个接口时,其他人可以在单独的

2017-04-20 07:15:07 344

原创 Visual Studio 2017更新,侧重于提高稳定性

Microsoft已对其旗舰开发软件产品Visual Studio 2017(VS2017)的安装程序和设置引擎做了全新设计,意在能快速地部署更新到VS2017。VS2017的第一个命名版本更新在VS2017首发的一个月后就可用,这充分体现了这一全新设计的优势所在。 这次发布的更新命名为15.1版,主要侧重于改进产品的稳定性,添加了用于Windows 10 Creators Update的UWP

2017-04-20 07:15:07 572

原创 .NET Core 2.0及.NET Standard 2.0

.NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布。 .NET Core 2.0正式版本发布时间大约在Q3 2017发布,具体我估计大概在8月份左右。同时一起发布的也就是.NET Standard 2.0。 Milestone Release Date

2017-04-20 07:15:07 597

原创 深夜福利, 小试linuxkit

前言 今天小编的朋友圈被DockerCon和linuxkit刷屏了,再不出来写点linuxkit的东东恐怕就要跟不上时代了。小编翻阅了N多的有关linuxkit的文章,发现绝大多数都是英文的讲解,小编本着对读者负责的态度决定先将linuxkit的文章翻译成中文,然后再亲手小试一下linuxkit,看看它究竟是个什么东东? linuxkit简介 简而言之,linuxkit就是

2017-04-20 07:15:07 35069

原创 asp.net core 编译mvc,routing,security源代码进行本地调试

因为各种原因,需要查看asp.net core mvc的源代码来理解运行机制等等,虽说源代码查看已经能很好的理解了。但是能够直接调试还是最直观的。所有就有了本次尝试。因调试设置源代码调试太辍笔,所以不用这个方法,转而使用编译源代码的方式,当然也能在源代码里面加点log能更好的理解和调试 源代码准备及调试程序准备 1.从https://github.com/aspnet上clone下来mvc及相

2017-04-19 07:16:27 257

原创 Visual Basic 15语言新特性

对于C#的两个重要特性元组和Ref返回值,Visual Basic 15提供了对等的实现。这两个特性都是“不完全的”,但已经可以提供足够的变通方案,让VB应用程序可以消费使用了这些特性的C#库。 元组 在VB中,从单个函数调用直接返回多个值是一个人们期待已久的特性。虽然开发人员可以使用ByRef参数获得同样的结果,但与函数式编程语言相比,其语法相当笨拙。 你可能不熟悉这个术语,“元组”就是一

2017-04-19 07:16:27 608

原创 初探CSRF在ASP.NET Core中的处理方式

前言 前几天,有个朋友问我关于AntiForgeryToken问题,由于对这一块的理解也并不深入,所以就去研究了一番,梳理了一下。 在梳理之前,还需要简单了解一下背景知识。 AntiForgeryToken 可以说是处理/预防CSRF的一种处理方案。 那么什么是CSRF呢? CSRF(Cross-site request forgery)是跨站请求伪造,也被称为One Click Att

2017-04-19 07:16:27 663

原创 asp.net core源码飘香:Logging组件

简介: 作为基础组件,日志组件被其他组件和中间件所使用,它提供了一个统一的编程模型,即不需要知道日志最终记录到哪里去,只需要调用它即可。 使用方法很简单,通过依赖注入ILogFactory(CreateLogger方法)或ILogger对象,获取一个ILogger对象,然后通过ILogger的各种扩展方法(都是调用Log方法)记录不同级别的日志。   源码剖析:

2017-04-18 07:28:50 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除