Шаблон репозитория с использованием PowerShell - PullRequest
0 голосов
/ 09 февраля 2011

Вот моя проблема,

Моя проблема на самом деле не в PowerShell, а в том, как я должен использовать его для реализации постоянства.Я часто получаю случаи, когда есть более 4 команд для выполнения логики или применения постоянства.

Например:

При настройке зоны DNS я получаю нормальный New / Get / Set/ Remove-DnsZone и Suspend / Unsuspend-DnsZone.Мои товарищи по команде в настоящее время обрабатывают это так, что они создают в хранилище дополнительный метод для обработки дополнительных команд.

Мне кажется, что вместо этого поведение должно быть на объекте, и что Suspend / Unsuspend-DnsZone долженвызываться при выполнении Create или Update в репо.

Что вы думаете?


РЕДАКТИРОВАТЬ В соответствии с просьбой я напишу некоторый код, чтобы продемонстрировать, о чем я говорю.

Это поддельный пример с почти аналогичной реализацией нашей оболочки Powershell.Это метод в репозитории, который делают мои товарищи по команде:

public void Suspend(DnsZone zone)
{
   _powerShell.Execute("Suspend-Zone", new Dictionary<string, object>{{"Name", zone.Name}});
}

Так что где-то в вашей логике, чтобы приостановить зону, вы должны позвонить

var myZone = new DnsZone{ Name= "xyz"};
_zones.Suspend(myZone);

Вместо этого я склоненчто DnsZone должен иметь свойство или метод.Так что логика не в репо, а в самом объекте.Даже при том, что репо должно преобразовать это в вызов Зоны приостановки.

var myZone = _zones.FindByName("nyname");
myZone.Suspend();
_zones.Save(myZone);

hth

1 Ответ

0 голосов
/ 09 февраля 2011

Кажется, что это нарушит многие функции конвейерной обработки, которые делают Powershell таким простым в использовании из командной строки. Если вы исключили командлет Suspend-DNSZone в пользу метода объекта, вы не сможете выполнить

  get-dnszone | suspend-dnszone 

Вы должны сделать

  get-dnszone | foreach-object {$_.suspend()}

Не улучшение, ИМХО.

...