С широким спектром рамок для веб-разработки, которые доступны, всегда существует постоянный стимул «попробовать что-то новое». Следовательно, некоторые из нас обнаруживают, что торгуют одним фреймворком для другого, никогда не будучи полностью удовлетворены конечными результатами. Конечно, всегда будут ниши, где данный веб-фрейм будет служить отлично. Но есть много людей, которые решили использовать 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, который, как бесшовные с остальной структурой как интеграции клиент/сервер обсуждалось выше. Да, и да, он должен работать одинаково во всех браузерах (с различиями браузера, которые полностью невидимы для разработчика).
Почему отрицательные голоса? И как просьба о конкретных требованиях к решению очень реальной проблемы: «слишком субъективна»? –