2011-01-07 2 views
4

Я написал несколько приложений .Net Console за последние 6 месяцев, и у нас есть еще много разных проектов в нашей организации. Я обычно придерживаюсь того же стандартного формата/структуры для своих консольных приложений. К сожалению, многие из наших консольных приложений этого не делают.Консольная структура приложения

Я изучал способы стандартизации структуры этих консольных приложений. Я также хотел бы предоставить структуру базовой структуры Консольного приложения и обеспечить легкий доступ к стандартным способам обработки таких вещей, как передача аргументов, ведение журнала и т. Д.

Может ли кто-нибудь предложить рекомендации по устранению этих проблем? Я читал эту статью MSDN по адресу Console Applications in .Net, в которой предлагается шаблон проектирования для консольных приложений. В примере используется шаблон метода шаблона для обработки некоторых из перечисленных выше проблем.

В статье перечислены два негатива использования этого подхода.

  • Ending с вдвое большим количеством классов
  • Имея много простых, похожих классов

кто может предложить лучше, или более стандартных, способов обработки этого? Как насчет включения дополнительных негативов в этот подход?

+0

/Наличие множества простых, подобных классов/является общей проблемой. Напишите небольшой процессор/парсер DSL для генерации конкретных классов с нуля и использования в процессе сборки. –

+0

Пожалуйста, не используйте мини-URL. Людям не нравится нажимать на них, и этот, кажется, сломан. –

+0

Исправлена ​​ссылка. В будущем я воздержусь от использования мини-адресов. Спасибо за головы. –

ответ

1

Чтобы ответить на часть моего вопроса ...

Я потратить немало времени на поиски стандартного способа для обработки синтаксического разбора аргументов, переданных в мои консольных приложениях. Я специально искал что-то похожее на GetOpt для python. Имея это в виду, решение, на котором я остановился, составляет NDesk.Options. Он охватывает все наши потребности и, кажется, обрабатывает аргументы стандартным образом. Я думал, что это может помочь кому-то, кто наткнулся на этот вопрос в своих поисках.

+0

Используете ли вы NDesk.Options в производстве? Веб-сайт утверждает довольно крупными буквами, что он нестабилен. Это создавало проблемы для вас? – Cornelius

+0

В настоящее время я использую его в нескольких производственных услугах и не сталкиваюсь с какими-либо проблемами или нестабильностью. С этим было приятно работать. –

+0

Это замечательно слышать. Спасибо за ответ. :) – Cornelius

0

Я стараюсь, чтобы мои консольные приложения были настолько простыми, насколько это возможно, и в другом слое, чтобы его можно было легче тестировать на устройствах и приемочных испытаниях. Я также, как правило, сохраняю мои консольные приложения простыми/однозадачными, поэтому у меня часто не так много возможных путей через такие вещи, как аргументы командной строки. Это позволяет мне просто принимать аргументы, если они есть, анализировать их и передавать их логике «назад».

Смежные вопросы