Orleans 应用程序
正如前面的主题所述,典型的Orleans
应用程序由一组服务器进程(孤岛)组成,其中包含Grain
live和一组客户端进程(通常是web服务器),它们接收外部请求,将它们转换为Grain
方法调用并返回结果。因此,运行Orleans
应用程序需要做的第一件事就是启动一个群集Silo
。出于测试目的,群集可以由单个组成Silo
。为了实现可靠的生产部署,我们显然希望Silo
集群中有不止一个用于容错和扩展。
一旦群集运行,我们就可以启动一个或多个连接到群集的客户端进程,并向该群集发送请求Grain
。客户端连接到Silo
网关上的特殊TCP端点。默认情况下,Silo
集群中的每个客户端都启用了客户端网关。因此,客户可以Silo
并行连接所有设备,以获得更好的性能和弹性。
配置和启动Silo
A Silo
通过一个ClusterConfiguration
对象以编程方式进行配置。它可以被直接实例化和填充,从一个文件加载设置,或者为不同的部署环境使用几种可用的帮助器方法创建。对于本地测试,最简单的方法是使用ClusterConfiguration.LocalhostPrimarySilo()
助手方法。然后将配置对象传递给一个新的SiloHost
类实例,可以在此之后进行初始化和启动。
您可以创建一个空的控制台应用程序项目,以.NET Framework 4.6.1或更高版本为主机Silo
。将NuGet元软件包添加到项目中。Microsoft.
Orleans
.Server
PM> Install-Package Microsoft.Orleans.Server
这是一个如何Silo
启动本地的例子:
var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();
Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();
// shut the silo down after we are done.
silo.ShutdownOrleansSilo();
配置和连接客户端
用于连接到群集Silo
并发送请求的客户端Grain
通过ClientConfiguration
对象和a 以编程方式进行配置ClientBuilder
。 ClientConfiguration
对象可以实例化并直接填充,可以从文件加载设置,也可以为不同的部署环境使用几种可用的帮助程序方法创建。对于本地测试,最简单的方法是使用ClientConfiguration.LocalhostSilo()
助手方法。然后将配置对象传递给一个新的ClientBuilder
类实例。
ClientBuilder
公开更多配置其他客户端功能的方法。之后调用Build
该ClientBuilder
对象的方法来获取IClusterClient
接口的实现。最后,我们调用Connect()
返回对象的方法来连接到集群。
您可以创建一个空的控制台应用程序项目,以.NET Framework 4.6.1或更高版本为目标,以运行客户端或重新使用您创建的托管应用程序项目Silo
。将NuGet元软件包添加到项目中。Microsoft.
Orleans
.Client
PM> Install-Package Microsoft.Orleans.Client
以下是客户端如何连接到本地的示例Silo
:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
生产配置
我们在这里使用的配置示例用于测试Silo
和客户端运行在同一台机器上localhost
。在生产中,Silo
客户端通常运行在不同的服务器上,并且配置有可靠的群集配置选项之一。您可以在“ 配置指南”和“ 群集管理”的描述中找到更多相关信息。