小编Tom*_*nik的帖子

如何获得无状态框架的优势

我想在我的代码中使用http://code.google.com/p/stateless将功能与其依赖项分开.我没有找到任何高级的用法示例,所以这个问题是关于无状态框架的最佳实践.

我有以下配置(这只是一个例子,只有一个功能状态):

var stateMachine = new StateMachine(State.Stopped);

stateMachine.Configure(State.Stopped)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.GenerateMachineData);

stateMachine.Configure(State.GenerateMachineData)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.Finished);

public enum State
{
    Stopped,
    GenerateMachineData,
    Finished,
    Error
}

public enum Trigger
{
    Succeed,
    Failed
}
Run Code Online (Sandbox Code Playgroud)

那么在哪里调用实际的功能.我有以下想法,但每个都有优点和缺点:

1)在OnEntry()中设置功能以及下一次触发:

stateMachine.Configure(State.GenerateMachineData)
.OnEntry(() => { 
    try {
       Generate(); 
       stateMachine.Fire(Trigger.Succeed);
    } catch {
       stateMachine.Fire(Trigger.Error);
    } 
})
.Permit(Trigger.Failed, State.Error)
.Permit(Trigger.Succeed, State.Finished);
Run Code Online (Sandbox Code Playgroud)

那么如果我只是打电话

stateMachine.Fire(Trigger.Succeed);
Run Code Online (Sandbox Code Playgroud)

它最终在State.Finished或State.Error中结束

  • 优点 - 全部在一起
  • disadvatages - 解决方案不能真正单元测试

2)将状态机和功能分开,如: __CODE____CODE__直接传入,因为这可能不是你想要发生的.即使他们这样做了,你仍然需要__CODE__/ __CODE__处理创建对象的错误.供应商是一种懒惰的回调,它允许一次性创建,使用和关闭实际对象,而不必进行大量的丑陋__CODE__/ __CODE__错误处理.

例如,只需查看将一个文件复制到另一个文件所需的代码(使用Guava实用程序将实际复制和流关闭代码最小化):

void DoTheStuff() …

.net c# stateless-state-machine

18
推荐指数
2
解决办法
1万
查看次数

在上下文中启动远程进程

我想知道如何在用户上下文中远程启动进程,就像他启动它一样.让我解释.我知道如何远程启动进程,所以例如我想启动记事本:

Invoke-WmiMethod win32_process -name create -ComputerName $remoteMachine -ArgumentList "notepad" -credential (Get-Credential)
Run Code Online (Sandbox Code Playgroud)

问题是它启动记事本"在后台"(不在用户上下文中),所以在这种情况下他不会看到打开的"记事本"对话框/进程(他将在任务管理器的进程列表中看到记事本).我希望他看到记事本窗口对话框.

有谁知道如何实现这一目标?

powershell remote-access

6
推荐指数
2
解决办法
7564
查看次数

Powershell属性?

是否可以将一些元数据属性分配给PowerShell宏?我有一组宏,我想将它们封装到逻辑组.我想象的是:

[UnitTest]
function Do-Something()
{
...
}
Run Code Online (Sandbox Code Playgroud)

然后在运行时传递所有加载的宏并将其过滤掉,如:

$macrosInRuntime = Get-Item function: 
$unitTestMacros = $macrosInRuntime | 
    ? {$_.Attributes -contain "UnitTest"} # <-- ???
foreach ($macro in $unitTestMacros)
{
   ....
}
Run Code Online (Sandbox Code Playgroud)

我会很乐意帮助你

powershell metadata

5
推荐指数
1
解决办法
531
查看次数

Quartz vs"Reactive Extensions"

我正在为C#寻找一个调度库,很长一段时间我虽然"唯一"选项是Quartz.NET,它非常强大且工作得很好.但是,当我发现"Reactive Extensions"(RX - http://msdn.microsoft.com/en-us/data/gg577609)时,我意识到它也可以执行与时间相关的操作,并且具有本机.NET前端.

Rx在时间相关操作方面有哪些局限性?我需要在特定的时间间隔内,在一段时间后重复发射任务.

有什么重大差异吗?(在性能等方面 - 例如根据我的经验,当有超过1500+的任务时,Quartz冻结 - 预定任务)

.net c# scheduled-tasks quartz.net system.reactive

5
推荐指数
1
解决办法
1233
查看次数

从 HTTP 下载脚本并使用 Powershell 使用参数运行它的最短方法是什么?

我有一个 PowerShell 脚本文件存储在内部工件服务器中。脚本网址为http://company-server/bootstrap.ps1.

下载该脚本并使用自定义参数执行的简洁方法是什么?

我想将这样的命令发送给用户,他们会一遍又一遍地复制粘贴它,因此它必须是单行并且应该很短。

我目前所做的工作,但它又长又笨拙:

$c=((New-Object System.Net.WebClient).DownloadString('http://company-server/bootstrap.ps1'));Invoke-Command -ScriptBlock ([Scriptblock]::Create($c)) -ArgumentList 'RunJob'
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更短的方法来做到这一点。

powershell

3
推荐指数
1
解决办法
1928
查看次数

Solarwinds可以被操纵以实现自动化

我们如何操纵 Solarwinds,这对自动化部署很有用。这可以是命令行界面或 API 或任何其他可以让我们在无需人工干预的情况下禁用和重新启用 Solarwinds 监视器的东西。待了解后将添加更多细节

使用 SolarWinds API 将监视器禁用和重新启用添加到部署脚本中

请协助编写脚本。谢谢

也许将脚本放在deploy.target中

阿米特

server-monitoring solarwinds-orion

0
推荐指数
1
解决办法
836
查看次数