2

С широким спектром рамок для веб-разработки, которые доступны, всегда существует постоянный стимул «попробовать что-то новое». Следовательно, некоторые из нас обнаруживают, что торгуют одним фреймворком для другого, никогда не будучи полностью удовлетворены конечными результатами. Конечно, всегда будут ниши, где данный веб-фрейм будет служить отлично. Но есть много людей, которые решили использовать C++, Java или C# для создания, скажем, настольных приложений. То же самое не совсем верно, когда речь идет о приложениях для веб-разработки. Джоэл Спольский затрагивает это в link text.Функциональные требования для конечной структуры веб-разработки?

Предположим, если бы я создал такую ​​структуру: какими были бы функциональные требования? Целью здесь является список конкретных функциональных ожиданий (определенно кратко для проводки стековерного потока, конечно). Лучший ответ будет выбран исходя из его количества голосов.

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

  • OOP Консистенция: бесперебойный обмен данными и собственное представление объекта между серверными и на стороне клиента модулей : То есть, учитывая функцию на стороне клиента: clientFoo() и функцию на стороне сервера: serverFoo() один должен быть в состоянии передать объект obj любого типа T, не требуя какой-либо маршалинг:

    define clientFoo() { 
        T obj = createObject() 
        serverFoo(obj) 
    } 
    
    OR 
    
    define serverFoo() { 
        T obj = createObject() 
        clientFoo(obj) 
    } 
    

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

  • Функциональная Консистенция: Бесшовная функциональная и нить исполнение: Нужно быть в состоянии создать функцию на стороне клиента/сервера и передать его через границу для выполнения. Это включает в себя единообразную поддержку многопоточности (которая должна работать последовательно на стороне клиента и сервера).

    • Multiple Application Session Interoperability: Прекрасный пример здесь между приложениями «вырезать и вставить» (как указано в статье указано выше). Я не, говоря о тривиальном копировании текста в браузере в другой экземпляр браузера (или вкладку). Что, если вы хотите вставить, скажите, контактный объект в MySocialApp для YetAnotherSocialApp? Такой обмен данными между приложениями важен.

    • Последовательное кросс-браузер совместимый интерфейс: создание AJAX «диалоговые окна», индикаторы прогресса, вкладки и т.д. все должны быть достижимы с помощью API, который, как бесшовные с остальной структурой как интеграции клиент/сервер обсуждалось выше. Да, и да, он должен работать одинаково во всех браузерах (с различиями браузера, которые полностью невидимы для разработчика).

+1

Почему отрицательные голоса? И как просьба о конкретных требованиях к решению очень реальной проблемы: «слишком субъективна»? –

ответ

0
  • Complete View/Logic Разделение: Это должно быть невозможно закодировать любую логику программирования в просмотр файлов. Here's - хороший аргумент в пользу того, почему это хорошая идея.
3

Лично я считаю, что следующая великолепная структура веб-разработки будет «функциональной» по своей природе, то есть будет использоваться функциональный язык, и все представления, контроллеры и т. Д. Будут функциональными эквивалентами. Мы уже двинулись в этом направлении с Linq.

См Избиение Averages Пола Грэма, в котором он описывает, как он был в состоянии перехитрить своих конкурентов, создавая свои веб-приложения в Лиспе: http://www.paulgraham.com/avg.html

2

вам не хватает важных деталей.

  • Разделение логики дисплея от вашего кода.
  • разделение данных (опубликованное содержимое) с базы кода.
  • способность работать везде
  • как активно работает рама.

так что вам нужны шаблоны для вывода, погода это будет XML или HTML и т.д.
простая структура модели контроллера вида удобно
хорошая абстракция базы данных, которая Alows вам как шаблон вашего SQL и остановить SQL-инъекцию.
легкий след.
умение работать на разных веб-платформах. (необязательно), например: Apache (PHP)
расширяемый на многих серверах: (обслуживание сессий и т. д.)
легко расширяется.
быть популярен среди сообщества.

Совместимость с кросс-браузером будет определяться в основном вашей библиотекой css, html и ajax по выбору ..., которая полностью отличается от вашей структуры веб-разработки. Вам лучше не изобретать колесо. Выбор javascript-библиотеки рекомендуется. (например, JQuery)

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