自从写了RabbitHub框架系列后的一段时间内一直在思索更加轻量简便,分布式高并发的框架(RabbitHub学习成本较高),无心间在网上级联看到了不少新框架:从helios到Akka.NET在到Orleans在到Azure Service Fabric,最终选择了Orleans做为研究对象,理由是微软官方出品,Service Fabric尚未正式版,下面咱们来进入Orleans的大门。
来自官网的解释:ios
一种构建分布式、 高规模(伸缩)的应用程序,在.NET 简单方法git
奥尔良是一个框架,提供一个简单的方法来构建分布式的高规模计算应用程序,而无需了解并应用复杂并发或其余伸缩模式。它是由微软研究院建立和设计在云计算中使用。 github
特性架构
从上述的简介能够看出Orleans就是为了分布式、并发而生,那么大并发、高用户量也能够获得解决。并发
官网:http://dotnet.github.io/orleans/框架
文档:http://dotnet.github.io/orleans/What's-new-in-Orleans分布式
源码:https://github.com/dotnet/orleans微服务
是否可靠我也不肯定,可是案例仍是很诱人的,特别是微软官方游戏:Halo四、Halo5(光环|光晕)的云服务所有由它来承载。固然还有其它的用户,不过我都不怎么认识,就不列出了,大伙能够去官网查看。高并发
Grains能够理解为一个服务,相似:UserService、AccountService,是主要的业务逻辑实现与抽象。学习
Silos能够理为一台Server,里面主要用于存储Grains,也就是说Grains开发完成后须要注册到Silos中,而后等待调用。
.NET Framework、Core CLR,也就是说能够进行跨平台部署。
具体的应用客户端,能够是控制台、Web应用程序(MVC——包含vNext、WebForms)、WindowService、WPF等一切.NET端技术。
新建2个控制台应用程序,和2个Windows类库,项目结构以下:
在”Sample.Implements“中添加对项目”Sample.Interfaces“的引用。
在”Client“项目中添加对项目”Sample.Interfaces“的引用。
在”Server“项目中添加对项目”Sample.Interfaces“,”Sample.Implements“的引用。
安装NuGet包“Microsoft.Orleans.Server”、”Microsoft.Extensions.DependencyInjection“到“Server”项目中。
安装NuGet包“Microsoft.Orleans.Client”到“Client”项目中。
安装NuGet包“Microsoft.Orleans.Core”到“Sample.Implements”和”Sample.Implements”项目中。
在”Sample.Interfaces“中新建一个IUserService,代码以下
用意很是简单,根据手机号码判断用户是否存在。
在”Sample.Implements“新建一个UserService实现IUserService接口,代码以下:
在”Server“Program.cs入口点中写入以下代码:
在”Client“Program.cs入口点中写入以下代码:
首先运行”Server.exe“等待出现以下文字:
在运行”Client.exe“
本次的源码放在:https://github.com/majian159/Samples/tree/master/OrleansSamples/HelloWorld
能够发现咱们的客户端应用”Client“彻底没有引用业务逻辑实现的项目”Sample.Implements“,也就是说业务逻辑的执行是在服务端”Server“执行的,本次Demo只用了一个服务端,大伙能够想象下若是服务端进行了集群,再经过一些协调服务进行管理分配,那么搭建一个”微服务“的架构变得异常轻松,经过一些手段动态切换客户端所需服务的服务端地址从而提供应用响应与容灾的支持。
本文主要是作一个简单的介绍和Demo的效果,在后续章节中我会继续带来一些更实用的特性介绍与剖析,虽然我也在摸索中,但尽可能不误导大伙。。。
QQ群:384413261(RabbitHub)
Email:majian159@live.com