Вопрос

В проекте построения приложений, над которым я работаю, я пытаюсь решить, использовать ли Осло, Т4 или КодДом для генерации кода.Наша цель — свести зависимости к минимуму и стимулировать генерацию кода для предметно-ориентированного дизайна на основе пользовательских историй.Первым шагом будет создание тестов на основе пользовательских историй, но мы хотим, чтобы эксперты в предметной области могли писать свои истории на различных носителях (например,пользовательское приложение, Word и т. д.) и при этом генерировать тесты из историй.

Что я знаю на данный момент:

  1. CodeDom требует .NET, но может выводить только файлы классов .NET (например,.cs, .vb).Уровень сложности довольно высокий.
  2. T4 требует CodeDom и VS Standard+.Уровень сложности довольно разумный, особенно с учетом Набор инструментов T4.
  3. Осло очень новый город.Я понятия не имею о зависимостях, но полагаю, что у вас должна быть как минимум .NET 3.5.Я также не уверен в возможностях генерации кода или сложности добавления новых грамматик.Однако эксперты в предметной области, вероятно, могли бы довольно легко писать пользовательские истории в Intellipad.Также не уверен насчет простоты преобразования историй из Word в MGrammar.

Какие у вас мысли, опыт и т.любым из вышеперечисленных инструментов.Мы хотим придерживаться Microsoft или инструментов с открытым исходным кодом.

Это было полезно?

Решение

Перейти на Т4 – простое решение.

  • Осло слишком нов, а инструменты слишком сыры, чтобы быть чем-то большим, чем технологией, предназначенной только для ознакомления.
  • CodeDOM — это мощный инструмент, если вам нужно генерировать классы CLR во время выполнения и вы готовы пожертвовать простой модификацией сгенерированного вывода.
  • T4 (с набором инструментов T4) — это простой в использовании инструмент генерации кода общего назначения.Единственная трудность, с которой я столкнулся до сих пор, связана с интеграцией во время сборки.

Другие советы

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

Вам нужно будет определить некий формализованный язык для пользовательских историй, будь то XML или язык предметной области Осло.Осло потребует от экспертов в вашей области изучения инструментов Осло.Вы можете использовать Word + XML.Затем вы определяете красивый шаблон в Word со встроенной схемой XML, и после того, как история написана, вы можете получить его из Word в формализованном синтаксисе XML. Этот XML, конечно, можно использовать для управления генераторами через XSLT или Linq.

CodeDOM — мощный, но довольно громоздкий инструмент.ИМХО, это непростое в использовании решение, и оно не имеет реальной поддержки шаблонов.

У меня нет опыта работы с T4, но его функции шаблонов являются предварительными.

Продукт Oslo действительно довольно новый, для него требуется .Net 4.0, среда выполнения.Это все еще только ОСАГО.Это очень мощная среда, хотя у меня есть некоторые сомнения по поводу истории создания базы данных.

Надеюсь это поможет.

Ну, Осло в этот список не входит.Пока что у него нет истории генерации кода.Так что придерживайтесь Т4.

Осло не намерен генерировать для вас код.Вам придется создать среду выполнения (например, программу C#), которая меняет свое поведение в зависимости от данных.Вы можете видеть это как интернет-браузер.

Я не верю, что Осло требует .Net 4.0, как упоминает Райн.Для стажировки в Avanade Netherland я создаю Oslo MSchema и MGrammars, а также среду выполнения C#3.5.В зависимости от предоставленных данных он будет создавать (не генерировать) службы WCF и запускать их.

Есть несколько интересных применений Осло

  • «новый LDAP» System.Identity, подробнее в видео сеанса PDC http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling (я думаю) Microsoft.UML2, куда вы можете помещать информацию о методах, классах, модулях и т. д.в репозитории, анализируйте его и создавайте отчеты.Например, создайте отчет с методами, добавленными/удаленными между двумя сборками. http://microsoftpdc.com/Sessions/SVR19
  • и конечно моделирование
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top