2009-02-04 7 views
7

Я приступил к разработке приложения ColdFusion, которое полностью основано на Интернете. Не слишком много использования Flash-форм или AJAX.Приложение ColdFusion сегодня - Flex в следующем году. Соображения для максимального повторного использования логического уровня в следующем году?

Первая версия - это строгое веб-приложение. Версия 2 будет интерфейсом Flex.

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

Какие вещи стоит рассмотреть/разработать/внедрить сейчас, что сильно поможет в создании дизайна приложения таким образом?

ответ

6

Одно большое предложение, в зависимости от того, откуда вы пришли (поскольку это довольно большой вопрос), было бы максимально использовать компонент ColdFusion (CFC); архитектура CFC отличная, универсальная и мощная, она отлично сочетается с Flex (и будет делать это еще лучше в будущих версиях Flex и CF), так что, если вы можете спроектировать свой компонентный уровень с учетом этого, вы будете будь рад, что ты это сделал.

Прошло некоторое время с тех пор, как я написал CF-код, но в последнем крупном проекте, который я сделал с ним, я потратил много времени на разработку функционального уровня из CFC, который будет использоваться простым веб-приложением, так как это звучит так, как вы делаете, - а потом, когда пришло время закрепить Ajax UI для части сайта (это мог быть Flex, но в моем случае это был YUI реализация), я создал фасадный слой публично выставленных CFC, чья работа заключалась в том, чтобы обернуть и предоставить специализированное подмножество функциональных возможностей, предоставляемых первым уровнем. Это позволило мне использовать и расширять существующий код таким образом, который уникален для служб, которые ему нужны, без необходимости напрямую раскрывать базовые (первый уровень) CFC.

Я уверен, что у других людей будет много других (и, возможно, более подробных) предложений, но это тот самый большой, который у меня есть для вас в первую очередь - изучите, узнайте и используйте компонент CF. Удачи!

+0

Спасибо за мысли. Я склоняюсь к ХФУ и думаю, что их будет несколько. В идеале я хотел бы использовать встроенную поддержку Coldfusion для использования двоичного протокола Flash. –

+0

Похоже, ты на правильном пути. Удачи! –

+0

Как часто мое исследование с Coldfusion, я заканчиваю тем, что «все?» –

6

Я согласен с христианином в том, что самое лучшее, что вы можете сделать, это поместить все в логику базы данных или любую другую логику для приложения в CFC, а более конкретно, я бы предложил использовать веб-службы. Основная причина этого заключается в том, что она позволит вам в конечном итоге получить код cf, который является вашим постоянством базы данных и логикой на другом сервере, чем тот, где вы обслуживаете приложения flex, и позволял бы повторное использование кода для других приложений , Приятно также писать ваши cfc как webservices, так это то, что вы можете использовать их либо как webservices, либо непосредственно как компоненты Flex, используя AMF (удаленный объект). Теперь, конечно, насколько эти преимущества действительно применимы к вам, зависит от вашей ситуации, но это хороший план.

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

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

+0

Спасибо Райан. Уже делает подход n-уровня. Похоже, что если я продлю CFC на веб-сервисы, я смогу косвенно использовать несколько способов использования системы без дополнительной работы. Это то, что мне нравится! –

+0

Спасибо за ваш вклад Райан, хорошо знать, что я этого не пропущу. Я убеждаюсь, что слои ведут себя как лучше для CF и Flex. Это довольно интересно, чтобы представить всю работу, которую должны выполнить остальные разработчики! :) –

+0

Если вы добавите обработчик ошибок в свои удаленные объекты Flex, вы можете получить полезную информацию об ошибке из Flex – RaeLehman

3

Заканчивать Matt Woodward's presentation на эту тему, это очень информативный:

И несколько общих вещей, чтобы добавить к ответам все остальные при условии:

  • инкапсулировать взаимодействие данных ХФУ (как правило, в сфере услуг, которые делегировать шлюзам и DAO)
  • В большинстве случаев вам необходимо создать «bean» CFC для представления ваших бизнес-объектов (пользователей, виджетов и т. д.), это то, что будет передано классам Flex как ActionScript. Вам нужно будет добавить к ним теги cfproperty, чтобы сделать их сериализуемыми в ActionScript (с учетом случая и порядка!), Поэтому обратите внимание на то, когда вы создаете их, чтобы предотвратить их позднее, и используйте один из кодов таких как Adobe CF Extensions for Eclipse или Illudium PU36, чтобы сделать это за вас.
  • Создайте удаленный фасад CFC (или набор CFC в зависимости от размера приложения), который делегирует методы вашим услугам - здесь вы устанавливаете доступ для своих методов к «удаленным» - обычно это единственное место, которое вы хотите сделайте это (вы почувствуете, что делаете много делегирования, но платите за то, чтобы централизовать все ваши удаленные сервисы)
  • По мере разработки с помощью HTML обработайте ваши удаленные CFC-элементы фасада как ваш API и сделайте свои HTML-представления как «немой», насколько это возможно. Подумайте об этом так: любая логика, которую вы пишете в вашем представлении CF, должна быть реплицирована в вашем представлении Flex. Если вы создадите проект только с помощью удаленного API, у вас будет довольно хорошее представление о том, как Flex будет взаимодействовать с приложением.
  • Отъезд ColdSpring, он предлагает множество отличных функций для управления всеми объектами, которые вы собираетесь создавать!

Я не претендую на звание эксперта по архитектуре, и я знаю, что здесь было множество жаргонов, чтобы не допустить его, но некоторые поисковые роботы в блогах Google должны получить много информации о дизайне которые я упомянул. Удачи!

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

  • Нет связанных вопросов^_^