title: PowerShell客户端模块

Orleans PowerShell客户端模块是一套PowerShell Cmdlets,它将Grain客户端包装为一套易用的指令,使之不仅可以与ManagementGrain,还可以与任意IGrain使用PowerShell脚本进行交互,就像一般的Orleans应用一样。

这些Cmdlets通过Powershell脚本,实现了从启动维护任务、测试、监控或其他类型的自动化的一系列场景。

以下是使用示例:

安装模块

从源代码安装

你可以从源码构建OrleansPSUtils项目,并直接导入它:

  1. PS> Import-Module .\projectOutputDir\Orleans.psd1

尽管你可以这样做,但有一个更简单和有趣的方法,即从PowerShell Gallery安装它。

从PowerShell Gallery安装

现今的Powershell模块就像Nuget包一样易于分享,但并不是在nuget.org,而是托管在PowerShell Gallery

  • 要将其安装到指定目录,只要运行:
  1. PS> Save-Module -Name OrleansPSUtils -Path <path>
  • 要将其安装到你的PowerShell模块路径(推荐的方式),只要运行:
  1. PS> Install-Module -Name OrleansPSUtils
  • 如果你打算在Azure Automation上使用这个模块,只需点击下面的按钮:

使用模块

Regardless of the way you decide to install it, the first thing you need to do in order to actually use it is import the module on the current PowerShell session so the Cmdlets get available by running this: 无论以何种方式安装它,要实际使用它,你需要做的第一件事是在当前的PowerShell会话中导入该模块,这样就可以使用Cmdlets:

  1. PS> Import-Module OrleansPSUtils

注意: 如果从源码构建,你必须按照安装部分的建议导入,使用.psd1的路径而不是使用模块名称,因为它不会在$env:PSModulePath的PowerShell运行时变量上。 同样,强烈建议你从PowerShell Gallery安装。

导入模块后(这意味着它被加载到PowerShell会话中),你将有以下Cmdlets可用:

  • Start-GrainClient
  • Stop-GrainClient
  • Get-Grain

Start-GrainClient

该模块是对GrainClient.Initialize()及其重载的封装。

用法:

  • Start-GrainClient

    • 与调用GrainClient.Initialize()相同,它将查找已知的Orleans客户端配置文件名称
  • Start-GrainClient [-ConfigFilePath] <string> [[-Timeout] <timespan>]

    • 将使用所提供的文件路径,与GrainClient.Initialize(filePath)一致
  • Start-GrainClient [-ConfigFile] <FileInfo> [[-Timeout] <timespan>]

    • 使用代表配置文件的System.FileInfo类的实例,就像GrainClient.Initialize(fileInfo)一样
  • Start-GrainClient [-Config] <ClientConfiguration> [[-Timeout] <timespan>]

    • 使用Orleans.Runtime.Configuration.ClientConfiguration的实例,就像GrainClient.Initialize(config)一样
  • Start-GrainClient [-GatewayAddress] <IPEndPoint> [[-OverrideConfig] <bool>] [[-Timeout] <timespan>]

    • 集群网关地址Endpoint

注意: 参数Timeout是可选的,如果设置了并且大于System.TimeSpan.Zero,它将在内部调用Orleans.GrainClient.SetResponseTimeout(Timeout)

Stop-GrainClient

不带任何参数,当调用时,如果GrainClient已经被初始化了,将适当地取消初始化。

Get-Grain

GrainClient.GrainFactory.GetGrain<T>()及其重载的封装。

必需参数是-GrainType-XXXKey,用于当前Orleans支持的Grain键类型(string, Guid, long),还有-KeyExtension,可用于有复合键的Grain。

这个Cmdlet返回一个由参数-GrainType传递的Grain引用。

示例:

一个调用MyInterfacesNamespace.IMyGrain.SayHeloToGrain方法的简单例子。

  1. PS> Import-Module OrleansPSUtils
  2. PS> $configFilePath = Resolve-Path(".\ClientConfig.xml").Path
  3. PS> Start-GrainClient -ConfigFilePath $configFilePath
  4. PS> Add-Type -Path .\MyGrainInterfaceAssembly.dll
  5. PS> $grainInterfaceType = [MyInterfacesNamespace.IMyGrain]
  6. PS> $grainId = [System.Guid]::Parse("A4CF7B5D-9606-446D-ACE9-C900AC6BA3AD")
  7. PS> $grain = Get-Grain -GrainType $grainInterfaceType -GuidKey $grainId
  8. PS> $message = $grain.SayHelloTo("Gutemberg").Result
  9. PS> Write-Output $message
  10. Hello Gutemberg!
  11. PS> Stop-GrainClient

我们计划在引入更多的Cmdlets,比如在Powershell上更原生地使用观察者、流以及其他Orleans核心功能时,更新这个页面。 我们希望这能帮助人们作为自动化的一个起点。像往常一样,这是一项正在进行中的工作,我们欢迎大家的贡献。:)

注意,我们的目的不是在PowerShell上重新实现整个客户端,而是给IT和DevOps团队提供一种与Grains交互的方式,且不需要实现一个.Net应用程序。