摘要:
上次一篇“你写的try…catch真的有必要吗”引起了很多朋友的讨论。本次我在code review又发现了一个问题,那就是有人有意无意的写出了return null这样的代码,例如: public User GetUser(Guid userId) { ... 阅读全文
摘要:
系列主题:基于消息的软件架构模型演变 一、反应式编程(Reactive Programming) 1、什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LINQ风格编写基于观察者模式的异步编程模型。简单点说Rx = Observables + LINQ + Schedulers。 2、为什么会产生这种风格的编程模型?我在本系列文章开始的时候说过一个使... 阅读全文
摘要:
系列主题:基于消息的软件架构模型演变 既然这个系列的主题是”基于消息的架构模型演变“,少不了说说Actor模型。Akka.net是一个基于Actor模型的分布式框架。如果你对分布式应用还非常陌生,当别人在谈”分布式“、”云计算“等名词时你感到茫然,那么本篇文章将带你进行一次分布式开发之旅。 一、什么是Actor模型 Actor模型由Carl Hewitt于上世纪70年代早期提出并在Erlang... 阅读全文
摘要:
一、什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版。注意是Authorization(授权),而不是Authentication(认证)。用来做Authentication(认证)的标准叫做openid connect,我们将在以后的文章中进行介绍。 二、名词定义 理解OAuth中的专业术语能够帮助你理解其流程模式,OAuth中常用的名... 阅读全文
摘要:
系列主题:基于消息的软件架构模型演变.net中事件模型很优雅的实现了观察者模式,同时被大量的使用在各种框架中。如果我们非要给事件模型挑毛病,我觉得有两点:实现起来略微繁琐正如我们上篇文章分析,事件模型在特定的情况下会发生内存泄漏于是我们想到了更加简单易用的模型:EventAggregator,正如该... 阅读全文
摘要:
系列主题:基于消息的软件架构模型演变在Winform和Asp.net时代,事件被大量的应用在UI和后台交互的代码中。看下面的代码: private void BindEvent() { var btn = new Button(); ... 阅读全文
摘要:
一个优秀的架构师总是能对各种解决方案的优点和对应成本之间取得良好的平衡,而这种能力背后是架构师丰富的经验和广阔的知识体系。基于消息的软件建构模型则是架构师必备的知识点,本文将详细描述该模型的演变过程。 还记得第一次跟师傅打交道,他问我“Hi yang,你的功能设计的怎么样了?”我有点不以为然,不就是 阅读全文
摘要:
我之所以对函数式代码感兴趣是因为函数式代码富有表现力,可以使用简短、紧凑的代码完成工作,同时能对特定的问题给出优雅的解决方案。现代的编程语言不约而同的朝着面向对象、函数式、动态、解释执行的方向发展,例如Ruby,Swift。而另一些语言则更加强调函数式编程,如F#,Scala,这种语言有着强大的类型... 阅读全文
摘要:
前段时间在周末给朋友做了一个小程序,用来记录他们单位的一些调度信息(免费,无版权问题)。把代码分享出来。整个程序没有做任何架构。但是麻雀虽小,用到的技术也没少。WebApi+Castle+AutoMapper+Ef+angular,日志记录Log4net。初学者可以学习借鉴,虽然做的比较仓促,但是自我感觉代码写的还是比较规范。 git地址:https://git.oschina.net/richi... 阅读全文
摘要:
string.IsNullOrEmpty()这个方法算得上是.net中使用频率最高的方法之一。此方法是string的一个静态方法,类似的静态方法在string这个类中还有很多。那么这样的方法作为静态方法是否合理呢?如果我们从面向对象的角度出发,我们会发现这种方案不是十分符合面向对象的设计原则。 什么 阅读全文