Microsoft Orleans 之安装
先决条件
Orleans 是一个.net 类库集,为了使用它,你需要.net 4.5.1 或者更高版本,开发工具集需要visual studio 2015 或者更高版本或者其他支持的开发工具,不支持Visual Studio的简化版本或者拓展包,但是你可以直接引用Orleans ,通过NuGet.
在生产环境中,Orleans 需要持久化存储,目前只支持一下技术产品之一:
- Azure - Tested with Azure SDK 2.4 - 2.8
- SQL Server 2008 or higher
- ZooKeeper 3.4.0 or higher
- MySQL 5.0 or higher
- Consul 0.6.0 or higher
Azure 就不多说了微软的云平台产品,当然就是要花钱买微软的云平台、云数据库了
SQL Server
Zookeeper 这又是个什么东东呢,说起它那就得提到在大数据存储、大数据运算下大名鼎鼎的Hadoop 了,它是属于Hadoop项目下的一个子项目,用来存储数据的,具体详细你就问度娘吧。
MySQL 一个数据库
Consul 这是什么,不会吧,我孤陋寡闻了,从来没听说过这么高达上的东西,好吧,问度娘:
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较 为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。
注意:以上产品使用我们会在后续章节中用示例的方式给大家展示,就期待吧。
Orleans Tools for Visual Studio
说起来也多亏visual studio 这个集大成的开发工具,做的那么贴心,犹如毒品,难以戒掉:
正如一如既往的vs Orleans 也给我们提供了模版化的项目创建,我们只需要安装这个vs 插件,然后就可以在vs 中看到Orleans的项目模版了,
下载地址 Orleans Tools for Visual Studio
然后就是安装了,如果成功安装好了,启动vs 就可以看到如下结构
如上图所示:1 是安装好后Orleans 的一个模版集节点,选中后左边面板中会有三个项目模版。
2 是我们项目中一个服务的承载项目,这里是用来测试用的,所以是一个控制台应用程序,同时也将host所需的类库nuget进来了。
针对你项目的需要,可以是一个windows 服务,一个控制台应用,一个Windows forms 的程序,或者也可以寄宿到iis的web中。
3 是grain的实现 ,我们大部分时间就是与里面的东西打交道,它里面是一些实现了grain借口,或者业务类的一系列类集合。
4 是grain 接口定义处,为何要孤立出来呢,因为将来这些接口是要暴露出来让其他需要的地方调用吗。
好了,就介绍到这里吧,你可以去试试。
ETG.Orleans.Templates.VSIX
这个也是vs 插件,就不多啰嗦了,直接下载安装就ok
Orleans NuGet Packages
orleans(1.2.2) 包
在大多数情况下,有4个关键的NuGet包你需要使用:
Microsoft.Orleans.OrleansCodeGenerator.Build
PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
grain 的接口或者实现项目提供构建支持,把他们添加到你的grain的接口和实现项目中可以实现grain引用和序列化的代码生成,
Microsoft.Orleans.Templates.Interfaces 和 Microsoft.Orleans.Templates.Grains 包已经废弃,仅仅是为了向后兼容而留用。
Microsoft.Orleans.Core
PM> Install-Package Microsoft.Orleans.Core
包含了Orleans.dll,定义了胆量的Orleans 的公共类型定义和客户端的部分,引用他来构建你的类库和客户端项目,不需要包括更多的其他提供者。
Microsoft.Orleans.Server
PM> Install-Package Microsoft.Orleans.Server
包含了你运行时需要的silos等的一些类型
Microsoft.Orleans.Client
PM> Install-Package Microsoft.Orleans.Client
包括一切你客户端需要的orleans 类型(前端)
额外的包
下面的包提供了额外的功能。
Microsoft.Orleans.OrleansServiceBus
PM> Install-Package Microsoft.Orleans.OrleansServiceBus
包含了云事件流提供程序中心。
Microsoft.Orleans.OrleansHost
PM> Install-Package Microsoft.Orleans.OrleansHost
包含了默认silo 主机(OrleansHost.exe),可以使用它来部署或者在云工作项里作为一个宿主来部署,他包括了Microsoft.Orleans.Server
Microsoft.Orleans.OrleansAzureUtils
PM> Install-Package Microsoft.Orleans.OrleansAzureUtils
在 Azure Worker/Web roles 包含了silos 和 clients 的一组简单的包装类的实例,提供了基于Table的membership,云存储的持久化和stream
Microsoft.Orleans.OrleansProviders
PM> Install-Package Microsoft.Orleans.OrleansProviders
包含一组内置的持久性和流provides ,包含在 Microsoft.Orleans.Client and Microsoft.Orleans.Server.
Microsoft.Orleans.CounterControl
PM> Install-Package Microsoft.Orleans.CounterControl
包含了OrleansCounterControl.exe (一个计数控制平台),为orleans注册Windows性能计数器类别统计和部署grains类。可以在云端的一部分,作为一个角色启动任务。包括在
microsoft.orleans.server。
Microsoft.Orleans.OrleansManager
PM> Install-Package Microsoft.Orleans.OrleansManager
包括奥尔良管理工具OrleansManager.exe。
Microsoft.Orleans.OrleansConsulUtils
PM> Install-Package Microsoft.Orleans.OrleansConsulUtils
使用Consul为集群成员数据存储提供的一个插件
Microsoft.Orleans.OrleansZooKeeperUtils
PM> Install-Package Microsoft.Orleans.OrleansZooKeeperUtils
使用ZooKeeper为
集群成员数据存储提供的一个插件
Microsoft.Orleans.TestingHost
PM> Install-Package Microsoft.Orleans.TestingHost
为silos的主机测试项目提供的一个类库
Microsoft.Orleans.OrleansCodeGenerator
PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator
包括运行时代码生成。包括在Microsoft.Orleans.Server和Microsoft.Orleans.Client.里
Microsoft.Orleans.OrleansTelemetryConsumers.AI
PM> Install-Package Microsoft.Orleans.OrleansTelemetryConsumers.AI
Includes the telemetry consumer for Azure Application Insights.
(不太清楚,可能是对云应用的一种测试吧)
Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic
PM> Install-Package Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic
Includes the telemetry consumer for NewRelic.
同上
Microsoft.Orleans.Serialization.Bond
PM> Install-Package Microsoft.Orleans.Serialization.Bond
提供了Bond serializer.序列化的一个支持
Bond 是一个扩展框架,用来处理系统化数据,特别适合用来处理与大数据存储和处理服务的通讯。
Bond 定义了一个丰富的类型系统和 schema 版本化规则,允许向前向后兼容。核心特性包括高性能序列化和反序列化,非常强大的通用数据传输机制。该框架是高可扩展性的,通过可插入式的序列化协议、数据流和用户定义的类型别名等。
此外 Bond 是语言和平台独立的,当前支持 C++、C# 和 Python 语言。
namespace
Examples
{
using
Bond;
using
Bond.Protocols;
using
Bond.IO.Safe;
class
Program
{
static
void
Main()
{
var
src =
new
Example
{
Name =
"FooBar"
,
Constants = { 3.14, 6.28 }
};
var
output =
new
OutputBuffer();
var
writer =
new
CompactBinaryWriter<OutputBuffer>(output);
// The first calls to Serialize.To and Deserialize<T>.From can take
// a relatively long time because they generate the de/serializer
// for a given type and protocol.
Serialize.To(writer, src);
var
input =
new
InputBuffer(output.Data);
var
reader =
new
CompactBinaryReader<InputBuffer>(input);
var
dst = Deserialize<Example>.From(reader);
}
}
}