Системы, похожие на NakedObjects?

Некоторое время назад я прочитал книгу о голых предметах и был взволнован идеями. Писать только мою основную бизнес-логику и автоматически генерировать пользовательский интерфейс? Запишите меня!

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

  • Дефекты
  • Полезные шаблоны взаимодействия (для реализации пользовательского интерфейса, особенно уместно, если придерживаться мнения, что пользовательский интерфейс в основном "создает сценарии для объектов домена")
  • Новые возможности.

С этой целью меня интересуют любые системы, похожие на Naked Objects. Я проделал некоторую работу, такую ​​как поиск совпадений по строкам, таким как "Direct Manipulation UI", но не нашел ничего полезного.

Знаете ли вы о какой-либо работе в том же духе? Я бы предпочел что-то на PHP или JavaScript, и это не предполагает, что я использую Linux. Я знаю о NakedPHP и Spiro (не могу найти документацию для этого), но они обе в основном являются реализациями Naked Object для PHP и javascript соответственно.

Знаете ли вы о каких-либо других системах?

2 ответа

Решение

Я наткнулся на несколько других возможных ключевых терминов и нашел несколько, хотя не все они в javascript.

Кажется, они лучше подходят...

Метавиджет особенно интересен. Он поддерживает JavaScript и прост в использовании. Вы можете просто предоставить ему свою модель предметной области (объект JSON), и он может сгенерировать для нее пользовательский интерфейс. Кроме того, он не захватывает вашу страницу, поэтому может существовать в уже существующем пользовательском интерфейсе и позволяет настраивать пользовательский интерфейс.

Они также включают страницу сравнения с аналогичными продуктами.

Еще один интересный - BlueJ; это образовательная платформа, основанная на (идее?) Naked Objects, но может использоваться для небольших проектов. По сути, вы можете графически создавать экземпляры вашего класса через контекстное меню, затем вы можете проверять и вызывать результирующие методы объекта тем же способом (потенциально создавая больше объектов в процессе).

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

Я все еще исследую их, особенно объектные, и открыт для других предложений.

Как соавтор книги "Голые предметы", я хотел бы добавить свою точку зрения.

Нередко людям действительно нравится концепция шаблона обнаженных объектов, но не нравится конкретный пользовательский интерфейс. Вы не сказали, как давно вы смотрели на реализацию, или действительно, какую. Две основные реализации с открытым исходным кодом (есть несколько других, но менее установленных):

  • Naked Objects Framework, для платформы.NET
  • Apache Isis, для платформы Java

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

Совсем недавно Дэн Хейвуд и я значительно продвинули идею шаблона "обнаженных объектов", представив спецификацию http://restfulobjects.org/ - сверхчистый REST API, который работает для любой модели с расширенными областями. Обе реализации двух голых объектов теперь также реализуют спецификацию Restful Objects. Дело в том, что с помощью RO API теперь относительно легко спроектировать новые, радикально отличающиеся пользовательские интерфейсы (универсальные или полностью индивидуальные), которые взаимодействуют с серверной реализацией RO. Другими словами, относительно легко создать свою собственную реализацию концепций обнаженных объектов на стороне клиента, повторно используя любую из двух основных реализаций на стороне сервера.

Spiro, о котором вы упомянули, является нашей первой попыткой создать библиотеку строительных блоков для создания такого пользовательского интерфейса, используя JavaScript (на самом деле TypeScript) и Angular.js. И классная особенность использования спецификации RO заключается в том, что вы можете запускать один и тот же клиент для любой реализации сервера. Я рекомендую вам внимательно посмотреть на это.

Другие вопросы по тегам