Каков наилучший способ создания многоязычных версий домена? - PullRequest
1 голос
/ 09 июля 2010

Я хотел бы создать набор объектов домена на нескольких языках, чтобы я мог ориентироваться на разные платформы. Я рассматривал внешние DSL как способ определения языка для своего домена, а затем потенциально писал адаптеры, которые генерируют код для языков, на которые я заинтересован. Это лучший способ решить эту проблему? Или проще поддерживать несколько версий проекта?

Ответы [ 4 ]

2 голосов
/ 17 июля 2010

Я думаю, что Apache Thrift доставит то, что вы просите.

1 голос
/ 11 февраля 2011

Извините за поздний ответ, но, поскольку вы говорите, что C # является вашим основным языком, эта практически полностью поддерживаемая технология на основе Visual Studio - именно то, что вы ищете.

Вы должны понимать, что вы хотите абстрагировать с помощью своих DSL, но поддержка мультиплатформы тривиальна к этому.

Отказ от ответственности: это наша технология, но она открыта для общественности и решает именно ту проблему, которая представлена ​​в вопросе.

http://abstraction.codeplex.com/

Внимание! Не забывайте о самой «альфа» стадии текущей загрузки, я предлагаю вам пропустить заархивированную загрузку и взять последний источник. Я обновляю лучшую конструкцию в относительно ближайшем будущем. Ознакомьтесь с реализацией «Context» в решении «Production / Dev / AbstractionTemplate».

0 голосов
/ 18 июля 2010

Каков наилучший способ создания многоязычных версий домена?

Это (было?) Как-то идея Model Driven Architecture (MDA) .Цитирование Модельно-ориентированная архитектура из Википедии:

Модельно-управляемый подход к архитектуре определяет функциональные возможности системы с использованием модели, не зависящей от платформы (PIM), с использованием соответствующего языка, специфичного для домена (DSL).

Затем, учитывая модель определения платформы (PDM), соответствующую CORBA, .NET, Web и т. Д., PIM преобразуется в одну или несколько моделей платформы (PSM), которые могут работать на компьютерах.,Это требует сопоставлений и преобразований и должно быть смоделировано.

PSM может использовать разные доменно-ориентированные языки (DSL) или язык общего назначения (GPL), такие как Java, C #, PHP, Python и т. Д. Автоматизированные инструментыобычно выполняют этот перевод.

В зависимости от сложности вашего домена и доступности инструмента MDA, это может быть вариант (с более низкой стоимостью внедрения).

См. также

0 голосов
/ 13 июля 2010

Трудно быть полезным, не понимая, для чего вы планируете использовать DSL.

Является ли переносимость вашей главной проблемой здесь?Чтобы успешно нацелиться на эти разные платформы, вам, вероятно, придется все равно поддерживать слои, специфичные для платформ (сгенерированные или нет).

Если вы планируете записать все свое приложение в DSL, то используйте собственный компилятор для его преобразования.в работоспособный код для каждой платформы, это, скорее всего, плохая идея, слишком сложная и слишком сложная.

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

...