PowerShell客户端模块
Orleans PowerShell客户端模块是一组PowerShell Cmdlet,它将GrainClient包装在一组方便的命令中,这样不仅可以与ManagementGrain进行交互,还可以与任何IGrain
交互,就像使用Powershell脚本与常规的Orleans应用程序进行交互一样。
这些Cmdlet通过利用Powershell脚本实现了一系列场景,包括从启动维护任务、测试、监视或任何其他类型的自动化。
以下是如何使用它:
安装模块
从源代码
您可以从源代码构建OrleansPSUtils
项目,通过以下命令,导入它:
PS> Import-Module .\projectOutputDir\Orleans.psd1
虽然可以这样做,但从PowerShell Gallery安装它,是一种更简单和有趣的方法。
从PowerShell Gallery
今天的Powershell模块可以像Nuget包一样轻松共享,但它们不是托管在nuget.org,而是在PowerShell Gallery上。
- 要将其安装到指定的文件夹,只需运行:
PS> Save-Module -Name OrleansPSUtils -Path <path>
- 要将其安装到PowerShell模块路径(推荐方式),只需运行:
PS> Install-Module -Name OrleansPSUtils
- 如果您计划在Azure自动化上使用此模块,只需单击下面的按钮:
使用该模块
无论您决定如何安装它,要实际使用它,首先要做的是在当前的PowerShell会话上导入模块,以便通过运行以下命令使Cmdlets可用:
PS> Import-Module OrleansPSUtils
注意:如果是从源代码构建,则必须按照安装章节的建议,使用.psd1
来导入它,而不是使用模块名,因为它不在$env:PSModulePath
PowerShell运行时变量上。同样,强烈建议您从PowerShell Gallery安装。
导入模块后(这意味着它在PowerShell会话中加载),您将拥有以下可用的Cmdlet:
Start-GrainClient
Stop-GrainClient
Get-Grain
Start-GrainClient
这个模块是对GrainClient.Initialize()
及其重载的包装。
用法:
-
Start-GrainClient
- 与调用
GrainClient.Initialize()
相同,它将查找已知Orleans Client配置文件名。
- 与调用
-
Start-GrainClient [-ConfigFilePath] <string> [[-Timeout] <timespan>]
- 将使用
GrainClient.Initialize(filePath)
中提供的文件路径。
- 将使用
-
Start-GrainClient [-ConfigFile] <FileInfo> [[-Timeout] <timespan>]
- 正如
GrainClient.Initialize(fileInfo)
一样,使用System.FileInfo
类的实例,来表示配置文件。
- 正如
-
Start-GrainClient [-Config] <ClientConfiguration> [[-Timeout] <timespan>]
- 类似于
GrainClient.Initialize(config)
,使用Orleans.Runtime.Configuration.ClientConfiguration
的实例。
- 类似于
-
Start-GrainClient [-GatewayAddress] <IPEndPoint> [[-OverrideConfig] <bool>] [[-Timeout] <timespan>]
- 采用Orleans 集群的网关地址的端点
注意:该Timeout
参数是可选的,如果有指定且大于System.TimeSpan.Zero
,则它将在内部调用Orleans.GrainClient.SetResponseTimeout(Timeout)
。
Stop-GrainClient
它没有参数,当它被调用后,就会很好地反初始化(如果GrainClient
已被初始化)。
Get-Grain
它是GrainClient.GrainFactory.GetGrain<T>()
及其重载的包装。
对于Orleans支持的当前grain的键的类型(string
,Guid
,long
),-GrainType
和-XXXKey
是强制性参数。-KeyExtension
也是强制性的参数,它可以用于具有复合键的grain。
此Cmdlet返回-GrainType
上,被作为参数来传递的类型的grain引用。
例:
以下是关于调用MyInterfacesNamespace.IMyGrain.SayHeloTo
grain方法的一个简单示例:
PS> Import-Module OrleansPSUtils
PS> $configFilePath = Resolve-Path(".\ClientConfig.xml").Path
PS> Start-GrainClient -ConfigFilePath $configFilePath
PS> Add-Type -Path .\MyGrainInterfaceAssembly.dll
PS> $grainInterfaceType = [MyInterfacesNamespace.IMyGrain]
PS> $grainId = [System.Guid]::Parse("A4CF7B5D-9606-446D-ACE9-C900AC6BA3AD")
PS> $grain = Get-Grain -GrainType $grainInterfaceType -GuidKey $grainId
PS> $message = $grain.SayHelloTo("Gutemberg").Result
PS> Write-Output $message
Hello Gutemberg!
PS> Stop-GrainClient
我们计划更新此页面,因为我们在Powershell上更多地使用Observers、Streams和其他Orleans核心功能,引入了更多的Cmdlet。我们希望这有助于人们开始进行自动化。一如既往地,这是一项正在进行中的工作,我们热爱贡献!:)
请注意,我们的目的不是在PowerShell上重新实现整个客户端,而是为IT和DevOps团队提供一种无需实现.NET应用程序,就可以与Grains交互的方法。