Недавно я столкнулся с таким сценарием применения. Одно предприятие уже много лет использует систему, разработанную PowerBuilder. По мере развития компания решила преобразовать старую информационную систему с C/S на популярную архитектуру B/S, поэтому. возникла проблема: оригинальные некоторые системы имеют большое количество ввода данных, точную печать отчетов и другие функции, и пользователи очень привыкли к такого рода операциям. Есть надежда, что новая система сможет сохранить эту простую в использовании функцию. исходной системы.
У меня заболела голова, как только я услышал этот вопрос. В PB много мощных элементов управления. Их слишком сложно переместить в браузер и использовать веб-страницы для их имитации.
1. Почему B/S сложно обеспечить хорошее взаимодействие с пользователем.
Здесь есть несколько самых больших проблем:
(1) Протокол HTTP без сохранения состояния
может напрямую обмениваться информацией между формами Windows через память, но это основа B/S? архитектура связи Протокол HTTP не имеет состояния.
Если браузер рассматривается как гость, а веб-сервер рассматривается как отель под управлением протокола 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 работает непосредственно в операционной системе? system) Выше можно вызывать все функции, предусмотренные ОС, и этого ограничения не существует.
(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 в браузере, чтобы легко выполнять асинхронные запросы к серверу. server, реализует частичное обновление страницы и может напрямую вызывать веб-службу.
(3) Внедрение метода разработки на основе компонентов (CBD).
Разработка на основе компонентов (CBD) уже давно является основным методом разработки объектно-ориентированных систем. Хотя SOA (архитектура на основе сервисов) в настоящее время очень популярна, она нуждается в этом. Для достижения зрелости КБР в определенной степени потребуется время.
Для 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 (интерфейс прикладного программирования) операционной системы. функции для полного использования аппаратных ресурсов клиента (например, вы можете легко разрабатывать многопоточные программы поверх .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, хотя и очень эффективен, но имеет множество недостатков, я с осторожным оптимизмом смотрю на его будущее развитие. Однако вы, как веб-разработчик, должны понимать и применять эту технологию.
Как будет выглядеть будущий ландшафт и есть ли будущее у определенной технологии, решают не отдельные люди. Я думаю, что окончательная картина битвы между Б/С и К/С будет результатом совместной игры множества факторов. Отдельные люди должны идти в ногу со временем и своевременно корректировать свои действия и стратегии. Такова судьба современных разработчиков программного обеспечения.