Статьи

10 вопросов для Марка Манделя по переводу ORM

В преддверии конференции WebDU на следующей неделе Марк Мандель только вчера выпустил версию Transfer ORM 1.0. Если вы задаетесь вопросом, что, черт возьми, переносит ORM и почему вас это должно волновать, я попросил Марка ответить на несколько вопросов, чтобы объяснить нам все это.

Этот пост находится в той же серии (и использует те же вопросы), что и Джефф Бауэрс на FarCry и Джон Фаррар на COOP .

Привет Марк! Дайте нам ваш лифт шаг: кратко изложите суть передачи в предложении или два.

Transfer — это объектно-реляционный картограф для ColdFusion.

Он генерирует и заполняет CFC, которые являются объектами, представляющими данные в вашем приложении, на основе файла конфигурации XML. Оттуда он может автоматически вставлять, обновлять, удалять эти данные в и из вашей базы данных, без необходимости писать какие-либо SQL или CFML для этого.

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

На верхнем уровне Transfer создает для вас то, что обычно называют бизнес-объектами, без необходимости писать CFML или создавать CFC. Под Бизнес-объектом я подразумеваю Объект, который представляет сущность в вашей системе, такую ​​как Пользователь, Продукт или Заказ.

Эти сгенерированные бизнес-объекты (часто называемые TransferObjects после каркаса) также могут быть расширены и улучшены, чтобы позволить вам написать любые дополнительные пользовательские функции, которые могут вам понадобиться.

Будучи объектно-реляционным картографом, Transfer может принимать эти объекты TransferObject и автоматически генерировать для вас все операции создания, чтения, обновления и удаления SQL.

Например, если я хочу, чтобы Transfer извлекал конкретного пользователя из базы данных и возвращал мне объект User, все, что мне нужно сделать, это:

user = transfer.get("User", 1);

И у меня будет объект User, который имеет все соответствующие данные для записи User, с первичным ключом «1», который затем может быть получен из объекта User, например


The user name is #user.getFirstName()# #user.getLastName()#

Затем можно редактировать информацию об объекте User и передавать ее обратно в Transfer, чтобы сохранить ее в базе данных, например,

user.setFirstName("Mark");
user.setLastName("Mandel");

transfer.save (пользователь);

И теперь для записи пользователя в базе данных в столбцах «FirstName» и «LastName» установлены значения «Mark» и «Mandel» соответственно.

Если я затем хочу удалить этот конкретный объект пользователя из базы данных, это простая операция,

transfer.delete(user);

И запись пользователя была удалена из базы данных, без необходимости писать строку SQL.

Transfer делает намного больше, чем просто это, включая обработку состава объектов, генерацию запросов к спискам и предоставление настраиваемого уровня кэширования.

Если этой информации недостаточно, вот более полный обзор перевода .

Как появился Transfer и какова была причина его создания? Как вы вовлечены?

Более 3 лет назад, когда я писал свой первый пост в блоге о передаче , я на самом деле думал просто о создании автоматизированного способа генерирования моих ХФУ на лету. Это был просто ответ на то, что я не хотел явно писать геттеры и сеттеры весь день!

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

В то время в пространстве ColdFusion не было никаких других сред персистентности, поэтому я начал исследовать методы ORM в других технологиях и начал перестраивать свой блог, Compound Theory , с самой первой версией Transfer. Фактически, Compound Theory был первым сайтом, разработанным с помощью Transfer!

Что касается того, как я участвую, как уже упоминалось, я являюсь создателем и ведущим разработчиком Transfer. Я также склонен управлять большей частью аспекта сообщества, но поскольку сообщество Transfer стало больше, мне не нужно было участвовать так же активно, как у нас довольно много очень активных членов, которые делают большую работу, помогая где необходимо.

Когда разработчик должен искать Transfer? Что это значит для этого?

Разработчик начинает искать Transfer, когда у него есть вкус к разработке объектно-ориентированного приложения на основе базы данных вручную.

Они устали от однообразия и времени, которое требуется для написания всех CFC, представляющих их бизнес-объекты, всего SQL, который выполняет все их операции создания, чтения, обновления и удаления, и кода ColdFusion для перемещения информации в их и из их Объекты в и из своих операторов SQL.

Обнаружив Transfer, они быстро понимают, что им не нужно беспокоиться об этих обыденных деталях, и могут сосредоточиться на разработке и моделировании уровня данных своего приложения, поскольку Transfer позаботится обо всем за вас, предоставив при этом Множество инструментов и сгенерированный код, который может быть немедленно использован в своих интересах.

Каковы предварительные условия для использования Transfer? Есть ли какие-либо предварительные знания, которые помогут новым пользователям? Использует ли он какие-либо другие структуры, которые могут упростить или усложнить вещи?

Очень полезно иметь общее представление об объектно-ориентированном программировании, прежде чем начинать с Transfer, так как это требует очень оригинальной перспективы развития.

Сам Transfer не использует никаких других платформ, но он интегрируется со многими другими каркасами, такими как MVC, такими как Model Glue, Mach II, Fusebox или ColdBox, и Inversion of Control, такими как ColdSpring или Lightwire.

Это позволяет вам очень легко создавать очень зрелые и сложные основы приложений, просто объединяя несколько проектов сообщества ColdFusion вместе, что может значительно сократить время разработки проектов.

Что отличает Transfer от других фреймворков?

Хотя Transfer многое делает для вас, он также пытается «убраться с дороги» разными способами. Он не устанавливает предписанную методологию для вашей разработки, поэтому у вас есть много свободы в том, как вы хотите создавать свои приложения.

У Transfer есть несколько ключевых механизмов расширения, которые дают вам очень большую гибкость с вашими реализациями и означают, что вы не связаны каким-либо одним способом разработки ваших приложений. Фактически, я могу рассчитывать, с одной стороны, на количество мест, которые я на самом деле сказал в списке рассылки или в документации «Это единственный способ сделать X с помощью Transfer!».

Есть ли отличные примеры трансфера «в дикой природе»?

Мне известны две крупнейшие коммерческие реализации Transfer:

  • NGA.NET , ведущая австралийская электронная компания по подбору персонала. С 2000 года NGA.NET разрабатывает свой продукт для электронного рекрутинга и предоставляет решения для 500 крупнейших компаний и федерального правительства, где NGA.NET имеет 100% долю рынка. Их приложение прошло множество эволюционных этапов, с новой версией, построенной на архитектуре Mach-ii, ColdSpring и Transfer в бета-версии на 2008 год.
  • Broadchoice — поставщик интегрированных решений веб-маркетинга по требованию, которые уникальным образом сочетают в себе социальные сети, управление контентом, маркетинговые кампании и аналитику для предоставления бизнес-аналитики на основе фактического поведения клиента, партнера и потенциального клиента. Broadchoice исключает излишнюю тяготу и догадки маркетинга, позволяя компаниям привлекать корпоративное сообщество для повышения эффективности маркетинга.

Луис Маджано и я недавно также анонсировали вики с открытым исходным кодом под названием CodexWiki, основанную на Transfer, ColdBox и ColdSpring. В настоящее время он находится в частной бета-версии, но следите за информацией на сайте www.codexwiki.org .

А как насчет лицензирования, сообщества, поддержки и документации?

Transfer выпущен на условиях Common Public License 1.0 , которая предоставляет большую степень свободы при использовании Transfer, как с коммерческой точки зрения, так и с точки зрения открытого исходного кода.

Двумя основными способами поддержки Transfer и сообществом являются список рассылки Transfer, который насчитывает приблизительно 340 участников и является очень активным, и чат-комната #transfer IRC в сети Dalnet IRC .

Compound Theory также недавно объявила о программах коммерческой поддержки , поэтому для Transfer доступна полная гамма как общественной, так и коммерческой поддержки.

Документацию можно найти на Transfer Wiki , которая включает ссылки на презентации, примеры приложений и различные посты в блоге на Transfer.

Отслеживание ошибок и улучшений можно найти в Transfer Tracker .

Все эти подробности и многое другое можно найти на сайте Transfer .

Что будет в будущем для передачи?

Вчера только что вышла версия Transfer 1.0, которая очень интересна и очень долгая!

В разработке находится новый веб-сайт для Transfer, который объединит уже внедренные вики и трекер, чтобы дать сообществу еще больше возможностей для обучения и развития с помощью Transfer.

Я также закончил ввод всех возможных улучшений для Transfer в Tracker , и будет процесс, позволяющий сообществу решить, какие из этих функций войдут в Transfer 1.1.

Профессиональная сторона Transfer также расширяется, и в настоящее время разрабатываются учебные модули для обеспечения как обучения на месте, так и онлайн, начиная с полного дня обучения в webDU !

Это очень захватывающее время для трансфера!

Где люди могут найти больше информации о передаче?

Список рассылки Transfer и документация являются одними из лучших мест для получения дополнительной информации о Transfer.

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

Отлично, спасибо за игру вместе с Марком!