C # Systems.Net библиотека против сетевых инструментов командной строки - PullRequest
0 голосов
/ 02 декабря 2018

Для части приложения на C # я выполняю несколько относительно простых сетевых команд.(ping, ipconfig, tracert, nslookup и т.Мне особенно интересно работать с сетью и библиотекой Systems.Net, есть ли какое-то существенное преимущество, заключающееся в том, что у вас есть время написать код для их реализации на C #, а не создавать новую командную строку Process() в приложении C # и выполнять ее таким образом.?(Маршрут Process() действительно прост / легко кодируется в приложении C #)

Вопрос: Каковы мои основные преимущества реализации сетевых команд с помощью библиотеки C # Systems.Net по сравнению с созданиемНовый Process() в приложении C # и внутренне, как если бы вы использовали командную строку?

1 Ответ

0 голосов
/ 02 декабря 2018

Нет ничего плохого в запуске процесса.Вы даже можете запустить PowerShell и использовать его для последовательности действий, которые легко выполнить в PowerShell.

Запуск процесса не так прост, как вы думаете.

  1. Вам необходимонапример, прочитать стандартный вывод и ошибку.Иначе процесс зависнет случайно.Сделать это на удивление сложно.
  2. Получить результаты из команд сложнее, чем с использованием класса .NET.В .NET вы возвращаете объекты и исключения.Процесс может только отправить вам текст и код ошибки.
  3. Также есть дополнительные издержки.То, имеет ли это значение, зависит от частоты таких операций.
  4. Вы можете оставить дочерние процессы сиротами.Лучшее решение - использовать объект задания Windows для уничтожения дочернего дерева при выходе из родительского объекта.

Так что это зависит от конкретного случая.Я бы определенно сделал пинг из C #, так как это очень легко сделать.Другие команды могут выиграть от запуска процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...