本地开发配置
对于针对Orleans 2.0的工作示例应用程序,请参阅:https://github.com/dotnet/orleans/tree/master/Samples/2.0/HelloWorld 该示例在可适用于不同平台的.NET Core控制台应用程序中,承载了客户端和的silo,也可以使用.NET Framework 4.6.1+控制台应用程序来承载(仅适用于Windows)。
silo的配置
有关本地开发,请参阅以下示例,了解如何为这种情况配置silo。它配置并启动一个silo,分别监听“loopback”地址和11111和30000作为silo和网关的端口。
将Microsoft.Orleans.Server
NuGet元数据包添加到项目中。熟悉API后,您可以选择Microsoft.Orleans.Server
实际确切需要的包,然后引用它们。
PM> Install-Package Microsoft.Orleans.Server
您需要通过ISiloBuilder.Configure
方法来配置ClusterOptions
,指定DevelopmentClustering
作为您的集群选择,用此silo作为主节点,然后配置silo端点。
ConfigureApplicationParts
调用显式地将带有grain类的程序集添加到应用程序设置中。它还添加了由于WithReferences
扩展而被引用的任何程序集。完成这些步骤后,构建silo主机并启动silo。
您可以创建一个针对.NET Framework 4.6.1或更高版本的空控制台应用程序项目,用于托管silo以及.NET Core控制台应用程序。
以下是如何启动本地silo的示例:
public class Program
{
public static async Task Main(string[] args)
{
try
{
var host = await StartSilo();
Console.WriteLine("Press Enter to terminate...");
Console.ReadLine();
await host.StopAsync();
return;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return;
}
}
private static async Task<ISiloHost> StartSilo()
{
var builder = new SiloHostBuilder()
// Use localhost clustering for a single local silo
.UseLocalhostClustering()
// Configure ClusterId and ServiceId
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
// Configure connectivity
.Configure<EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback)
// Configure logging with any logging framework that supports Microsoft.Extensions.Logging.
// In this particular case it logs using the Microsoft.Extensions.Logging.Console package.
.ConfigureLogging(logging => logging.AddConsole());
var host = builder.Build();
await host.StartAsync();
return host;
}
}
客户端配置
对于本地开发,请参阅以下示例,了解如何为这种情况配置客户端。它配置了一个连接到loopback
silo的客户端。
将Microsoft.Orleans.Client
NuGet元数据包添加到项目中。熟悉API后,您可以选择Microsoft.Orleans.Client
实际确切需要的包,然后引用它们。
PM> Install-Package Microsoft.Orleans.Client
您需要使用集群ID来配置ClientBuilder
,此集群ID与为本地silo指定的集群ID要匹配,然后指定静态集群作为您的集群选择,并将其指向silo的网关端口。
ConfigureApplicationParts
调用显式地将带有grain接口的程序集添加到应用程序设置中。
完成这些步骤后,我们可以构建客户端,然后在客户端上调用Connect()
方法以连接到群集。
您可以创建一个针对.NET Framework 4.6.1或更高版本的空控制台应用程序项目来运行客户端,或者重用您为承载silo而创建的控制台应用程序项目。
以下是客户端如何连接到本地silo的示例:
client = new ClientBuilder()
// Use localhost clustering for a single local silo
.UseLocalhostClustering()
// Configure ClusterId and ServiceId
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
.ConfigureLogging(logging => logging.AddConsole())
var client = builder.Build();
await client.Connect();