1. Почему B/S сложно обеспечить хорошее взаимодействие с пользователем?
Самые большие проблемы здесь:
(1) Протокол HTTP без сохранения состояния
Формы Windows могут напрямую обмениваться информацией через память, но HTTP, который является базовым протоколом для связи в архитектуре B/S, не имеет состояния.
Если браузер рассматривается как гость, а веб-сервер рассматривается как отель под управлением протокола HTTP, произойдет следующая ситуация: независимо от того, сколько раз посетитель посетит веб-сервер, веб-сервер будет рассматривать его как первого посетителя. посетитель времени. Таким образом, гости должны каждый раз приносить с собой свои документы, удостоверяющие личность, чтобы персонал отеля «подтвердил их личность».
Отсутствие состояния протокола HTTP приводит к «игнорированию» веб-сервера. Хотя это может увеличить пропускную способность веб-сервера, это создает проблемы при разработке прикладных систем. Потому что в прикладных системах часто присутствует множество процессов бизнес-обработки, которые по своей сути являются информационными, то есть исходные данные входят с одного конца и должны были подвергнуться определенной обработке, когда выходят с другого конца. Как можно такое представить. информация во всем бизнес-процессе будет потеряна? Таким образом, обмен информацией между HTTP-запросами становится проблематичным. Это проблема «сохранения состояния» HTTP-запросов. Каждая система B/S должна решать эту проблему. Microsoft подумала о некоторых «кривых трюках», таких как полное использование скрытых полей на веб-страницах HTML, а затем проделывание некоторых трюков на веб-сервере, поэтому в ASP.NET есть набор технологий для поддержания состояния между каждым HTTP-запросом: Сеанс, Cookie, ViewState, Профиль, Приложение.
Однако проблема не решена полностью. Например, в обычных диалоговых окнах в системах C/S, собирающих вводимые пользователем данные, происходит обмен информацией между основной формой и диалоговым окном (которое делится на два типа: модальное и немодальное. Первое диалоговое окно окно не закрыто. Основная форма не может быть активирована). В архитектуре B/S, поскольку каждый запрос браузера независим, между двумя независимыми окнами браузера должен быть реализован прямой обмен информацией, аналогичный модальному диалоговому окну. не знаю, что делать.
AJAX использует следующий метод для «симуляции» модальной формы: «объединяет» основную форму и диалоговое окно в одну. Диалоговое окно представляет собой элемент div в HTML, который обычно скрывается и отображается при необходимости. В наборе инструментов управления AJAX от Microsoft даже есть элемент управления, предназначенный для этой функции. Подобных трюков в разработке B/S бесчисленное множество.
Видно, что многие функции, которые можно легко реализовать в C/S, очень сложно реализовать в B/S.
(2) Специальная операционная среда-браузер
Внешняя операционная среда системы B/S представляет собой браузер, который накладывает множество ограничений. Он не может выполнять многие действия, например прямой доступ к оборудованию (например, принтерам), а также не может полностью использовать аппаратные ресурсы. Например, все современные компьютеры являются двухъядерными. Можете ли вы напрямую использовать JavaScript и HTML для написания многопоточной программы, полностью использующей эти два «ядра Pentium»?
Система C/S работает непосредственно в ОС (операционной системе) и может вызывать все функции, предоставляемые ОС. Этого ограничения не существует.
(3) Смущающий язык программирования веб-клиентов — JavaScript,
традиционная программа C/S, может использовать большое количество различных языков разработки, особенно основные объектно-ориентированные языки, такие как C++, Java и C#, которые мощный и простой в использовании, доступны различные инструменты разработки, которые очень зрелы.
Напротив, JavaScript, наиболее часто используемый язык программирования во внешнем интерфейсе B/S, не только не нравится, но даже «ненавидел» многими программистами, которые считают «программирование с помощью JavaScript» рутинной работой.
Давайте посмотрим на два основных недостатка JavaScript.
Во-первых, отсутствует четкая и унифицированная модель программирования.
Хотя в названии JavaScript есть Java и он использует аналогичный синтаксис, он не имеет ничего общего с реальной Java. Увы, она гадкий утенок. Она всегда хочет стать лебедем, но не ожидает, что другие не купятся на ее идею.
JavaScript использует множество объектов, но говорить о том, что он объектно-ориентирован, действительно неубедительно (базовой единицей объектно-ориентированного программирования является класс). Например, в нем нет ключевого слова class, как в основных объектно-ориентированных языках. такой как C#. Везде есть функции одна за другой, что затрудняет четкое определение всего кода в виде классов, при этом он не структурирован (основная единица структурного программирования — функция), поскольку браузер использует поток при анализе HTML-документов. Это приводит к тому, что некоторый код JavaScript размещается вне функции и выполняется непосредственно при анализе HTML-документа, в то время как другая часть кода, помещенная в функцию, в основном выполняется в управляемом событиями режиме. Последовательность выполнения программы гораздо менее лаконична, чем унифицированное использование вызовов функций в чисто структурированном программировании.
С этой точки зрения JavaScript имеет характеристики объектно-ориентированного, структурированного и неструктурированного программирования, но это ни рыба, ни мясо. У него нет четкой и унифицированной модели программирования. Трудно писать понятный код. структура и простота обслуживания. Возникло много путаницы.
Во-вторых, еще одним недостатком JavaScript является среда его работы в браузере.
По историческим причинам разные браузеры и даже разные версии одного и того же браузера имеют более или менее разные модели программирования. Поэтому нам необходимо написать код для определения типа браузера. IE, и написал еще один набор для FireFox. Это действительно хлопотно.
Вышеуказанные проблемы являются практически «врожденными» «дефектами» системы архитектуры B/S. Врожденные недостатки дополняются воспитанием, и люди придумали множество уловок для решения этих проблем. AJAX — это звезда надежды, к которой все относятся с оптимизмом.
2 Звезда надежды — AJAX
За последние несколько дней я систематически узнавал о платформе Microsoft AJAX. Я обнаружил, что сложность этой среды намного превзошла мою первоначальную оценку. Инженеры Microsoft, разрабатывавшие структуру AJAX, глубоко исследовали потенциал различных технологий веб-разработки, что в значительной степени компенсировало проблемы, поднятые ранее.
(1) Расширение языка JavaScript:
Microsoft расширила объектно-ориентированные функции JavaScript, предоставив инкапсулированную библиотеку AJAX, которая может легко реализовывать такие функции, как наследование, определение интерфейсов, сериализацию объектов, запуск событий и типы отражения. меньше реального. Между объектно-ориентированными языками (такими как Java/C#) все еще существует разрыв, но возможность облачить «уродливый» JavaScript во что-то видимое считается экстраординарной.
(2) Значительно улучшить функциональность кода на стороне браузера.
Благодаря поддержке библиотеки AJAX и расширенной функциональности JavaScript, а также поддержке самого браузера вы можете писать сценарии JavaScript в браузере, чтобы легко выполнять асинхронные запросы. на сервер, реализовать частичное обновление страницы и напрямую вызвать веб-службу.
(3) Внедрение метода разработки на основе компонентов (CBD).
Разработка на основе компонентов (CBD) уже давно является основным методом разработки объектно-ориентированных систем. Хотя SOA (архитектура на основе сервисов) в настоящее время очень популярна, она все еще необходима. чтобы стать таким же зрелым, как CBD, в определенной степени потребуется время.
Для JavaScript, не говоря уже о SOA, реализовать CBD очень сложно.
Чтобы реализовать CBD, Microsoft «внесла существенные улучшения» в JavaScript и улучшила многие функции. На основе библиотеки Microsoft AJAX программисты могут разрабатывать три типа повторно используемых компонентов: None_Visual Component (невидимый компонент, эквивалентный объектно-ориентированной системе). из них предоставляют публичные функции), Behavior (поведение, расширяющее функции существующих веб-элементов управления) и Control (веб-элементы управления с элементами визуального интерфейса).
В частности, десятки элементов управления, представленные в AJAX Control ToolKit, в основном реализуют B/S-симуляцию большинства функций пользовательского интерфейса C/S и являются моделью для применения этой новой модели программирования.
Усовершенствования Microsoft в модели программирования JavaScript позволяют инженерам-программистам, наконец, разрабатывать код веб-клиента, используя методы разработки CBD. Я считаю, что это прогресс.
(4) Расширенные возможности на стороне сервера.
Чтобы расширить возможности кода на стороне браузера, его необходимо координировать через серверную часть. Сам AJAX основан на модели программирования, в которой браузер и веб-сервер поддерживают друг друга (веб-сервер предоставляет службы данных, а браузер предоставляет объекты XMLHttpRequest для выполнения асинхронных запросов к веб-серверу. Когда данные возвращаются, программисты могут писать код на JavaScript для реализовать динамическую частичную обработку веб-страниц (обновить).
С помощью расширения AJAX Microsoft расширила функциональность серверной платформы ASP.NET. А также внедрить часто используемые функции в простые веб-элементы управления, такие как основной элемент управления AJAX ScriptManager, UpdatePanel для определения обновляемых областей страницы и десятки инструментов управления AJAX для улучшения существующих элементов управления ASP.NET Extender (то есть элементов управления, прикрепленных к ним). существующий элемент управления, целью которого является расширение новых функций существующего элемента управления).
Благодаря этим элементам управления разработка программ веб-интерфейса аналогична разработке форм в VB. Теперь можно не только нарисовать интерфейс, аналогичный Windows Forms, но и использовать технологию асинхронного запроса AJAX и частичного обновления страницы, а при сотрудничестве с веб-сервером пользовательский опыт можно перенести в Windows Forms.
Независимо от того, сколько людей смотрят свысока на VB, волна популяризации визуального программирования, принесенная VB, действительно имела далеко идущие последствия. Подталкивание Microsoft к программированию на JavaScript также является общей тенденцией. Чтобы повысить эффективность веб-разработки, необходимо сделать этот шаг.
Однако нужно отметить, что сколько бы ее ни «пополняли», все-таки она «врожденно неполноценна» и архитектуре B/S все равно очень сложно превзойти C/S с точки зрения пользовательского опыта. .
3 Будущее: B/S или C/S, кто главный?
Из-за простоты управления и развертывания архитектура B/S стала сегодня предпочтительным выбором для многих информационных систем. Однако пользователи стремятся получить хороший пользовательский опыт. Подводя итог, предъявляются следующие требования:
(1) Красивый интерфейс. В этом отношении у B/S есть преимущество.
(2) Удобный ввод. Например, многие пользователи надеются вводить данные без использования мыши или автоматически заполнять данные простыми щелчками мыши. Это сложно реализовать в архитектуре AJAX и в определенной степени может решить эту проблему.
(3) Скорость молнии. У C/S есть много способов добиться высокой скорости реакции, но для B/S это непросто. Из-за ограничений браузера мощные аппаратные ресурсы клиента практически простаивают. Кроме того, скорость сети является узким местом архитектуры B/S, если пропускная способность не увеличится быстро, WWW будет работать в режиме ожидания по всему миру.
Хотя C/S имеет хороший пользовательский опыт, его проблема заключается в том, что сложно разработать распределенную систему, охватывающую весь Интернет. Более того, поскольку необходимо установить клиент, обновления системы и управление версиями компонентов становятся большой проблемой. Кроме того, в отличие от B. В архитектуре /S необходимо учитывать только проблемы на стороне сервера. В архитектуре C/S из-за одновременного доступа к серверу нескольких пользователей вызовы и зависимости между компонентами являются сложными. также необходимо учитывать при работе с многопоточным доступом к общим ресурсам, обработкой транзакций и т. д. На стороне сервера пропускная способность сильно ограничена. Поэтому C/S чаще всего встраивается в локальную сеть для внутреннего использования предприятия.
В настоящее время B/S и C/S в основном сосуществуют. С широким применением технологий B/S, таких как AJAX, B/S продолжает одерживать верх, но полностью «победить C/S» невозможно. .
Что еще интереснее: как крупные компании, такие как Microsoft, смотрят на перспективы развития B/S и C/S?
Обычные разработчики вроде меня не имеют возможности напрямую общаться с руководителями Microsoft, но мы можем увидеть некоторые подсказки в пути разработки продуктов компании:
Microsoft, похоже, не верит, что B/S представляет собой будущее направление технологического развития. Напротив, многие ее действия движутся в сторону отказа от браузеров.
Прежде всего, Microsoft упростила разработку и развертывание C/S и запустила технологию Smart Client, благодаря чему обновление клиентских программ C/S может осуществляться автоматически, без ручного вмешательства.
Во-вторых, Microsoft усердно работала над преодолением разрыва между B/S и C/S. При разработке ASP.NET она решительно отказалась от ASP, который добился хороших результатов, и напрямую приняла аналогичный метод программирования «визуальный контроль + события». на VB Даже веб-страницы называются «Формы» — Web Forms.
В-третьих, Microsoft может рассматривать AJAX как переходную технологию.
Microsoft не спешила предпринимать какие-либо действия в отношении AJAX, пока не увидела быструю популярность AJAX благодаря успешному применению технологии AJAX Google и другими компаниями для улучшения взаимодействия с пользователем в Интернете. Затем она приняла меры и добавила расширения AJAX в ASP.NET. Весь процесс был очевидно. Действия не были агрессивными, и было вложено не так много ресурсов. Это полностью отличалось от того, когда Microsoft и Netscape начали войну браузеров. Однако тот факт, что расширение AJAX встроено в стандартную конфигурацию VS2008 и функция отладки JavaScript напрямую интегрирована в IDE, показывает, что Microsoft по-прежнему смотрит в лицо реальности и признает, что AJAX занимает важное положение и имеет большой потенциал развития.
Фактически, я анализирую, что цель Microsoft состоит в том, чтобы «объединить мир», отказаться от браузера и полностью унифицировать B/S и C/S.
Это хорошо видно в .NET 3.0/3.5.
Прежде всего, Microsoft использовала WCF для унификации DCOM, .NET Remoting и других технологий, в основном используемых для C/S, интегрируя многие функции корпоративной разработки, изначально расположенные в COM+, вместе с технологией веб-сервисов, в основном используемой для архитектуры B/S, для унификации абстрактного подхода. и инкапсулировать в многоразовую службу WCF. Очевидно, что Microsoft хочет изменить модель разработки информационных систем с CBD на SOA (то есть будущие системы будут собирать сервисы вместо компонентов).
Во-вторых, Microsoft отказалась от очень зрелой модели программирования настольных компьютеров Windows (Win32 API + управление сообщениями/событиями) и представила новую среду программирования WPF. Одним из основных нововведений является появление XAML (язык разметки приложений), который соответствует спецификации XML. . XAML использует простые текстовые файлы формата XML для описания интерфейсов приложений.
Мы можем легко сравнить XAML с XHTML. Браузер анализирует код XHTML и генерирует визуальный веб-интерфейс, а XAML анализируется виртуальной машиной .NET Framework. В Vista, поскольку Vista напрямую интегрирует .NET Framework 3.0, Vista можно рассматривать как супербраузер. Он отвечает за чтение. XAML для создания пользовательского интерфейса и реализации всех функций приложения.
В результате возникла новая модель программирования. Независимо от того, является ли это системой B/S или C/S, метод унифицирован: чтение кода XAML, анализ, представление, получение пользовательского ввода, обработка данных и отображение результата.
В этой модели программирования браузер становится сторонним наблюдателем и больше не является ядром клиентского приложения.
Новая модель программирования работает на полнофункциональной ОС, а не на браузере с ограниченной функциональностью. Эта разница огромна. Как можно сравнить функции браузера, работающего на ОС, с функциями самой ОС?
Теперь вы можете легко вызывать различные функции операционной системы через API операционной системы (Application Programming Interface), организованный объектно-ориентированным образом, полностью используя аппаратные ресурсы клиента (например, вы можете легко разработать многопоточность на Программа .NET Framework, «выжимающая» рабочие возможности двухъядерного процессора). Все пользовательские интерфейсы описываются с использованием XAML, который объединяет технологии уровня интерфейса B/S и C/S.
Наиболее подходящей рабочей средой для WPF является операционная система Vista. Подмножество ее функций, теперь называемое Silverlight, реализовано в виде подключаемого модуля браузера, позволяющего программам WPF работать в традиционных браузерах. Поскольку и Silverlight, и Vista могут самостоятельно анализировать XAML, теперь вы можете использовать XAML для написания только одного набора кода интерфейса, который применим как к B/S, так и к C/S и обеспечивает одинаковый пользовательский интерфейс.
Из-за некоторых присущих B/S и AJAX недостатков, если систему B/S, улучшенную AJAX, сравнивать с танцором, то на самом деле это танцор, танцующий в кандалах, и идея Microsoft заключается в следующем: вместо того, чтобы постоянно пытаться облегчить вес этой кандалы, почему бы просто не выбросить ее?
Запуск Microsoft WPF и WCF является такой попыткой.
Следует сказать, что стратегия развития Microsoft основана на анализе преимуществ и недостатков существующих B/S и C/S. Она имеет научный характер, а также учитывает собственные бизнес-интересы. Однако в реализации этой стратегии все еще существует много трудностей, поскольку даже такая могущественная, как Microsoft, она не может доминировать в мире. Противники Microsoft так же умны, как и Microsoft, и их технологии развиваются так же быстро.
Можно сделать вывод, что благодаря непрерывности приложений информационной системы Б/С и К/С будут сосуществовать одновременно в течение длительного периода времени (может быть, три-пять лет, может быть, пять-десять лет). многие B/S с выдающимися отличными характеристиками будут преобладать в конкуренции с C/S, и эта ситуация существенно не изменится. Что касается AJAX, то он, как тяжелое оружие в системе B/S, хотя и очень эффективен, но имеет множество недостатков, я с осторожным оптимизмом смотрю на его будущее развитие. Однако вы, как веб-разработчик, должны понимать и применять эту технологию.
Как будет выглядеть будущий ландшафт и есть ли будущее у определенной технологии, решают не отдельные люди. Я думаю, что окончательная картина битвы между Б/С и К/С будет результатом совместной игры множества факторов. Отдельные люди должны идти в ногу со временем и своевременно корректировать свои действия и стратегии. Такова судьба современных разработчиков программного обеспечения.