Какой интерфейс пользователя реализует платформа windows forms
Перейти к содержимому

Какой интерфейс пользователя реализует платформа windows forms

  • автор:

Особенности форм в Windows-приложениях

Существует ряд особенностей, которые характерны как для форм редактирования, так и для списковых форм Windows-приложений.

Единообразная обработка всех форм приложения

Чтобы единообразно обработать все формы приложения, нужно подписаться на глобальные события.

В методе Main можно подписаться на специальное событие:

static void Main() . // *** Start programmer edit section *** (Детейломания Main()) ICSSoft.STORMNET.Windows.Forms.WinApplication.SetUICultureAsRussian(); ICSSoft.STORMNET.Windows.Forms.Desktop.GlobalWinformEvents.Load += new EventHandler(GlobalWinformEvents_Load); // *** End programmer edit section *** (Детейломания Main()) ICSSoft.STORMNET.Business.LockService.ClearAllUserLocks(); . > 

В обработчик этого события будет приходить форма в переменной sender. Далее, например, можно все формы подписать на нажатие определённых клавиш:

// *** Start programmer edit section *** (ДетейломанияDesktop CustomMembers) static void GlobalWinformEvents_Load(object sender, EventArgs e)  ((Form)sender).KeyPreview = true; ((Form)sender).KeyPress += new KeyPressEventHandler(ДетейломанияDesktop_KeyPress); > static void ДетейломанияDesktop_KeyPress(object sender, KeyPressEventArgs e)  if (e.KeyChar == 13)  MessageBox.Show("Enter was pressed","Hello"); > > // *** End programmer edit section *** (ДетейломанияDesktop CustomMembers) 

Реализация интерфейсов независимыми и зависимыми формами и отношения между ними

Диаграмма классов, представленная ниже, показывает, как относятся между собой независимые и зависимые формы списков, универсальные, а также реализуемые на основе базовых конкретные формы списков (могут реализовываться как вручную, так и посредством генераторов кода для Flexberry ):

Пример связи зависимых и независимых форм списков

Диаграмма, представленная ниже, показывает, как относятся между собой независимые и зависимые формы редактирования, универсальные, а также базовые и конкретные на основе базовых формы (могут реализовываться как вручную, так и посредством генераторов кода для Flexberry ):

Пример связи зависимых и независимых форм редактирования

Положение формы на экране

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

Для управления положением формы в Flexberry Platform в класс BaseWin , являющийся базовым для всех форм, были добавлены два свойства OutScreenControl и VisiblePercent .

Свойство OutScreenControl позволяет включить контроль выхода окна за пределы экрана в процессе перемещения окна пользователем. Свойство VisiblePercent устанавливает процент размера формы (длины/ширины), который должен оставаться видимым (диапазон значений от 0 до 100).

  1. При загрузке формы контроль выхода за пределы экрана происходит вне зависимости от значения свойства OutScreenControl (для корректного позиционирования формы при смене разрешения). При начальном отображении формы учитывается значение VisiblePercent , по умолчанию значение свойства VisiblePercent равно 40.
  2. Текущая реализация не учитывает наличие нескольких мониторов.

Запрет закрытия формы Flexberry Winforms

Для того чтобы запретить закрытие формы, надо переопределить метод Finalize() независимой формы.

[Scriptizer.RunTime.ScriptFinalizer] public override bool Finalize()  return false; > 

Закрытие всех открытых форм

Чтобы закрыть все открытые формы приложения, как происходит при закрытии главного окна приложения Flexberry, можно использовать следующий код.

var coll = desktopCtrl2.PathRunners; foreach (ArrayList runList in coll.GetAllValues())  foreach (Runner run in runList)  if (run.Alive)  run.Stop(); > > > 

Microsoft.NET Framework

.NET Framework — программная технология от компании Microsoft, предназначенная для создания обычных программ и веб-приложений. Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

.NET является патентованной технологией корпорации Microsoft. Тем не менее, после заключения договоренности с компанией Novell[1], технология Mono была признана как реализация .NET на Unix-подобных системах (GNU/Linux, Mac OS X). Однако договорённость касается Novell и клиентов Novell, также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO и использование их в Mono находится под угрозой претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение[2]). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует обходить эти API.[2]

Среды разработки .NET-приложений:

  • Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++),
  • SharpDevelop,
  • MonoDevelop,
  • Eclipse,
  • Borland Developer Studio (Delphi for .NET, C#),
  • PascalABC.NET и т. д.

Приложения также можно разрабатывать в текстовом редакторе и использовать консольный компилятор.

Подобно технологии Java, среда разработки .NET создаёт байт-код, предназначенный для исполнения виртуальной машиной. Входной язык этой машины в .NET называется MSIL (Microsoft Intermediate Language), или CIL (Common Intermediate Language, более поздний вариант), или просто IL. Применение байт-кода позволяет получить кроссплатформенность на уровне скомпилированного проекта (в терминах .NET: сборка), а не только на уровне исходного текста, как, например, в С. Перед запуском сборки в среде исполнения CLR байт-код преобразуется встроенным в среду JIT-компилятором (just in time, компиляция на лету) в машинные коды целевого процессора. Также существует возможность скомпилировать сборку в родной (native) код для выбранной платформы с помощью поставляемой вместе с .NET Framework утилиты NGen.exe. Российский рынок мобильных приложений для бизнеса и госсектора: крупнейшие игроки, тенденции и перспективы. Обзор TAdviser

Следует отметить, что один из первых JIT-компиляторов для Java был также разработан фирмой Microsoft. Современная технология динамической компиляции позволяет достигнуть уровня быстродействия, аналогичного традиционным «статическим» компиляторам (например, C++), и вопрос быстродействия зачастую зависит от качества того или иного компилятора.

.NET Core является модульной платформой для создания веб-приложений и микросервисов, кроссплатформенным (Windows, Mac, Linux) аналогом .NET Framework с открытым исходным кодом. Он содержит среду CoreCLR — кросс-платформенную реализацию CLR, в которую входит JIT-компилятор — RyuJIT. Также .NET Core включает в себя CoreFX — набор библиотек, функциональность которых частично совпадает с BCL (Base Class Library).

.NET Core предоставляет подмножество API .NET Framework, но также и ряд собственных API.

2022: Выпуск .NET 7

10 ноября 2022 года стало известно о том, что компания Microsoft представила значительный выпуск открытой платформы .NET 7, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 7 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 7, .NET Runtime 7 и ASP.NET Core Runtime 7 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 6 поставляется только для Windows. Связанные с проектом наработки распространяются под лицензией MIT. Сопровождение ветки .NET 7 будут осуществляться в течение 18 месяцев до 14 мая 2024 года.

Как сообщалось, в состав .NET 7 входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки web-приложений ASP.NET Core 7.0, ORM-прослойка Entity Framework Core 7.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 7 (Windows Presentation Foundation), фреймворк Windows Forms 7 для разработки GUI, платформа Orleans 7 для создания приложений Cloud Native, фреймворк MAUI 7 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 11 и F# 7. Поддержка .NET 7.0 и C# 11 включена в свободный редактор кода Visual Studio Code.

Возможности обновленного выпуска:

  • Проведена унификация базовой библиотеки классов (BCL, Base Class Library) для использования в различных типах приложений, включая программы для настольных систем, web-приложений, облачных платформ, мобильных приложений, игр, встраиваемых программ и систем машинного обучения. Для разработки различных типов приложений можно использовать один общий SDK, Runtime и набор библиотек.
  • Предоставлена возможность привязки приложения к API, соответствующему выпуску .NET 7, через определение целевой платформы «net7.0», например, «net7.0«. Для привязки к специфичным для каких-то платформ API при определении цели можно детализировать тип платформы, например, указав «net7.0-android».
  • Оптимизироана поддержка архитектуры ARM64 и продолжена работа по достижению паритета в производительности приложений .NET при выполнении на архитектурах x86 и ARM64. В runtime оптимизирована эффективность использования кэша третьего уровня на системах ARM64. Задействованы инструкции LSE для разграничения доступа к памяти из параллельных потоков, что привело к снижению задержек на 45%. В библиотеке добавлены обработчики, использующие векторные типы Vector64, Vector128 и Vector256, а также на базе векторных инструкций переписаны функции EncodeToUtf8 и DecodeFromUtf8, что обеспечило увеличение их производительности до 60% (для функций NarrowUtf16ToAscii и GetIndexOfFirstNonAsciiChar прирост производительности достигает 35%). В целом скорость прохождение тестов на платформе ARM64 выросла на 10-60%.
  • Оптимизирована поддержка платформы Linux, в том числе в штатные репозитории Ubuntu 22.04 добавлены пакеты с .NET 6 и предоставлен оптимизированный, компактный и готовый к использованию docker-образ для быстрого развёртывания контейнеров с приложениями на базе .NET.
  • Добавлена поддержка 64-разрядной архитектуры IBM Power (ppc64le).
  • Предложен инструментарий .NET Upgrade Assistant для оптимизации перевода старых приложений на ветки .NET 6 или .NET 7. В обновленной версии расширена поддержка миграции приложений с ASP.NET на ASP.NET Core, добавлены анализаторы и корректировщики кода для WinForms, WPF и библиотеки классов, реализована поддержка анализа исполняемых файлов, добавлена поддержка платформы UWP (Universal Windows Platform).
  • Расширены возможности по созданию приложений для облачных систем (cloud-native) и платформ PaaS (платформа как услуга). Предоставлена возможность создания приложений, упакованных в изолированные контейнеры, при помощи команды «dotnet publish».
  • Расширены средства для отслеживания состояния приложений и сбора метрик об их работе. Добавлены события и методы для анализа активности и производительности приложения.
  • В языке C# 11 добавлена поддержка необработанных строковых литералов, которые могут включать спецсимволы без необходимости их экранирования (подобные литералы выделяются тремя кавычками). Предложены обобщённые интерфейсы (generic) для математических функций и предоставлена возможность определения статических элементов в виртуальных интерфейсах, что позволило применить методы обобщённого программирования для выполнения математических операций без точной информации о типе значений.
  • Расширены возможности стандартной библиотеки. Добавлен API System.Formats.Tar для работы с архивами в формате Tar. В функции работы со временем (TimeStamp, DateTime и т.п.) добавлена поддержка микросекунд и наносекунд. В System.Text.Json реализована возможность управления сериализацией и десериализацией типов .NET.
  • В интерфейсе командной строки «dotnet new» добавлена поддержка автодополнения шаблонов типовых проектов через нажатие клавиши Tab.
  • В .NET SDK реализована возможность ограничения применения поставляемых шаблонов проектов, например, можно определить в каких операционных системах допустим шаблон.
  • В NuGet добавлен режим централизованного управления пакетами, позволяющий управлять зависимостями сразу для нескольких проектов.
  • Оптимизирована производительность JIT-компилятора. Добавлена поддержка механизма OSR (On Stack Replacement) для изменения кода уже выполняемых методов, что позволяет вносить оптимизации в методы, выполнение которых занимает много времени, не дожидаясь завершения текущего вызова (в тесте TechEmpower отмечается оптимизация производительности обработки первых запросов на 10-30%).
  • Оптимизирована эффективность оптимизации на основе результатов профилирования кода (PGO — Profile-guided optimization), позволяющей учитывать особенности, определяемые во время выполнения программы.
  • Добавлена поддержка компиляции в самодостаточные исполняемый файлы (Native AOT), в которых весь проект изначально скомпилирован в машинный код целевой платформы без использования промежуточного кода и без применения JIT.

2017

Поддержка .NET Core 2.0 продуктами Red Hat

Компания Red Hat 25 августа 2017 года объявила о планах обеспечить поддержку .NET Core 2.0 в рамках своего семейства Open Source технологий. .NET Core 2.0 позволяет создавать приложения .NET для различных платформ и развертывать их как на Red Hat Enterprise Linux, Red Hat OpenShift Container Platform, так и на других платформах.

.NET Core 2.0

.NET Core 2.0 теперь входит в состав Red Hat Developer Program, поддерживает .NET Standard 2.0, что обеспечивает оптимизированную совместимость с платформами и переносимость при использовании любых сред исполнения и рабочих нагрузок .NET. Она также помогает оптимизировать упаковку приложений за счет более удобного доступа к стеку для разработки веб-приложений ASP.NET Core 2.0 и ORM-прослойке Entity Framework Core 2.0. Кроме того, при использовании с Red Hat Enterprise Linux или Red Hat OpenShift Container Platform .NET Core 2.0 позволяет создавать современные контейнеризированные приложения на языках программирования C#, F# и Visual Basic.

Поддержка в продуктах Red Hat

Red Hat предложит полную поддержку .NET Core корпоративного уровня в рамках своего портфолио, предоставив разработчикам возможность использовать .NET Core 2.0 для разработки и развертывания приложений на следующих платформах:

  • Red Hat Enterprise Linux
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat OpenShift Container Platform
  • Red Hat OpenShift Online
  • Red Hat OpenShift Dedicated
  • Red Hat OpenStack Platform

Доступность

В ближайшее время .NET Core 2.0 станет доступна для соответствующих продуктов Red Hat в виде пакетов в репозитории (rpm) или в качестве контейнерных образов.

Релиз .NET Core 2.0

14 августа 2017 года корпорация Microsoft анонсировала релиз .NET Core 2.0 — модульной платформы .NET с открытым исходным кодом. Данная версия обеспечивает значительное повышение производительности Runtime и Framework. Кроме этого реализована поддержка .NET Standard 2.0, которая более чем удваивает количество API, доступных для разработчиков. .NET Core 2.0 уже доступен в Azure Web Apps. [1]

Список основных изменений:

  • Runtime:
    • Значительные улучшения производительности Runtime и Framework;
    • Внедрён .NET Standard 2.0;
    • Обеспечена поддержка еще 6 платформ, включая Debian Stretch, macOS High Sierra и др.;
    • RyuJIT — это x86 JIT в .NET Core 2.0;
    • Обеспечена предварительная поддержка Linux ARM32.
    • dotnet restore теперь является неявной командой;
    • Проекты NET Core и .NET Standard могут ссылаться на пакеты и проекты .NET Framework NuGet;
    • .NET Core SDK может быть собран из репозитория открытого исходного кода.
    • Live Unit Testing поддерживает .NET Core;
    • Реализованы улучшения навигации по коду;
    • C# Azure Functions поддерживаются «из коробки»;
    • Обеспечена поддержка CI/CD в контейнерах.

    Разработчики могут установить .NET Core 2.0 вместе с .NET Core 1.0 и 1.1. Существующие .NET-приложения, при необходимости, могут продолжать использовать Runtime 1.0 и 1.1.

    Исходные тексты компонентов .NET Core распространяются под лицензиями MIT и Apache 2, ASP.NET Core поставляется под лицензией Apache 2. Кроме Windows, заявлена поддержка Red Hat Enterprise Linux 7, CentOS 7, Debian 8/9, Fedora 25/26, SUSE Linux Enterprise Server 12 SP2+, openSUSE 42.2+, Oracle Linux 7, Ubuntu 14.04/16.04/17.04, Linux Mint 17/18, macOS 10.12/10.13. [2]

    Презентация версии .NET Core 2.0, 14 августа 2017 года.

    2016: Выпуск .NET Core 1.0

    27 июня 2016 года вышла .NET Core версии 1.0 — модульная платформа .NET с открытым исходным кодом. Вместе с релизом версии 1.0 стал доступен продукт Microsoft Visual Studio 2015 Update 3, в которой поддерживается разработка под .NET Core.

    16 ноября 2016 года был выпущен .NET Core версии 1.1.

    2014: Открыт исходный код серверной части .NET

    13 ноября 2014 года Microsoft объявила об открытии полного доступа к исходному коду серверной части платформы .NET и расширила её возможности для работы с ОС Linux и Mac.

    «Сегодня на рынке представлено множество устройств, поэтому разработчики нуждаются в универсальном инструменте, который подходит для работы с любой платформой и форм-фактором, — отметил Павел Бетсис, президент Microsoft в России. – Благодаря возможностям Visual Studio и .NET мы предлагаем комплексное решение для создания и управления приложениями на всех устройствах и платформах».

    Кроссплатформенная разработка стала возможной посредством доступа к полному набору серверных технологий платформы .NET с открытым исходным кодом, в том числе к ASP.NET, компилятору .NET, .NET Core Runtime, инфраструктуре и библиотекам приложений.

    2012: Выпуск .NET Framework 4.5

    Версия .NET Framework 4.5 вышла 15 августа 2012 года .NET Framework 4.5 предлагает несколько принципиально новых возможностей, которые позволят разработчикам в разы увеличить личную производительность при создании приложений с управляемым кодом:

    Языки. C# и Visual Basic теперь включают встроенную поддержку для написания асинхронного кода, который можно создавать так же легко, как и синхронный. F# включает провайдеры типов, что облегчает доступ к данным программам и компонентам F#.

    Производительность. Чтобы повысить производительность, в первую очередь, серверных приложений и сервисов, была значительно модернизирована общеязыковая среда выполнения (Common Language Runtime). Теперь управляемые приложения могут запускаться быстрее и работать с более высокой скоростью и меньшим периодом ожидания благодаря таким дополнениям, как сборка мусора в фоновом режиме на стороне сервера, многопоточная фоновая компиляция и оптимизация, основанная на профилях.

    Сеть. .Net Framework 4.5 включает высококачественные сетевые библиотеки, что обеспечивает постоянную поддержку облачных сервисов на разных типах устройств. Благодаря возможности объединять современные библиотеки HTTP и веб-сокеты, обеспечивается высококачественная разработка сервисов.

    Помимо указанных улучшений, .Net Framwork 4.5 предлагает улучшенную поддержку HTML5, новые возможности Entity Framework и разработки мобильных приложений с помощью ASP.Net, а также много других новых возможностей для разработчиков, создающих клиентские и облачные приложения.

    2010: Релиз .NET Framework 4.0

    Окончательная версия .NET Framework 4.0 была выпущена 12 апреля 2010 года вместе с окончательной версией Visual Studio 2010.

    Дистрибутивный пакет платформы Microsoft .NET Framework версии 4.0 устанавливает среду CLR и связанные файлы, необходимые для работы приложений, разработанных для платформы .NET Framework 4.0. Microsoft .NET Framework 4.0 — содержит новый функционал и улучшения в базовых классах (BCL) в дополнение к тем, которые были представлены ранее в .NET 4 Beta 1. Многие эти улучшения были сделаны благодаря отзывам и рекомендациям от клиентов, полученным через Microsoft Connect.

    Примечания

    1. ↑Microsoft анонсировала релиз .NET Core 2.0
    2. ↑Компания Microsoft опубликовала открытую платформу .NET Core 2.0

    WinForms

    Windows Forms — название той части .NET Framework, которая отвечает за графический интерфейс пользователя. Windows Forms «оборачивает» в управляемый код стандартные элементы управления Windows, доступные при помощи Win32 API. Причем управляемый код — классы, реализующие API для Windows Forms, не зависят от языка разработки. Т.е. программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.

    Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms .

    Ссылки

    Based on Pascal: IP Pascal · · fpGUI
    Based on Objective C: GNUstep

    Wikimedia Foundation . 2010 .

    Полезное

    Смотреть что такое «WinForms» в других словарях:

    • Designbox — for Visual Studio Developer(s) StudioWorks Software, LLC Stable release 2.2.1 (for VS 2005/2008/2010) / August 8, 2010; 14 months ago (2010 08 08) Preview release none … Wikipedia
    • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas … Wikipedia
    • DevForce — Developer(s) IdeaBlade Operating system Microsoft Windows Type Middleware License Proprietary commercial software … Wikipedia
    • DevExpress Reporting — Infobox Software name = Developer Express Reporting [http://www.devexpress.com/xtrareports XtraReports] caption = developer = Developer Express platform = Windows Forms / ASP.NET / .NET / Microsoft SQL Server genre = Business Intelligence,… … Wikipedia
    • Visual WebGui — Infobox Software name = Visual WebGui latest release version = 6.1.1b latest release date = July 15, 2008 genre = Web RAD framework license = GPL / LGPL website = [http://www.visualwebgui.com] | Visual WebGui (VWG) is an open source rapid… … Wikipedia
    • Сравнение систем отслеживания ошибок — Эта страница содержит сравнение как систем отслеживания ошибок так и систем управления проектами. Содержание 1 Системы управления проектами 2 Системы отслеживания ошибок … Википедия
    • Kylix (software) — Kylix is a compiler and integrated development environment formerly sold by Borland but later discontinued. It is a Linux version of the Borland Delphi programming language and C++ Builder, which run under Microsoft Windows. Continuing Delphi s… … Wikipedia
    • OpenEdge Advanced Business Language — (ABL) Developer(s) Progress Software Corporation Stable release 10.2B OpenEdge / December 23, 2009; 21 months ago (2009 12 23) Operating system Cross platform (see below) … Wikipedia
    • Automatic identification and data capture — (AIDC) refers to the methods of automatically identifying objects, collecting data about them, and entering that data directly into computer systems (i.e. without human involvement). Technologies typically considered as part of AIDC include bar… … Wikipedia
    • .NET Compact Framework — The Microsoft .NET Compact Framework (.NET CF) is a version of the .NET Framework that is designed to run on resource constrained mobile/embedded devices such as personal digital assistants (PDAs), mobile phones, factory controllers, set top… … Wikipedia
    • Обратная связь: Техподдержка, Реклама на сайте
    • �� Путешествия

    Экспорт словарей на сайты, сделанные на PHP,
    WordPress, MODx.

    • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
    • Искать во всех словарях
    • Искать в переводах
    • Искать в ИнтернетеИскать в этой же категории

    Переход на Web: пользовательский интерфейс на базе ASP.Net

    Сегодня в области разработки ПО можно наблюдать очередную волну активности по переводу имеющихся клиент-серверных корпоративных приложений в среду Web. И даже те, кто пока сомневается в необходимости подобной конверсии, в скором времени обязательно будут ее осуществлять, следуя моде и принципу “так делают все”. В данной статье мы обрисуем, каким образом можно решить подобную задачу с помощью технологии Microsoft .Net.

    Традиционная среда и Web: различия пользовательского интерфейса

    Пользовательский интерфейс в операционной системе Windows является “event-driven” — т. е. управляется внешними событиями и строится из элементов управления (controls). Windows предлагает встроенную реализацию классических идей по взаимодействию человека и машины — поля ввода, списки и т. д. Приложение реагирует на событие, возбуждаемое элементом управления в момент изменения его состояния (например, смена текущего элемента в списке). Встроенные элементы управления базируются на интерфейсах прикладного программирования (API) операционной системы. С помощью API разработчики могут создавать собственные элементы, а значит, интерфейсы любой сложности.

    Идеология системы Web в корне отличается от описанной. Эта платформа не задумывалась как среда для разработки приложений, ее изначальная цель — создание гипертекста, структурирование информации и построение простейших форм для ввода данных. Для описания таких данных используется язык разметки гипертекста — HTML. Средство визуализации — уже не операционная система, а браузер, который получает HTML-страницы и отображает их на экране. HTML по природе статичен, он не подходит для создания форм, где одни элементы управления зависят от других.

    Позже появился Dynamic HTML, способный представить HTML-страницы в рамках объектной модели, к которой приложен язык программирования. Наполнение страницы можно менять на стороне клиента, что позволяет создавать страницы, реагирующие на действия пользователей без обращения к серверу. Однако DHTML ограничен рамками HTML: нельзя создать новый элемент управления, а встроенные элементы плохо расширяемы.

    Браузеры содержат “двери”, выводящие за пределы HTML: которые позволяют на страницу поместить объект, выполняемый в среде браузера, но не являющийся HTML-элементом. Наиболее распространенная “дверь” — встроенная в браузер Java-машина. Java-аплет помещается на Web-страничку; при этом он стеснен только рамками Java-машины. С его помощью можно реализовать интерфейс практически любой сложности.

    Браузер Internet Explorer дает возможность поместить на страницу элементы управления ActiveX — объекты, выполняемые прямо в ОС Windows, т. е. ничем не ограниченные. Дверь слишком широка, и множество вирусов пользуются ею. Поэтому Microsoft в своей новой платформе .Net предложила механизм Code Access Security, в том числе сужающий эту дверь для ActiveX-элементов, написанных на базе .Net и выполняющихся в браузере IE 6.0 с установленным .Net Framework.

    Эти подходы свободны от ограничений HTML. Самое сильное преимущество проекта состоит в том, что он разработан на мощном языке традиционного клиент-серверного приложения, выполняемого в браузере. Но есть у него и слабости — требование поддержки браузером нужной “двери”, необходимость дополнительных работ по программированию взаимодействия клиента и Web-сервера.

    Платформа ASP.Net являет собой попытку приблизить Web-архитектуру к традиционной модели “event-driven”. Среда скрывает разделенность клиента и сервера, предоставляя универсальную модель для обработки событий. События, возникающие на клиенте, можно обработать в коде, исполняемом на сервере! Технология получила название WebForms. Элемент управления в WebForms существует в двух ипостасях — как полноценный объект на сервере и как DHTML — представление элемента управления на клиенте. Архитектура серверной стороны практически соответствует модели “event-driven”.

    Web-страница (форма) ASP.Net компилируется и представляет собой программу, генерирующую HTML. Эта программа запускается каждый раз, когда Web-страница запрашивается браузером. Для разработчика страница ASP.Net может быть физически разделена на два файла. Первый — собственно наполнение страницы, здесь размещаются специальные HTML-теги, маркирующие серверные элементы управления (о них — далее), и клиентские скрипты. Второй файл содержит серверный код, отвечающий за генерацию страницы и обработку событий. Можно кардинально уменьшить “спагеттевидность” кода, когда за строчкой клиентского наполнения страницы следует строчка, выполняющаяся на сервере. Важно, что серверный код можно писать на строго типизированном языке, например на С#. Все это упрощает отладку, повышает читабельность программы и, как следствие, уменьшает время разработки.

    WebForms поддерживает несколько типов серверных элементов управления. Рассмотрим важнейшие из них. Самые простые — HTML-серверные, т. е. HTML-элементы, доступные и программируемые на сервере. Каждый такой элемент управления предоставляет программисту интерфейс, очень похожий на HTML-элемент, который он и генерирует. Главное отличие в том, что события HTML-серверного элемента могут быть обработаны как на клиенте (в обычном DHTML), так и на сервере.

    Более изощренными являются Web-серверные элементы управления — главная “изюминка” ASP.Net. Web-серверный элемент не имеет однозначного HTML-представления. Этот объект генерирует некий DHTML, который реализует нужную функциональность. Для различных браузеров могут генерироваться различные DHTML. В комплект поставки Visual Studio .NET входят элементы управления для создания основных примитивов графического интерфейса. Если их не хватает, можно разработать собственные или расширить стандартные.

    Web-серверные элементы могут быть привязаны к данным (data-binding). Такие элементы, как “список” или “таблица”, можно заполнить значениями из источника данных, каковым является результат запроса к БД или просто массив объектов. Еще одно новшество — шаблоны элементов, описывающие, как именно из элементов источника данных будет формироваться требуемый HTML. Немного абстрагируемся от “списка” и получим элемент управления “повторитель”, который берет шаблон и повторяет его для каждого элемента источника данных. Шаблоном может быть произвольный набор HTML-тегов или других элементов управления.

    Web-серверные элементы поддерживают только серверные события. Серверное событие возникает на клиенте, но обрабатывается на сервере. В момент его возникновения (как события DHTML) информация о нем запоминается, HTML-форма пересылается на сервер, запускаются обработчики, форма переформируется и пересылается клиенту. Такой процесс именуется round-trip. Вся механика реализуется в среде ASP.Net. Технология адаптирована к подходу, когда большинство событий обрабатывается на сервере.

    В общем случае Web-серверные элементы управления обладают большей мощностью, чем HTML-серверные. Если нет необходимости в клиентской обработке событий, это лучший выбор. Назовем преимущества Web-серверных элементов:

    — богатая типизированная объектная модель, упрощающая программирование и разрешающая статическую проверку типов для значений, которые содержатся в элементе;

    — автоматическая генерация корректного HTML-документа для старых (HTML 3.2) и новых (HTML 4.0) браузеров (должна быть реализована разработчиком элементов и уже имеется для элементов, входящих в поставку Visual Studio.Net).

    Недостатки же их таковы:

    — необходимость обращения на сервер для обработки событий;

    — меньший контроль над получаемым DHTML.

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

    Подходы к Web-переводу

    Перенос нетривиального интерфейса на Web-платформу обязательно должен включать в себя фазу перепроектирования. Даже несложное приложение, основанное на полноценной графической системе, как правило, использует идеи, которые трудно или невозможно реализовать в Web. MDI-интерфейс (Multiple Document Interface) в принципе непереносим без перепроектирования. Важно помнить, что Web — это независимые страницы гипертекста и их трудно синхронизировать между собой. Хорошо реализуемый в Web интерфейс — упрощенный SDI (Single Document Interface), когда пользователь работает в одном окне. Открытие другого окна является созданием нового независимого контекста.

    Можно выделить несколько подходов к переходу на платформу ASP.Net.

    — Использование серверных элементов управления: интерфейс строится на Web- и HTML-серверных элементах. Последние разрешают также клиентские события. Плюсы: ясная архитектура, простота реализации. Минусы: частое обращение к серверу для запуска событий (round-trip).

    — Использование DHTML: цель — уменьшение трафика ценой отказа от прелестей WebForms. Вместо round-trip используется клиентский скрипт для обработки событий и изменения HTML-наполнения страницы. Плюсы: минимальный трафик и малое время отклика. Минусы: нетипизированный код (трудная отладка), отсутствие в результирующей программе хорошо подготовленных к повторному использованию блоков.

    — Комбинированный подход: цель — сделать оптимизированное приложение, не теряя преимуществ ASP.Net. Идея состоит в разработке Web-серверных элементов, которые разрешают клиентскую обработку событий. Такие элементы можно программировать и на сервере, и на клиенте, так как они будут генерировать известный HTML. Плюсы: оптимальный трафик и время отклика, ясная архитектура. Минусы: трудоемкость разработки элементов управления и архитектуры.

    — Java-аплет или ActiveX: данный подход был освещен выше в первом разделе статьи. Главное отличие — использование полноценной базы для создания графического интерфейса пользователя. Плюсы: минимальный трафик и малое время отклика, ясность архитектуры, минимальное время реализации интерфейса. Минусы: дополнительные затраты на проектирование и реализацию взаимодействия с сервером; для аплета — смешение не связанных (конкурирующих) технологий, для ActiveX — требование IE в качестве браузера.

    Если необходима поддержка нескольких браузеров, в том числе слабых в отношении реализации DHTML (как ранние Netscape), то лучшим вариантом будет Java-аплет или использование серверных элементов управления. Кроме того, последний — самый быстрый способ для реализации всего приложения. Комбинирование — наиболее трудоемкий подход, но ведущий к хорошей оптимизации.

    ASP.Net — показательный шаг в развитии базирующихся на DHTML средств разработки Web-приложений. Здесь как нигде более разработчики и архитекторы могут увидеть пропасть, разделяющую мощь современных архитектурных подходов и языков программирования и неприспособленность DHTML для создания развитого пользовательского интерфейса. С этой точки зрения ASP.Net является промежуточным решением, по-прежнему неспособным кардинально уменьшить ресурсоемкость разработки нетривиального Web-интерфейса. Однако по сложности создание адаптированного под Web интерфейса становится сравнимым с разработкой для традиционных графических сред.

    Web-технологии еще очень сыры. Тем не менее в ряду своих предшественников (CGI, PHP, ASP) ASP.Net — революционер. “Двухслойные” Web-серверные элементы управления вкупе с новым подходом к программированию Web-страниц разделяют серверный и клиентский код, уменьшая степень его “спагеттевидности” и позволяя создавать легко читаемые, понятные, а значит, готовые к дальнейшему развитию программы. Локализуется самая трудоемкая работа — написание клиентского DHTML, которая теперь превращается в написание нужного элемента управления. При этом значительно повышается степень повторного использования таких элементов.

    Технология WebForms способствует ускорению процесса разработки и уменьшению затрат. Не нужно увлекаться копированием традиционного интерфейса один в один, грамотный подход — сделать упрощения в интерфейсе в соответствии с ограничениями Web-платформы. В этом случае вы не допустите сползания проекта в сторону DHTML-программирования. Перепроектировав интерфейс и располагая готовыми к использованию качественными ASP.Net Web-серверными элементами управления, можно значительно увеличить эффективность работы при переводе интерфейса с Windows-платформы на Web.

    С автором, ведущим разработчиком компании “АстроСофт”, можно связаться по адресу: Alexey_K@astrosoft-yenisei.krs.ru.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *