Оконные windows приложения web приложения библиотеки web сервисы

Работа по теме: Зиборов. Глава: Глава 15 Создание Web-служб и их клиентов. ВУЗ: НТУУ КПИ.

О Web-службах

Web-служба
(от англ. Web
service)
— это
программная система (более конкрет­но
— откомпилированная библиотека
динамической компоновки, т. е. файл
форма­та DLL
в папке bin
приложения),
расположенная на удаленном сервере
(компьюте­ре), к которой можно обращаться
(потреблять сервис Web-службы)
из своего клиентского компьютера. При
этом возможности удаленной Web-службы
будут реализованы в вашем Windows
или Web-приложении,
а пользователь при доста­точной
скорости трафика может даже не заметить
обращения вашей программы к удаленному
серверу. На удаленном компьютере могут
находиться и программный код, и данные.
Для передачи по Интернету вызовов
методов Web-служб
и резуль­татов их выполнения используется
протокол SOAP
(
Simple
Object
Access
Protocol).
Протокол SOAP
применяет формат сообщений, основанный
на XML.
Web-служба
и протокол SOAP
не зависят от конкретной платформы.
Поэтому различные разра­ботчики могут
использовать Web-службы
друг друга, не беспокоясь о совместимо­сти
операционных систем, технологий или
языков программирования. Другое на­звание
Web-службы
Web-сервис.

Web-службы
решают очень разные задачи. Это прогноз
погоды, гороскоп, пере­водчик слов на
различные иностранные языки, курсы
валют, котировки ценных бу­маг, проверка
на корректность введенного пользователем
почтового адреса, реестр улиц города,
статистика правонарушений, информация
о наличии свободных мест на авиарейс
или в кинотеатр и т. д. Причем любой из
подобных сервисов вы можете легко
встроить в свое Windows
или Web-приложение
путем создания клиентского приложения,
потребляющего такой уже существующий
сервис Web-службы.

Рис. 15.1.
Пять методов Web-сервиса
по операциям с курсами валют

Для поиска Web-служб
в Интернете существует несколько сайтов,
в которых ; Web-службы
регистрируются их провайдерами для
того, чтобы их могли найти за­интересованные
в них разработчики. Таким сайтом является,
например: http://uddi.xml.org/uddiorg.
Регистрация в каталоге UDDI
бесплатна. Здесь, сегодня можно найти
несколько десятков более или менее
полезных Web-служб.
В Сети можно найти и другие списки
общедоступных Web-служб
различных произво-ителей, например:
http://www.xmethods.org/ve2/index.po.
Список русскоязычных Web-служб
можно найти по адресу:
http://ivbeg.bestpersons.ru/feed/post3279396/.

Упрощенно говоря,
Web-служба
в среде .NET
состоит из двух компонентов: ASMХ-файла
и файла программной поддержки ASMX.cs.
ASMX-файл
содержит в себе информацию о методах
Web-службы,
о способах их тестирования, это можно
посмотреть в любом Web-браузере.
Файл программной поддержки написан на
языке Visual
С#,
может
быть скомпилирован для получения
библиотеки DLL.
Именно с расширением dll
обеспечивает реализацию методов
Web-службы.
Например, на рис. 15.1 показано отображение
в браузере Internet
Explorer
методов Web-службы,
представленной в Сети по адресу:

http://webservice.webserviceshare.com/currencyconverter/rates.asmx.

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

Пример 110.
Клиентское
Web-приложение,
потребляющее сервис
Web-службы
«Прогноз погоды»

В данном разделе
создадим клиентское Web-приложение,
потребляющее сервис Web-службы
сайта http://www.webservicex.net/globalweather.asmx
и продемонстрируем
тем самым, что это — просто! Данная
Web-служба
возвращает прогноз погоды в городе,
который пользователь задает в запросе
к службе. Эта Web-служба
поддерживает два метода (функции):
GetСitiesByСountry
и GetWeather
(Рис. 15.2). На вход первой функции
GetСitiesByСountry
подают название страны, где
хотят получить
прогноз погоды, а на выходе функции
получают перечисление городов этой
страны, для которых Web-служба
готова сделать прогноз погоды.

Рис. 15.2.
Два метода Web-службы
прогноза погоды

На вход второй
функции GetWeather
подают названия города и страны, а на
выходе функции получают XML-строку,
содержащую прогнозируемые параметры
погоды (листинг 15.1).

Листинг 15.1.
XML-код,
полученный из функции
Getweatber

<?xml version=»1.0″
encoding=»utf-16″?>

<CurrentWeather>

<Location>Moscow
/ Vnukovo , Russia (UUWW) 55-39N 037-16E</Location>

<Time>Dec
09, 2010 — 03:30 AM EST / 2010.12.09 0830 UTC</Time>

<Wind>
from the E (090 degrees) at 11 MPH (10 KT):0</Wind>

<Visibility>
1 mile(s):0</Visibility>

<SkyConditions>
overcast</SkyConditions>

<Temperature>
23 F (-5 C)</Temperature>

<Wind>Windchill:
12 F (-11 C):l</Wind>

<DewPoint>
23 F (-5 C)</DewPoint>

<RelativeHumidity>
100%</RelativeHumidity>

<Pressure>
29.68 in. Hg (1005 hPa)</Pressure>

<Status>Success</Status>

<CurrentWeather>

Как
видно
из
листинга,
параметры
погоды
указываются
в
XML-элементах:
тем­пература
(Temperature),
относительная
влажность
(RelativeHumidity),
давление
(Pressure)
и
проч.
в
Москве
9 декабря
2010 года
на
8:30 по
Гринвичу.

Напишем Web-приложение
(также легко можно написать и
Windows-приложе­ние),
обращающееся к функции GetWeather
данной удаленной Web-службы.
Причем программный код должен быть
минимальным и демонстрировать лишь
прин­цип подключения и доступ к нужному
элементу (например, температуре)
XML-документа.

Для этой цели после
запуска Visual
Studio
2010
выберем
проект шаблона Empty
ASP.NET
Web
Application,
укажем имя Name
WebКлиентПогода.
К текущему проекту добавим Web-форму.
Для этого в пункте меню Project
выберем команду Add
New
Item
и в появившемся окне дважды щелкнем на
шаблоне Web
Form.
Далее, попав в конструктор Web-формы,
из панели элементов Toolbox
перетащим кнопку Button,
текстовое поле TextBox
для вывода строки с данными XML
и метку Label
для вывода на нее значения температуры.

Теперь наступает
ключевой момент, а именно — подключение
ссылки на удаленную Web-службу,
содержащую класс с необходимыми методами.
Для этого в пункте меню Project
выберем
команду Add
Web
Reference.
Этого пункта меню может не быть в меню
Project,
в этом случае выбираем Add
Service
Reference
| Аdvanced
|
Add
Web
Reference.
Также эту команду можно выбрать в
контекстном меню окна Solution
Explorer.
В результате получим интерфейс, показанный
на рис. 15.3. Здесь в поле URL
введем адрес Web-службы:
http://www.webservicex.net/
globalweather.asmx
и щелкнем
на кнопке Go.

Рис. 15.3.
Поиск нужной Web-службы
в Сети

Теперь в окне под
полем URL
мы увидим оба метода данного сервиса в
том виде, как это было на рис. 15.2 (после
нажатия на кнопку Go).
При этом станет доступной кнопка Add
Reference.
Щелкнем на этой кнопке, после этого в
окне Solution
Explorer
появится новый узел Web
References
со ссылкой на удаленный класс
net.webservicex.www
(рис. 15.4).

Рис. 15.4.
В окне Solution
Explorer
появилась ссылка на удаленный класс

Теперь этот класс,
содержащий необходимую нам удаленную
Web-службу,
мы можем использовать в своем программном
коде (листинг 15.2).

Листинг 15.2.
Web-приложение,
обращающееся к сервису удаленной
Web-службы
прогноза погоды

// Web-приложение,
потребляющее сервис удаленной Web-службы
прогноза погоды. Приложение в текстовом

// поле TextBox
демонстрирует XML-строку
с параметрами погоды для города,
указанного во входных параметрах

// при обращении к
Web-службе.
Также выводит в текстовую метку значение
температуры в этом городе

using
System;

using
System.Web.Ul.WebControls;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
Пoroдa_Web

{

public
partial class WebForm1 : System.Web.UI.Page

{

protected void
Page_Load(object sender, EventArgs e)

{

Button1.Text
= «Выяснить
погоду»;
Label1.Text = string.Empty;

TextBox1.TextMode
= TextBoxMode.MultiLine;

Button1.Focus();

}

protected
void Button1_Click(object sender, EventArgs e)

{

// Создаем клиентское
приложение Web-службы:

//
http://www.webservicex.net/globalweather.asmx.

// Эта Web-служба
часто бывает перегужена и поэтому может
выдать сообщение: «Server
is
too
busy».

// Создание экземпляра
прокси-класса:

var ПОГОДА
= new net.webservicex.www.GlobalWeather();

// Эти три строчки
— для отладки, чтобы лишний раз не
«дергать» сервер:

// var
Reader = new System.IO.StreamReader(«С:\Погода.xml»);

// string
Строка_ХМL
= Reader.ReadToEnd() ;

//
Reader.Close();

// Функция GetWeather
запрашивает строковые параметры с
названием

// города и страны
и возвращает строку с XML-документом:

string
Строка_ХML
= ПОГОДА.GetWeather(«Moscow»,
«Russia»);

// Какая
погода
в
Киеве:

// string
Строка_ХМL
= ПОГОДА.GetWeather(«Kyiv»,
«Ukraine»);

TextBox1.Text
= Строка_ХМL;

var
Документ
= new System.Xml.XmlDocument();

// Загрузка строки
XML
в XML-документ

Документ. LoadXml
(Строка_ХМL)
;

var
Читатель
= new System.Xml.XmlNodeReader(Документ);

string Имя
= string.Empty; string Значение
= string.Empty;

while
(Читатель.Read()
== true)

{ // Читаем
последовательно каждый узел, выясняя
тип узла:

if
(Читатель.NodeType
== System.Xml.XmlNodeType.Element)

Имя = Читатель.Name;

// Каждый раз
запоминаем имя узла

if
(Читатель.NodeType
!= System.Xml.XmlNodeType.Text) continue;

if (Имя
== «Temperature») { Значение
= Читатель.Value;
break; }

} // Выход из
цикла, когда прочитали данные узла
«Temperature»

Label1.Text
= «Температура воздуха в Москве: »
+ Значение;

}

}

}

Как видно, в
программном коде при обработке события
«щелчок на кнопке» Выяснить
погоду

создается экземпляр класса удаленной
Web-службы.
Далее про­исходит непосредственное
обращение к методу класса GetWeather
с входными параметрами город
и страна,
и метод GetWeather
возвращает строку с XMLдокументом.
Данную строку выводим в текстовое поле
TextBox1.
Для «расшифровки» XML-строки
загружаем эту строку в XML-документ.
Значение температуры находим в содержимом
элемента Temperature,
затем выводим значение температуры на
метку Label1.

Фрагмент работы
программы показан на рис. 15.5.

Рис. 15.5.
Работа клиента Web-службы
«Прогноз погоды»

Можно было бы
вывести содержимое XML-документа
на сетку данных GridView,
тогда мы могли бы увидеть все параметры
погоды в удобной таблице. Мы не стали
этого делать, чтобы не загромождать
программу и тем самым не «затуше­вать»
главную идею, а именно обращение к
удаленному классу, предоставленному
Web-службой.

Таким образом, мы
продемонстрировали создание клиентского
Web-приложения,
потребляющего сервис Web-службы.
Замечу, что аналогичным обра­зом можно
создавать и Windows-приложения
(настольные приложения), которые также,
будучи клиентами какой-либо Web-службы,
могут получать, например, справочную
информацию в онлайновом режиме.

Убедиться в
работоспособности данной программы
можно, открыв соответст­вующий файл
решения в папке WebKлиeнтПoгoдa.

Пример 111.
Клиентское
Windows-приложение,
использующее
Web-службу
«Прогноз погоды»

Теперь создадим
клиентское Windows-приложение,
потребляющее сервис той же Web-службы
«Прогноз погоды», и продемонстрируем
тем самым, что обращаться к удаленному
классу можно не только из Web-приложения,
но и из Windows-приложения
(т. е. из настольного приложения).

Для решения этой
задачи запустим Visual
Studio
2010
, выберем
шаблон Windows
Forms
Application
С#.
В поле
Name
зададим имя WindowsKлиентПогодa.
В конструкторе формы добавим кнопку
Button,
текстовое поле TextBox
и метку Label.

Следующим этапом
разработки клиентского приложения
является добавление ссылки на удаленный
класс искомой Web-службы.
Для этого выберем в пункте меню Project
команду Add
Service
Reference,
это приведет к появлению диалогового
окна Add
Service
Reference.
В этом окне щелкнем кнопку Advanced,
а затем кноп­ку Add
Web
Reference.
В появившемся диалоговом окне Add
Web
Reference
в поле URL
введем адрес
Web-службы:
http://www.webservicex.net/globalweather.asmx
и нажмем
кнопку Go.
В окне ниже увидим список доступных
методов данного сер­виса, после этого
щелкнем на кнопке Add
Reference.
При этом в окне Solution
Ex­plorer
появится ссылка на удаленный класс:
net.webservicex.www.
Теперь мы мо­жем использовать эту
ссылку в программном коде (листинг
15.3).

Листинг 15.3.
Windows-приложение,
использующее сервис удаленной
Web-службы
прогноза
погоды

// Windows-приложение,
потребляющее сервис удаленной Web-службы
прогноза погоды. Приложение в текстовом

//поле TextBox
демонстрирует XML-строку
с параметрами погоды для города,
указанного во входных параметрах

// при обращении к
Web-службе.
Также выводит в текстовую метку значение
температуры в этом городе

using
System;

using
System.Collections.Generic;

using System.Linq;

using
System.Windows.Forms;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebКлиентПогода

{

public
partial class Form1:Form

{

public
Form1()

{

InitializeComponent();

//
Добавляем
внешнюю
ссылку
на
Web-службу
таким
образом:

// Проект — Добавить
ссылку на службу — Дополнительно —

// Добавить веб-ссылку
http://www.webservicex.net/globalweather.asm

Button1.Text
= «Выяснить
погоду»;
label1.Text = string.Empty;

textBox1.Multiline
= true;

button1.Focus();

}

private
void button1_Click(object sender, EventArgs e)

{ // Создание
экземпляра прокси-класса:

var ПОГОДА
= new net.webservicex.www.GlobalWeather();

// Эти три строчки
— для отладки, чтобы лишний раз не
«дергать» сервер:

//var
Reader = new System.IO.StreamReader(«С:\Погода.xml»);

//string
Строка_ХМL
= Reader.ReadToEnd();

//Reader.Close();

// Функция GetWeather
запрашивает строковые параметры с
названием

// города и страны
и возвращает строку с XML-документом:

string
Cтрока_XML
=. ПОГОДА.GetWeather(«Moscow»,
«Russia»);

// Какая погода в
Киеве:

// string
Cтрока_XML
= ПОГОДА.GetWeather(«Kyiv»,
«Ukraine»);

textBox1.Text
= Строка_ХМL;

// Здесь считывание
значения узла из XML-строки
выполено более эффективно:

var
ХМL_элемент
= System.Xml.Linq.XElement.Parse(Cтрока_XML);

string
Значение
= ХМL_элемент.Element(«Temperature»).Value;

label1.Text
= «Температура воздуха в Москве: »
+ Значение;

}

}

}

Рис. 15.6.
Работа Windows-клиента
Web-службы
«Прогноз погоды»

В программном коде
при обработке события «щелчок на
кнопке» button1
создаем экземпляр удаленного класса
погода,
а затем
обращаемся к методу класса GetWeather,
подавая на вход метода страну и город
(Russia
и Moscow),
для которогс i
хотим вяснить прогноз погоды. Этот метод
возвращает строку XML.
Эту XML
строку мы выводим в текстовое поле
textBox1,
так же, как мы это делали в Web-приложении,
однако извлекаем из узла Temperature
прогнозируемое значение температуры
более эффективным образом, используя
методы технологии Linq.
Фрагмент работы программы представлен
на рис. 15.6. Убедиться в работоспособности
программы можно, открыв решение в папке
WindowsKлиентПогода.

Пример 112. Создание
простейшей
Web-службы

А теперь, когда мы
убедились, что создать клиентское
приложение, потреб­ляющее сервис
Web-службы,
не сложно, поставим задачу создать самую
простую Web-службу,
чтобы убедиться, что это тоже простая
задача. Автор понимает, что сейчас
наступил очень деликатный момент: если
сейчас будет приведен какой-либо сложный
пример, то можно навсегда отбить интерес
у читателя разобраться с принципами
работы Web-служб.
Поэтому задача, решаемая данной
Web-службой,
будет максимально простой. Например,
пользователю предлагается ввести два
чис­ла, а Web-служба
берет на себя функцию сложения этих
двух чисел и вывода (воз­врата) суммы.
При этом необходимо произвести диагностику
вводимых данных. От такой Web-службы
нет особенной пользы, но на этой маленькой
задачке нам будет удобно продемонстрировать
все возможности. Здесь, так же как и при
отладке ак­тивных Web-страниц
из предыдущей главы, при отладке данной
Web-службы
в ка­честве удаленного серверного
компьютера и клиентского компьютера
мы будем использовать один ваш локальный
компьютер.

Для решения этой
задачи запустим Visual
Studio
2010
, выберем
шаблон Empty
ASP.NET
Web
Application,
зададим имя, например, WebCлyжбaCyммa.
Затем в меню Project
выберем
команду Add
New
Item,
в появившемся окне укажем шаб­лон Web
Service
и щелкнем на кнопке Add.
Сразу после этого попадаем на вкладку
WebServicel.asmx.cs
готовой Web-службы
«Hello
World«,
и уже ее можно тестиро­вать. Содержимое
этой вкладки приведено в листинге 15.4.

Листинг 15.5.
Создание простейшей
Web-службы

using
System;

using
System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

namespace
WebСлужбаСумма

{

///
<summary>

/// Summary
description for WebServicе1

///
</summary>

[WebService(Namespace
= «http://tempuri.org/»)]

[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

//To allow
this Web Service to be called from script, using ASP.NET
AJAX,

//
uncomment the following line.

//
[System.Web.Script.Services.ScriptService]

public
class WebService1 : System.Web.Services.WebService

{

[WebMethod]

public
string HelloWorld()

{

return
«Hello
World»;

}

}

}

Однако «HelloWorld
— это другая
задача, разработчики Visual
Studio
2010
включили
ее для облегчения программистам освоения
данной технологии. Нас ин­тересует
именно наша задача, поэтому изменим
файл программной поддержки, как показано
в листинге 15.5.

Листинг 15.5.
Простейшая
Web-служба

/ / На входе данной
Web-службы
предлагается ввести два числа, а
Web-служба
берет на себя функцию сложения

//этих двух чисел
и вывода (возврата) суммы. При этом
Web-служба
производит диагностику вводимых данных

using
System;
.

using
System.Web.Services;

Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebApplication1

{

///
<summary>

/// Summary
description for WebService1

///
</summary>

[WebService(Namespace
= «http://tempuri.org/»)]

[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.Toolboxltem(false)
]

// To allow
this Web Service to be called from script, using ASP.NET
AJAX,

//
uncomment the following line.

//
[System.Web.Script.Services.ScriptService]

public
class WebService1 : System.Web.Services.WebService

{

[WebMethod]

public
string Сумма(string
Число1,
string Число2)

{ // Входные
параметры объявляем типа string,
чтобы принимать

// от пользователя
любые символы, анализировать их и при

// «плохом вводе»
сообщать по-русски.

Single X,
Y;

bool
Число_ли
= Single.TryParse( Число1,
System.Globalization.NumberStyles.Number,

System.Globalization.NumberFormatlnfо.Currentlnfo,
out X);

if
(Число_ли == false)
return
«В первом поле должно быть число»;

Число_ли
= Single.TryParse(Число2,
System.Globalization.NumberStyles.Number,

System.Globalization.NumberFormatlnfo.Currentlnfо,
out Y) ;

if
(Число_ли == false)
return
«Во втором поле должно быть число»;

Single Z =
X + Y;

return
«Сумма
= » + Z.ToString();

}

}

}

Как видно из текста
программы, мы не программировали никакой
пользова­тельский интерфейс. У нас
здесь нет ни формы, ни кнопок, ни текстовых
полей. Уже отсюда понятно, что Web-служба
— это удаленный класс, к которому можно
подключиться через Интернет из своего,
например, Windows
или Web-приложения.
На вход функции сумма пользователь
Web-службы
подает два числа, которые принимаются
функцией как две строки. Функция
Single.TryParse
проверяет, числовые ли символы содержатся
во введенных строках, и если это так, то
происходит преобразование строковых
переменных в переменные типа Single.

Теперь можем
протестировать данную Web-службу,
для этого нажмем клавишу <F5>.
При этом Web-браузер
откроет ASMX-файл.
Здесь мы увидим единственный метод этой
Web-службы
— сумма. Щелчок указателем мыши на этой
гиперссылке обеспечит возможность
тестирования нашей Web-службы
(рис. 15.7).

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

Убедиться в
работоспособности данной Web-службы
можно, открыв в папке WebСлужбаСумма
соответствующий файл решения.

Рис. 15.7.
Тестирование созданной Web-службы

Пример 113. Создание
Windows-приложения
— потребителя сервиса
Web-службы

Теперь напишем
Windows-приложение
(т. е. создадим ехе-файл),
который бу­дет обращаться к Web-службе,
написанной в предыдущем разделе. Такое
приложение можно называть клиентским.
Для этого
запустим Visual
Studio
2010
, выберем
шаблон Windows
Forms
Application
С#
(можно
даже Console
Application),
ука­жем имя проекта WebКлиентСумма.
Из панели Toolbox
перенесем в форму командную кнопку
Button.
Запланируем, что вся работа с удаленной
Web-службой
будет происходить при обработке события
«щелчок на кнопке» Пуск.

Чтобы сделать
Windows-приложение
потребителем сервиса Web-службы,
не­обходимо в его проекте создать
Web-ссылку
на удаленный класс. Для этого выберем
в пункте меню Project
(или в контекстном меню окна Solution
Explorer)
команду Add
Service
Reference,
это приведет к появлению диалогового
окна Add
Service
Reference.
В этом окне нажмем кнопку Advanced,
а затем в следующем кне кнопку Add
Web
Reference.

Поскольку мы
отлаживаем и Web-службу,
и его клиентское приложение на одном
локальном компьютере, в поле URL
пишем виртуальный адрес ASMX-файла.
Этот адрес мы можем получить, запустив
нашу Web-службу
из предыдущего раздела, а затем скопировав
в буфер обмена его URL-адрес.
Для локального компьютера, на котором
автор отлаживал данный пример, URL-адрес
был таким: http://Iocalhost:
1611/
Servicel
.
asmx.

Затем нажмем кнопку
Go
и тем самым получим доступ к кнопке Add
Reference,
после щелчка на которой в окне Solution
Explorer
добавится значок ссылки на класс
localhost,
обеспечивающий доступ к Web-службе
(рис. 15.8).

Рис. 15.8.
Добавление ссылки на класс localhost

Если посмотреть
на этот класс через браузер объектов
View
in
Object
Browser
(используя контекстное меню в окне
Solution
Explorer),
то можно увидеть все свойства, методы
и события, которые содержатся в этом
классе. Теперь, когда в наш проект
добавлена ссылка на удаленный класс,
мы можем вызывать методы этого класса
в нашей программе (листинг 15.6).

Листинг 15.6.
Windows-приложение,
потребляющее сервис
Web-службы

// Клиентское
Windows-приложение,
потребляющее сервис Web-службы
предыдущего примера WebСлужбаСумма

using
System;

using
System.Windows.Forms;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebKлиентСумма

{

public
partial class Form1:Form

{

public
Form1()

{

InitializeComponent();

Button1.Text
= «Пуск»;

}

private
void button1_Click(object sender, EventArgs e)

{ // Чтобы добавить
Web-службу
к обычному Windows-приложению:

// Project
| Add Service Reference | Advanced | Add Web Reference,

// затем в поле URL
пишем виртуальный адрес Web-службы

//
http://localhost:1611/Servicel.asmx.

// Создаем экземпляр
удаленного класса:

var
Удаленный
= new localhost.WebService1();

string Sum
= Удаленный.Сумма(«23,5»,
«11,4»);

MessageBox.Show(Sum);

}

}

}

Как видно из
программного кода, при обработке события
«щелчок мышью» на кнопке Пуск
создаем экземпляр удаленного класса и
обращаемся к его функции (методу) сумма.
При этом при вводе чисел специально
одно из них пишем через десятичную
точку, а другое — через запятую для
тестирования возможности ввода чисел
обоими способами.

Результат работы
программы представлен на рис. 15.9.

Рис. 15.9.
Обращение Windows-приложения
к Web-службе

Убедиться в
работоспособности программы можно,
открыв соответствующий sln-файл
решения в папке WebКлиентСумма.

Пример 114.
Web-служба
«Торговая рекомендация на рынке
Forex«

Создадим Web-службу,
обеспечивающую торговой рекомендацией
участников международного валютного
рынка Forex.
Как известно, любой желающий через
Интернет, используя соответствующее
программное обеспечение, может
подклю­читься к этому рынку и совершить
либо покупку какой-либо валютной пары
(например, евро-доллар, EUR/USD),
либо ее продажу. И в зависимости от
правильно выбранного направления
движения цены либо получить прибыль,
либо убыток. Существует множество
сайтов, где выкладываются рекомендуемые
торговые стра­тегии работы на рынке
Forex
на текущую
европейскую или американскую сессию.
Иапример, мы доверяем какому-нибудь
из таких сайтов, скажем, сайту
http://www.forexrdc.ru/subscribers.php?action=prognoz,
и решаем
руководство­ваться его рекомендациями.
Кроме того, мы создаем Web-службу,
которая с помощью синтаксического
разбора указанной выше Web-страницы
будет извлекать торговую стратегию,
рекомендованную данным сайтом на текущий
день. Поскольку в
нашей книге
мы должны привести очень краткий и
выразительный пример, то ог­раничимся
торговой рекомендацией только для одной
валютной пары EUR/USD.

Для решения этой
задачи запутим Visual
Studio
2010
, выберем
шаблон ASP.NET
Empty
Web
Application
С#,
зададим
имя — WebСлуж6aForex.
Далее в пункте меню Project
выберем пункт Add
New
Item
и в появившемся окне дважды щелкнем на
шаблоне Web
Service.
Мы получим простейшую Web-службу
«Hello
World«.
Однако мы
ее изменим согласно условию нашей
задачи. Содержимое файлa
программной поддержки приведено в
листинге 15.7.

Листинг 15.7.
Web-служба
«Торговая рекомендация на рынке
Forex«

// Web-служба,
которая с помощью синтаксического
разбора Web-страницы

//
http://www.forex-rdc.ru/subscribers.php?action=prognoz

// извлекает торговую
рекомендацию на рынке Forex
для валютной пары EUR/USD,
предлагаемую данным сайтом

// на текущий день,
и выводит ее потребителю сервиса
Web-службы
в виде строки

using
System;

using
System.Web.Services;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebCлуж6aForex

{

///
<summary>

/// Summary
description for WebService1

///
</summary>

[WebService(Namespace
= «http://tempuri.org/»)]

[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.Toolboxltem(false)]

//To allow
this Web Service to be called from script, using ASP.NET
AJAX,

//
uncomment the following line.

//
[System.Web.Script.Services.ScriptService]

public
class WebService1: System.Web.Services.WebService

{

[WebMethod]

public
string
Рекомендация()

{ // Создаем объект
для чтения Web-страницы:

var КЛИЕНТ
= new System.Net.WebClient();

// Чтобы
русские
буквы
читались
корректно,
объявляем
объект
Кодировка:

var
Кодировка
= System.Text.Encoding.GetEncoding(1251);

System.IO.Stream
ПОТОК;

string
СТРОКА;

try

{
// Попытка
открытия Web-ресурса:

ПОТОК = КЛИЕНТ.OpenRead(
«http://www.forex-rdc.ru/subscribers.php?action=prognoz»);

}

catch
(Exception
Ситуация)

{

СТРОКА =
string.Format(«Ошибка
открытия www.forexrdc.rurn{0)»,
Ситуация);

return
СТРОКА;

}

// Чтение HTML-разметки
Web-страницы:

var
Читатель = new
System.IO.StreamReader(ПОТОК,
Кодировка);

// Копируем
HTML-разметку
в строковую переменную:

СТРОКА =
Читатель.ReadToEnd();

// Ищем в разметке
страницы фрагмент с указанной строкой:

int
i
= СТРОКА.IndexOf(«Торговая
стратегия:»);

// Ищем стратегию
только для EUR/USD:

СТРОКА =
CTPOKA.Substring(i,
120);

// Удаляем
HTML-разметку:

i
= СТРОКА.IndexOf(«</р>»);

СТРОКА
= СТРОКА.Remove(i)
;

СТРОКА =
CTPOKA.Replace(«</b>»,
«»);

// Вставляем текущую
дату:

СТРОКА
= СТРОКА.Replace(«стратегия:»,
«стратегия
для
EUR/USD на
» +

DateTime.
Now. ToLongDateStr ing () + «:rari»);

ПОТОК.Close();

return
СТРОКА;

}

}

}

Как видно из
программного кода, данная Web-служба
содержит в себе один метод Рекомендация
()
, который
не имеет входных параметров. В начале
метода соз­даем экземпляр класса
WebClient
для чтения и последующего синтаксического
раз­бора Web-страницы.
Вообще говоря, Web-страница
может быть записана на машинном носителе
в какой-либо кодировке. Чаще всего это
Unicode
(
UTF-8),
рус­скоязычные сайты часто имеют
кодировку Windows
1251
. Чтобы
выяснить, в какой кодировке записана
Web-страница,
следует в браузере в контекстном меню
навести указатель мыши на пункт меню
Кодировка.

При чтении
Web-страницы
создаем объект поток, используя URL-адрес
стра­ницы, и объект кодировка для
корректного отображения кириллицы.
После копи­рования HTML-разметки
страницы в строковую переменную строка
ищем в
разметке страницы раздел с торговой
стратегией для EUR/USD
с помощью строковых операции.

Теперь запустим
созданную Web-службу,
нажав клавишу <F5>.
Если формальных ошибок нет, мы получим
отображение ASMX-файла
в браузере (рис. 15.10).

Рис. 15.10.
Отображение ASMX-файла
в браузере

Щелкнув в этом
окне на изображении единственного
метода Рекомендация
данной Web-службы,
мы попадаем на другую страницу, где
получаемвозможность его тестировать.
Для этого щелкнем по кнопке Invoke.
В результате тестирования получим в
браузере результат работы данного
метода Web-службы
в формате XML-сообщения
(рис. 15.11).

Рис. 15.11.
XML-сообщение,
как результат работы Web-сервиса

Убедиться в
работоспособности программы можно,
запустив соответствующее решение в
папке WebCлyжбaForex.

Пример 115.
Клиентское приложение, потребляющее
сервис
Web-службы
«Торговая рекомендация на рынке
Forex«

Теперь напишем
клиентское Windows-приложение,
использующее Web-службу,
созданную
нами в предыдущем примере. Для этого
запустим Visual
Studio
2010
, (выберем
шаблон Windows
Forms
Application
С#
и в поле
Name
зададим имя
WebКлиентFогех.
Из панели элементов Toolbox
перенесем
в форму метку Label,
куда будем помещать строку торговой
рекомендации, полученную от Web-службы
«Торговая стратегия на рынке Forex».

Далее необходимо
в проекте создать Web-ссылку
на удаленный класс Web-службы.
Для этого выберем в пункте меню Project
команду Add
Service
Reference,
это
приведет к
появлению диалогового окна Add
Service
Reference.
В этом окне мажмем кнопку Advanced,
а затем в следующем окне кнопку Add
Web
Reference.

Теперь в поле URL
пишем виртуальный адрес ASMX-файла
используемой Web-службы.
Этот адрес мы можем получить, запустив
нашу Web-службу
из пре­дыдущего раздела, а затем
скопировав в буфер обмена его URLадрес.
На вкладке программного кода наберем
простейшую программу (листинг 15.8).

Листинг 15.8.
Клиентское приложение, потребляющее
сервис
Web-службы
«Торговая рекомендация на рынке
Forex«

// Получаем прогноз
рынка Forex
на текущий день. Клиентское
Windows-приложение,
потребляющее сервис

// Web-службы
предыдущего примера WebСлуж6aForex

using
System.Windows.Forms;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebKлиентForex

{

public
partial class Form1:Form

{

public
Form1()

{

InitializeComponent();

// Создаем
клиентское
приложение
Web-службы:

//
http://localhost:1330/WebService1.asmx

// Создаем
экземпляр
удаленного
класса:

var Forex =
new localhost.WebService1();

this.Text =
«Рьнок
Forex»;

label1.Text
= Forex.Рекомендация();

}

}

}

Как видно из
программного кода, при обработке события
загрузки формы соз­даем экземпляр
удаленного класса Web-службы,
затем обращаемся к его методу Рекомендация
и копируем получаемую строку в метку
label1.
Фрагмент работы программы приведен на
рис. 15.12.

Рис. 15.12.
Результат работы клиентского приложения

Убедиться в
работоспособности программы можно,
запустив соответствующее решение в
папке WebKлиентForex.

Пример 116.
Клиентское
Web-приложение,
потребляющее сервис
Web-службы
«Морфер»

Создадим клиентское
Web-приложение
не для Web-службы,
написанной нами, а для удаленного
Web-сервиса.
Различных готовых Web-служб
много, их можно посмот­реть, протестировать
на сайтах http://uddi.xml.org/,
http://www.xmethods.org/,
http://www.webservicelist.com/
и др. Выберем одну из русскоязычных
Web-служб,
а именно Web-службу
склонения существительных «Морфер»,
ее адрес в Сети сле­дующий:
http://www.morpher.ru/WebServices/Morpher.asmx.
Наберем этот URL
в адресной строке браузера и получим
(рис. 15.13) операции (методы), поддерживае­мые
Web-службой
Morpher.

Эта Web-служба
предназначена для автоматизированной
обработки текстов на русском языке. В
частности метод GetAll5
Web-службы
(см. рис. 15.13) обеспечи­вает склонение
слов и словосочетаний на русском языке.
На вход функции (метода) GetAll5
данной Web-службы
подаем слово в именительном падеже,
функция воз­вращает массив строк, в
которых записано это слово в различных
пяти падежах: родительном, дательном,
винительном, творительном и предложном.

Для испытания этой
Web-службы
запустим Visual
Studio
2010
, выберем
шаблон Empty
ASP.NET
Web
Application
С#.
В поле
Name
укажем имя проекта WebKлиентMorpher.
К текущему проекту добавим Web-форму.
Для этого в пункте меню Project
выберем
команду Add
New
Item
и в появившемся окне дважды щелкнем на
шаблоне Web
Form.
В конструкторе формы из панели элементов
Toolbox
перенесем текстовое поле TextBox
и кнопку Button.
Далее, чтобы добавить ссылку на уда­ленный
класс, выберем в пункте меню Project
(или в контекстном меню окна Solu­tion
Explorer)
команду Add
Service
Reference,
это приведет к появлению одноименного
диалогового окна. В этом окне нажмем
кнопку Advanced,
а в следующем окне кнопку Add
Web
Reference.
Далее в поле URL
введем ссылку на Web-службу:
http://www.morpher.ru/WebServices/Morpher.asmx

Рис. 15.13.
Методы, поддерживаемые Web-службой
Morpher

При этом кнопка
Add
Reference
станет доступной, а после щелчка на ней
в окне Solution
Explorer
появится ссылка на удаленный класс:
ru.morpher.www.
Теперь мы можем использовать эту ссылку
в нашем программном коде (листинг 15.9).

Листинг 15.9.
Клиентское
Web-приложение,
потребляющее сервис
Web-службы
«Морфер»

//Клиентское
Web-приложение,
потребляющее сервис Web-службы
склонения существительных «Морфер».

//На вход метода
Web-службы
подаем слово на русском языке, на выходе
получаем это слово в различных пяти
падежах

using
System;

using
System.Web.Ul.WebControls;

//
Другие
директивы using
удалены, поскольку они не используются
в данной программе

namespace
WebKлиентMorpher

{

public
partial class WebForm1: System.Web.UI.Page

{

protected void
Page_Load(object sender, EventArgs e)

{

Button1.Text
= «Просклонять»;

TextBox1.TextMode
= TextBoxMode.MultiLine;

}

protected
void Button1_Click(object sender, EventArgs e)

{ // Создаем
клиентское приложение Web-службы:

//
http://www.morpher.ru/WebServices/Morpher.asmx

// Создаем экземпляр
удаленного класса:

var
Склонение
= new ru.morpher.www.Morpher();

string[]
Падежи = Склонение.GetAll5(«Зиборов
Виктор Владимирович»);

Падежи[4] = «О »
+ Падежи[4];

// Перевод каретки
vbCrLf
в конце каждого склонения:

foreach
(string С
in Падежи)

TextBox1.Text
= TextBox1.Text + С
+ «rn»;

}

}

}

Как видно из текста
программы, при обработке события «щелчок
на кнопке» Просклонять
создаем экземпляр удаленного класса
Склонение
и далее используем метод GetAll5
класса для получения возможных склонений.
Метод GetAll5
возвращает массив строк с пятью
склонениями. Цикл foreach
обеспечивает символ конца строки «rn«
в конце каждой строки текстового поля.

Фрагмент работы
программы представлен на рис. 15.14.

Рис. 15.14.
Склонение слов обеспечивает Web-сервис

Убедиться в
работоспособности программы можно,
запустив соответствующий файл решения
в папке WebКлиентМоrрhег.

Пример 117. Получение
данных от
Web-службы
Центрального банка РФ
Web-приложением

Центральный банк
Российской Федерации (ЦБРФ)
предоставляет Web-службу
для получения ежедневных экономических
данных (курсы валют, учетные цены
драгоценных металлов и проч.). Сервис
данной Web-службы
можно получать по адресу:
http://www.cbr.ru/scripts/Root.asp?Prtid=DWS.
Поставим задачу создания клиентского
Web-приложения
для получения ежедневных курсов валют.
Такой сервис предлагается на сайте
Центрального банка Российской Федерации
по адре­су:
http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx.

Мы воспользуемся
функцией (методом) GetSeidCursOnDate
данной Web-службы,
на вход которой подают дату, а на выходе
функции получают ежедневные курсы валют
в виде DataSet
(табличные
данные).

Для решения этой
задачи запустим Visual
Studio
2010
, выберем
шаблон Empty
ASP.NET
Web
Application
С#.
В поле
Name
зададим имя WebKлиeнтPoccия.
К текущему проекту добавим Web-форму.
Для этого в пункте меню Project
выбе­рем команду Add
New
Item
и в появившемся окне дважды щелкнем на
шаблоне Web
Form.
В конструкторе формы перетащим в форму
командную кнопку Button
и элемент сетки данных GridView,
поскольку намереваемся с его помощью
ото­бражать табличные данные типа
DataSet.
Далее в пункте меню Project
выберем команду Add
Web
Reference
и в появившемся окне в поле URL
введем адрес Web-сервиса:
http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx

При этом станет
доступной кнопка Add
Reference.
Щелкнем на этой кнопке, росле этого в
окне Solution
Explorer
появится новая папка Web
References
со cсылкой
на удаленный класс: ru.cbr.www.
Теперь в нашем программном коде мы можем
воспользоваться этим удаленным классом
(листинг 15.10).

Листинг 15.10.
Получение данных от
Web-службы
Центрального банка РФ
Web-приложением

// Клиентское
Web-приложение,
потребляющее сервис Web-службы
Центрального банка России для получения
// ежедневных курсов валют. На выходе
приложения получаем таблицу курсов
валют

using
System;

//
Другие
директивы using
удалены, поскольку они не используются
в данной программе

namespace
WebКлиентРоссия

{

public
partial class WebForm1: System.Web.UI.Page

{

protected void
Page_Load(object sender, EventArgs e)

{

Button1.Focus();

}

protected
void Button1_Click(object sender, EventArgs e)

{ // Создаем
клиентское приложение Web-службы:

//
http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx

// Создаем экземпляр
удаленного класса:

var Валюта
= new ru.cbr.www.DailyInfo();

System.DateTime
Дата
= System.DateTime.Now;

//
Получение
ежедневных
курсов
валют:

System.Data.DataSet
НаборДанных
= Валюта.GetSeldCursOnDate(Дата)

// Содержимое
DataSet
в виде строки XML
для отладки:

string
СтрокаХМL
= НаборДанных.GetXml();

// Указываем источник
данных для сетки данных:

GridView1.DataSource
= НаборДанных;

GridViewl.DataBind();

}

}

}

Рис. 15.15.
Ежедневные курсы валют Web-сервиса
ЦБРФ

Как и при создании
предыдущих клиентов Web-служб,
при обработке события «щелчок на
кнопке» создаем экземпляр удаленного
класса, в данном случае мы на­звали
его Валюта.
На вход его метода GetSeldCursOnDate
подаем текущую дату. Этот метод возвращает
данные типа DataSet,
которые мы указываем в качестве источника
данных DataSource
для элемента управления «сетка данных»
GridView1.
Фрагмент работы программы показан на
рис. 15.15.

Убедиться в
работоспособности программы можно,
открыв решение в папке WebКлиентРоссия.
В заключение отмечу, что подобную
Web-службу
имеют также банки других стран, например
Web-служба
Национального банка Республики Бе­ларусь
расположена по адресу:
http://www.nbrb.by/Services/ExRates.asmx.

Пример 118. Получение
данных от
Web-службы
Национального банка Республики Беларусь
Windows-приложением

Web-служба,
предоставляющая текущие курсы валют,
есть и у Национального банка Республики
Беларусь. На примере потребления сервиса
Web-службы
этого банка создадим Windows-приложение
(настольное приложение), получающее
справочную информацию о текущих курсах
валют в онлайновом режиме.

Для решения этой
задачи запустим Visual
Studio
2010
, выберем
шаблон Windows
Forms
Application
С#
. В поле
Name
зададим имя WebKлиeнтБeлapycь.
В конструк­торе формы добавим кнопку
Button
и сетку данных DataGridView.
Мы намереваемся
в элемент
управления DataGridView
вывести данные с курсами валют. Элемент
управления DataGridView
в Windows-приложении
играет ту же роль, что и GridView
в Web-приложении.
Методы этих классов похожи, хотя есть
и отличия.

Следующим этапом
разработки клиентского приложения
является добавление ссылки на удаленный
класс искомой Web-службы.
Для этого выберем в пункте меню Project
команду Add
Service
Reference,
это приведет к появлению одноименного
диалогового окна. В этом окне нажмем
кнопку Advanced,
а затем кнопку Add
Web
Reference.
В появившемся диалоговом окне Add
Web
Reference
в поле URL
введем адрес Web-службы:
http://www.nbrb.by/Services/ExRates.asmx
и нажмем кнопку Go.
В окне ниже увидим список доступных
методов данного сервиса, после этого
щелкнем на кнопке Add
Reference.
При этом в окне Solution
Explorer
по­явится ссылка на удаленный класс:
by.nbrb.www.
Теперь мы можем использовать эту ссылку
в программном коде (листинг 15.11).

Листинг 15.11.
Получение данных от
Web-службы
Национального банка Республики Беларусь
Windows-приложением

// Клиентское
Windows-приложение,
потребляющее сервис Web-службы
Национального банка Республики Беларусь

// для получения
ежедневных курсов валют. На выходе
приложения получаем таблицу курсов
валют

using
System;

using
System.Data;

using
System.
Windows
. Forms;

// Другие директивы
using
удалены, поскольку они не используются
в данной программе

namespace
WebKлиeнтБeлapycь

{

public
partial class Form1 : Form

{

public
Form1()

{

InitializeComponent();

}

private
void button1_Click(object sender, EventArgs e)

{ // Создаем
клиентское приложение Web-службы:

//
http://www.nbrb.by/Services/ExRates.asmx.

// Создаем экземпляр
удаленного класса:

var Валюта
= new by.nbrb.www.ExRates
();

//А этот адрес я
нашел на сайте:

//
http://ivbeg.bestpersons.ru/feed/post3279396/

// Здесь есть ссылки
на другие русскоязычные сервисы

System.DateTime
Дата
= System.DateTime.Now;

// На вход метода
ExRatesDaily
подаем текущую дату:

DataSet
НаборДанных = Валюта.ExRatesDaily(Дата);

// Метод ExRatesDaily
возвращает курсы валют в виде DataSet.

// Содержимое
DataSet
в виде строки XML
для отладки:

string
СтрокаХМL
= НаборДанных.GetXml();

// Указываем источник
данных для сетки данных:

dataGridView1.DataSource
= НаборДанных;

// Указываем имя
таблицы в наборе данных:

dataGridView1.DataMember
= «DailyExRatesOnDate»;

}

}

}

В программном коде
выполняем обычные уже в данной главе
действия. При обработке события «щелчок
на кнопке» button1
создаем экземпляр удаленного класса,
а затем обращаемся к методу класса
ExRates,
подавая на вход метода текущую дату.
Этот метод возвращает таблицу курсов
валют в формате DataSet.
Эту таблицу, называемую DailyExRatesOnDate,
указываем в качестве источника данных
DataSource
для сетки данных dataGridView1,
которую мы используем для визуализации
таблицы курсов валют.

Фрагмент работы
программы представлен на рис. 15.16.

Рис. 15.16.
Ежедневные курсы валют Web-службы
НБРБ

Убедиться в
работоспособности программы можно,
открыв решение в папке WebКлиентБеларусь.
Такое же Web-приложение,
решающее ту же задачу вывода на сетку
данных курсов валют, можно тестировать,
запустив соответствующий файл решения
в папке WebКлиентБеларусьWeb.

Фреймворки и библиотеки для кроссплатформенной разработки десктопных программ

Время прочтения
6 мин

Просмотры 29K

В этой статье я расскажу вам о некоторых самых популярных фреймворках, которые помогут вам при разработке программ для компьютеров под управлением Windows/MacOS/Linux. Если вы опытный программист, то вряд ли найдете в этой статье что-то новое для себя. Она скорее для новичков, которые ищут простое решение своей проблемы — быстрое написание хорошей (на сколько это возможно) кроссплатформенной программы.

Что такое кроссплатформенная разработка?

Что вообще из себя представляет кроссплатформенная разработка? Если вам нужно, чтобы ваше приложение работало сразу на нескольких операционных системах с минимальными затратами человеко-ресурса, то скорее всего вы прибегнете именно к этому. Вы разрабатываете одну программу, пишете один код, а он запускается на всех поддерживаемых платформах. Удобно! Но стоит различать кроссплатформенность и нативность.

Если вкратце, то кроссплатформенность — это способность программного обеспечения работать с несколькими аппаратными платформами или операционными системами. Нативные программы в свою очередь пишутся для работы на определенной аппаратной или программной платформе. Из этого можно сделать вывод: если ваша программа будет работать с железом, то скорее всего даже в кроссплатформенной программе вам придется прописывать нативный функционал для конкретной платформы.

В чем же преимущество кроссплатформенной разработки? Во-первых, вам нужно задействовать меньше людей (не нужно содержать DotNet разработчика, Swift/objective C разработчика и всех к ним прилагающихся), во вторых вы охватываете большее количество устройств -> больше людей смогут пользоваться вашей программой.

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

Electron JS

Недавно я написал статью о том, как на Electron JS написать «Hello World». В комментариях поднялась дискуссия о «за и против» этой технологии. До сих пор очень многие разработчики ведут споры относительно того, стоит ли использовать Electron в своих проектах или нет. Electron JS — это JavaScript фреймворк, позволяющий вам написать полноценную программу используя Web Технологии — HTML & CSS, JS. Electron JS представляет собой движок Chromium в котором и исполняется весь ваш код. У Electron’a есть один, но достаточно серьезный недостаток — большое потребление памяти, как физической, так и оперативной. Всем давно известно, какой прожорливый Chrome, а мы на него еще своего кода хотим навесить. Но если посмотреть с другой стороны: сегодня многие популярные приложения написаны на Electron’e — Slack, Skype, Discord, VSCode, Atom, Postman, Insomnia и т.д. А с учетом непрекращающегося роста мощности компьютеров все реже приходится слышать от пользователей, что «ваш хром съел всю мою память». Высокое потребление памяти не будет играть большой роли если продукт будет хорош в своей сфере, будет грамотно написан код и распределены процессы

Официальный сайт

Плюсы

  • Использование наработок из Web

  • Просто найти (или «воспитать») специалиста

  • Качественная (и русифицированная) документация

  • Поддержка сообщества и GitHub

Минусы

  • Высокое потребление памяти (физическая и ОЗУ)

  • Легко написать плохой код

  • Плохая нативность


NW.JS

Так же как и Electron, NW.JS позволяет вам создавать кроссплатформенные приложения с использованием Web технологий. Сегодня NW.JS Спонсируется компанией Intel, и разрабатывается сообществом. NW.JS не может похвастаться таким же богатым списком проектов как Electron, но это все равно очень хороший фреймворк для создания кроссплатформенных приложений. Так же как и Electron, NW.JS тащит за собой движок Chromium и все вытекающие из него проблемы. NW.JS очень похож по своему принципу на Electron, но все-же различия есть. Могу порекомендовать вам эту статью для ознакомления.

Плюсы

  • Использование наработок из Web

  • Просто найти (или «воспитать») специалиста

  • Качественная (и русифицированная) документация

  • Поддержка сообщества и GitHub

Минусы

  • Высокое потребление памяти (физическая и ОЗУ)

  • Легко написать плохой код

  • Плохая нативность


Qt/QML

Qt — очень мощный набор инструментов для создания кроссплатформенных приложений на языке С++ и Python (а также Ruby, PHP, C# и др. но они в отличии поддерживаются сообществом). Qt уже достаточно старый фреймворк, но он продолжает активно развиваться и на нем написаны такие программы как: 2ГИС для Android, Kaspersky Internet Security, Virtual Box, Skype, VLC Media Player, Opera и другие. Известное многим линукс-юзерам окружение рабочего стола KDE тоже написано с использованием Qt. Qt имеет среду разработки — Qt Creator, которая включает в себя Qt Designer с помощью которого можно создавать графический интерфейс. Визуальное создание интерфейса позволяет легко и просто создавать интерфейс, перетаскивая различные виджеты (выпадающие списки, кнопки, переключатели) на форму. Qt имеет обширную документацию, активную поддержку сообщества и множество других преимуществ.

Официальный сайт

Плюсы

  • Визуальный редактор интерфейса

  • Огромное количество модулей в составе фреймворка

  • Поддержка большого количества языков программирования (официально только Python и C++, остальные поддерживаются сообществом) -> хорошая нативность при грамотном коде

  • Низкий порог вхождения

Минусы

  • Большой вес приложения

  • Высокая стоимость коммерческой лицензии

GTK

GTK на ряду с Qt является одной из самых популярных библиотек для кроссплатформенной разработки элементов интерфейса для X Window Systems. Разработан Gnome Foundation и GNU. С использованием этой библиотеки написаны многие окружения рабочего стола и оконные менеджеры (Gnome, xfce MATE, Cinnamon, AfterStep, Marco и многие другие), и программы, например: Chromium, FireFox, MonoDevelop, Gimp и другие. GTK написан на языке C, но существуют обертки для многих языков программирование (C, C++, Python, Java и другие). Gtk имеет конструктор для визуальной разработки интерфейсов — Glade

Официальный сайт

Плюсы

  • Поддержка большого количества языков

  • Большое и активное сообщество

  • Много популярных проектов и примеров

  • Визуальный редактор

Минусы

  • Критичных минусов обнаружено не было (если у вас есть «проблемы» с Gtk — можете написать об этом в комментарии)


Avalonia

Достаточно молодой и активно развивающийся фреймворк для кроссплатформенной разработки, разработанный Стивеном Кирком и поддерживаемый .NET Foundation и сообществом. Avalonia позволяет создавать интерфейсы на основе XAML. Сама Avalonia основана на WPF/UWP. Код пишется на языке C#. Благодаря XAML Avalonia позволяет создавать гибкие и стилизованные интерфейсы. Имеет хорошую документацию, хоть и не большое, но очень приветливое рускоязычное сообщество.

Официальный сайт

Плюсы

  • Хорошая нативность (+поддержка системных декораций)

  • Активное и приветливое сообщество, как русскоязычное, так и англоязычное (чаты, форумы)

  • Заимствование и сходство с WPF (Если вы работали с WPF вам будет легко разобраться с Авалонией, и при возникновении трудностей, код написанный для WPF скорее всего заработает у вас на авалонии)

  • Стили (стили в Авалонии имеют сходство с CSS, что упрощает написание этих самых стилей)

Минусы

  • Маленькое сообщество (хоть и приветливое, но в силу молодости проекта, еще очень немногочисленное сообщество разработчиков)

  • Маленькое количество проектов (вы можете застрять с тем, что никто не решал такую задачу, которая встала перед вами)


WxWidgets/WxPython

wxWidgets (ранее известная как wxWindows) — это кросс-платформенная библиотека инструментов с открытым исходным кодом для разработки кроссплатформенных на уровне исходного кода приложений, в частности для построения графического интерфейса пользователя (GUI).Она разработана не только для того, чтобы создавать GUI. Она также имеет набор классов для работы с графическими изображениями, HTML, XML документами, архивами, файловыми системами, процессами, подсистемами печати, мультимедиа, сетями, классы для организации многопоточности, отладки, отправки дампов и множество других инструментов. Имеет обертку для языка Python -WxPython. С использованием этой библиотеки написанны такие программы как: FileZilla, AudaCity, BitTorrent и другие.

Официальный сайт

Минусы

  • Мало современной информации в интернете

  • Не очень активное сообщество

Плюсы

  • Простое написание интерфесов

  • поддержка разных языков программирования


Tkinter

Tkinter — кросс-платформенная событийно-ориентированная графическая библиотека разработанная Гвидо ван Россумом (создатель языка Python), позволяет написать вам простой, но функциональный интерфейс для вашего проекта на Python. По сути Tkinter представляет из себя пакет для Python, предназначенный для работы с библиотекой Tk. Библиотека Tk содержит компоненты графического интерфейса пользователя (graphical user interface – GUI), написанные на языке программирования Tcl и существуют реализации для разных языков (Tkinter приведен для примера).

Официальный сайт

Минусы

  • Примитивные интерфейсы

  • Для одного языка (но непосредственно Tk существует для разных языков)

Плюсы

  • Простое написание интерфесов

  • Позволяет вам быстро написать простой GUI для вашей Python программы


Итог

В этой статье я рассказал далеко не о всех фреймворках, но о самых популярных, активно поддерживаемых и подходящих для абсолютно разных проектов и задач. Призываю вас в комментариях рассказать о своем опыте работы с различными фреймворками (но только с теми, что есть в статье), о том какие плюсы и минусы вы видите в кроссплатформенной разработке?

Какие технологии входят в состав .NET Framework?

После изучения основ функционирования платформы Microsoft .NET Framework мы рассмотрим основные типы приложений, которые можно разрабатывать на базе .NET Framework. Несмотря на то, что курс посвящен разработке веб-приложений, современному специалисту необходимо быть в курсе того, какие еще виды приложений можно разрабатывать в рамках платформы.

Поскольку .NET Framework – это мощнейшая платформа для разработки приложений, она дает возможность разрабатывать приложения совершенно различного типа. При этом, важным достоинством .NET Framework является то, что функциональность библиотеки базовых классов доступна во всех типах приложений. Это означает, что разработав библиотеку для .NET Framework ее можно одинаково удобно использовать как в настольных приложениях, так и в веб-приложениях, в веб-сервисах и т.д. (см. далее).

В целом, все приложения можно разделить на несколько типов:

  • настольные приложения (приложения, которые запускаются на локальном компьютере пользователя);
  • веб-приложения (приложения, которые работают в рамках веб-сервера и доступны пользователю через браузер в рамках протокола HTTP/HTTPS);
  • веб-приложения с богатым пользовательским интерфейсом (приложения, которые доставляются пользователю по протоколу HTTP/HTTPS в рамках браузера и исполняются на клиентской стороне);
  • веб-сервисы (программные код, который выполняется на стороне сервера и может быть вызван с клиента для получения каких-либо данных или выполнения операции);
  • мобильные приложения (приложения, которые выполняются на мобильных устройствах).

Для каждого из приведенных типов приложений в составе .NET Framework существуют соответствующие технологии, которые позволяют создавать приложения. Кроме того, .NET Framework содержит общие библиотеки, которые можно использовать в разных типах приложений. К таким библиотекам можно отнести библиотеки:

  • для работы со строками;
  • для работы с математическими функциями;
  • для работы с графикой;
  • доступа к данным;
  • для работы с файлами и другими операциями ввода-вывода;
  • для выполнения криптографических операций;
  • для организации синхронизации данных между источниками данных;
  • и огромное количество других библиотек.

Давайте обзорно рассмотрим каждый тип приложений. Как уже было отмечено выше, для каждого из типов приложений в составе платформы .NET Framework существуют специальные шаблоны проектов.

Настольные приложения отличаются тем, что запускаются непосредственно на компьютере пользователя. Это – наиболее распространенный тип приложений. Настольные приложения обычно имеют доступ к ресурсам компьютера пользователя, таким как жесткий диск, звуковое оборудование и т.д. К достоинствам такого типа приложений можно отнести интерактивность пользовательского интерфейса и возможность работы приложения вне зависимости от подключения к сети Интернет и другим ресурсам. Однако, для работы таких приложений их необходимо устанавливать на локальный компьютер.

Настольные приложения можно разделить на три вида – оконные приложения, консольные приложения и службы Windows. Оконные приложения обладают графическим интерфейсом. Консольные приложения обычно имеют вид командной строки, а интерфейс таких приложений является текстовым, а не графическим. Наконец, службы Windows вовсе не имеют пользовательского интерфейса, а работают в фоновом режиме.

Для построения приложений с оконным графическим интерфейсом в рамках платформы .NET Framework могут использоваться технологии Windows Forms (доступно начиная с .NET Framework 1.0) и Windows Presentation Foundation (доступно начиная с .NET Framework 3.0). Последняя технология является более новой и перспективной.

На рисунке ниже показано окно создания проекта на .NET Framework. Как видно, доступны все описанные выше типы проектов.

Веб-приложения отличаются от настольных тем, что работают удаленно на веб-сервере. Пользователь использует возможности веб-приложений посредством браузера и протокола HTTP/HTTPS. Преимуществом этого типа приложений является то, что нет никакой необходимости устанавливать их на компьютер каждого пользователя – приложение нужно установить на веб-сервер, после чего оно становится доступным для всех пользователей. Однако, недостатком таких приложений является ограниченные возможности построения пользовательских интерфейсов. Это происходит из-за того, что пользовательский интерфейс строится на основе форматов HTML, CSS и JavaScript, которые являются достаточно ограниченными. Поэтому функциональность пользовательских интерфейсов обычно является достаточно ограниченной.

Для создания веб-приложений в рамках платформы .NET Framework используется платформа Microsoft ASP.NET. Это – универсальный и мощный механизм, который позволяет строить высокоэффективные и мощные веб-приложения. Далее этот курс будет посвящен изучению платформы Microsoft ASP.NET и сопутствующим ей технологиям.

На рисунке ниже показано окно создания проекта веб-приложения на .NET Framework

Поскольку веб-приложения обладают серьезным недостатком – ограниченными возможностями по формированию интерфейса пользователя – появился новый тип приложений, который называется богатые интернет-приложения или интернет-приложения с богатым пользовательским интерфейсом (Rich Internet Applications, RIA). Идеология этих приложений состоит в том, что в браузер интегрируется специальное дополнение (plugin), которое способно отображать дополнительный тип содержимого. После этого, когда пользователь отрывает страницу в браузере, на сторону клиента передается программный код, который работает в рамках этого дополнения. Поскольку в этом случае весь код отрабатывает на стороне клиента, у разработчиков появляется больше возможностей по формированию пользовательских интерфейсов.

Для построения подобного типа приложений существует несколько технологий. Одна из наиболее известных технологий – это технология Adobe Flash. Кроме того, существует также технология Microsoft Silverlight, которая позволяет наиболее удобно интегрироваться с остальными технологиями в рамках .NET Framework.

Зачастую возможности по построению приложений RIA комбинируют с построением обычных веб-приложений.

Другим типом приложений являются сервисы (или веб-сервисы). Сервисы – это некий программный код, который расположен на сервере и запускается по запросу от пользователя. Например, можно создать набор сервисов по работе с данными из базы данных, хранящейся на сервере. Обычно, другие типы приложений (настольные приложения, веб-приложения и т.д.) обращаются к сервисам с целью выполнить какую-либо операцию на сервере или получить с сервера данные.

В рамках платформы .NET Framework существует ряд технологий, которые позволяют создавать сервисы. Наиболее старой технологией является ASP.NET Web Services. Она позволяет создавать простые веб-сервисы, которые работают по протоколу HTTP/HTTPS. Дальнейшим развитием стала технология Windows Communication Foundation (WCF). Эта платформа является наиболее мощным и гибким инструментом, которая поддерживает различные типы каналов (HTTP, TCP, именованные каналы и др.) и существенно расширяет возможности разработчика по созданию сервисов.

Также существуют дополнительные ответвления проекта WCF – это WCF Syndication Extensions (WCF REST) и ADO.NET Data Services. Эти проекты разработаны для того, чтобы можно было удобно строить сервисы доступа к данным.

Наконец, последним типом приложений являются мобильные приложения. Мобильные приложения работают в рамках мобильных устройств на базе операционной системы Windows Mobile. Для мобильных устройств также существует реализация подмножества возможностей .NET Framework, которая называется .NET Compact Framework.

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

В этой лекции мы рассмотрели возможности платформы .NET Framework для создания различных типов приложений. Видно, что платформа содержит набор инструментов для создания приложений практически для любой ситуации. Возможность создания всевозможных типов приложений и делает .NET Framework очень мощной платформой.

Краткие итоги

Платформа .NET Framework является мощным инструментом для разработчика, поскольку содержит большое обилие технологий для создания приложений. Основные типы приложений, которые можно создавать на базе .NET Framework – настольные приложения, веб-приложения, интернет-приложения с богатым пользовательским интрефейсом, веб-сервисы, мобильные приложения и др. Для каждого типа приложений .NET Framework содержит набор инструментов и технологий.

Контрольные вопросы

  • Как называется промежуточный язык, в который компилируется приложение .NET?
  • Чем MSIL отличается от традиционного языка ассемблера?
  • Для чего необходимо наличие промежуточного кода на языке MSIL?
  • Что такое CLR?
  • Для чего необходим компилятор JIT?
  • Каким образом можно скомпилировать приложение из MSIL кода в машинный код перед запуском приложения?
  • Какие типы приложений можно строить на платформе .NET Framework?
  • Какие технологии включает в себя .NET Framework?

Содержание:

Введение

Миллионы людей каждый день выходят в сеть Интернет, чтобы почитать новости, пообщаться с друзьями, получить полезную информацию, совершить покупку или оплатить счет. Для обеспечения подобными услугами как правило в разрабатываемых приложениях применяется архитектура клиент-сервер.

Технология клиент-сервер по праву считается одним из «китов», на которых держится современный мир компьютерных сетей. Но те задачи, для решения которых она была разработана, постепенно уходят в прошлое, и на сцену выходят новые задачи и технологии, требующие переосмысления принципов клиент-серверных систем. Одна из таких технологий — World Wide Web.

Использование технологии гипертекстовых документов для построения внутренней информационной инфраструктуры компании стимулировало бурное развитие всевозможных систем типа клиент-сервер. Некоторые пытаются противопоставить Web-технологию архитектуре клиент-сервер, однако это заблуждение, поскольку на самом деле Web является развитием данной архитектуры. Можно сказать, что система Web имеет архитектуру клиент-серверы, т. е. с помощью одного клиента можно подключиться ко многим серверам. Web-браузер, который обеспечивает удобный интерфейс с пользователем для доступа к информации, — это лишь вершина айсберга, самый верхний уровень системы Web. Кроме интерфейса любая информационная система должна иметь уровни обработки данных и их хранения. У разработчиков интрасетей часто возникает проблема правильного согласования работы Web с другими элементами системы, например базами данных. Одним из перспективных способов решения этой проблемы являются многоуровневые архитектуры клиент-сервер.

Актуальность темы. Разработка клиентских приложений, удовлетворяющих требованиям пользователей, является одной из важнейших задач при создании программного обеспечения. Обшей тенденцией является усложнение пользовательских интерфейсов. Это связанно как с увеличением функциональности программ, так и с различными и часто изменяющимися условиями их эксплуатации. В результате на пользовательский интерфейс уходит существенная часть общих затрат на разработку программного средства. Поэтому исследования в области человеко-машинных интерфейсов, направленные на уменьшение трудоемкости разработки и сопровождения являются актуальными. Значительный вклад в решение этой проблемы внесли российские и зарубежные ученые: Гаврилова Т.А., Соснин П.И., Хорошевский В.Ф.. Myers В.A., Puerta A.R., Szekely Р.А. и другие.

Все вышесказанное определяет актуальность исследований в области средств разработки клиентских приложений.

Таким образом, целью данной работы является раскрытие теоретических аспектов рассматриваемой темы.

При выполнении курсовой работы были поставлены следующие задачи:

  1. рассмотреть основные принципы архитектуры клиент-сервер;
  2. рассмотреть API популярных операционных систем для создания клиентских приложений;
  3. рассмотреть средства создания настольных клиентских приложений;
  4. рассмотреть средства создания клиентских приложений для веб-ресурсов;
  5. рассмотреть веб-фреймворки для создания клиентских приложений;
  6. рассмотреть основные интегрированные системы разработки клиентских приложений.

Целью данной работы является исследование средств разработки клиентских программ.

Объектом исследования является архитектура клиент-сервер.

Предметом исследования в настоящей работе являются средства разработки клиентских программ.

Методологической и теоретической базой исследования служат существующие средства разработки клиентских программ.

Глава 1. Обзор архитектуры клиентских приложений

1.1 Архитектура клиент-сервер

Появление архитектуры клиент-сервер, как и многих других новых компьютерных технологий, сопровождалось рождением новой терминологии.

  • Прикладной программный интерфейс (Application Programming Interface, API). Набор функций и подпрограмм, обеспечивающих взаимодействие клиентов и серверов
  • Клиент. Объект, запрашивающий информацию но сети. Как правило, это персональный компьютер или рабочая станция, запрашивающая информацию у сервера
  • Промежуточное программное обеспечение. Набор драйверов, прикладных программных интерфейсов и прочего программного обеспечения, позволяющего улучшить взаимодействие между клиентским приложением и сервером
  • Реляционная база данных. База данных, в которой доступ к информации ограничен выбором строк, удовлетворяющих определенным критериям поиска
  • Сервер. Компьютер (как правило, высокопроизводительная рабочая станция, мини-компьютер или мэйнфрейм), хранящий информацию, с которой работают сетевые клиенты
  • Язык структурированных запросов (Structured Query Language, SQL). Разработанный корпорацией IBM и стандартизованный институтом ANSI язык для создания, управления и изменения баз данных

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

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

В этой модели обработка данных приложением распределена (не обязательно поровну) между клиентом и сервером. Обработка данных инициируется и частично управляется клиентом, но не в режиме «ведущий-ведомый», а, скорее, в режиме сотрудничества [3].

Модель взаимодействия между одновременно выполняемыми программными процессами. Клиентские процессы посылают запросы серверному процессу, посылающему обратно результаты этих запросов. Как предполагает название, серверные процессы предоставляют услуги своим клиентам, как правило, выполняя специфическую обработку, которую могут выполнить только они. Клиентский процесс, освобожденный от выполнения сложной обработки транзакции, может выполнять другую полезную работу. Взаимодействие между клиентским и серверным процессами представляет собой совместный транзакционный обмен, в котором активность исходит от клиента, а сервер реагирует на эту активность [5].

Любое приложение, в котором инициатор действия находится в одной системе, а исполнитель действия — в другой. Кроме того, в большинстве приложений клиент-сервер один сервер обслуживает запросы нескольких клиентов.

Как предполагает термин, окружение клиент-сервер состоит из клиентов и серверов. Клиентские машины, как правило, представляют собой однопользовательские персональные компьютеры или рабочие станции, предоставляющие конечным пользователям дружественный интерфейс. Клиентская станция обычно имеет наиболее удобный графический интерфейс пользователя, предполагающий наличие окон и мыши. Наиболее известные примеры подобных интерфейсов — интерфейсы операционных систем Microsoft Windows и Macintosh. Клиентские приложения предполагают простоту использования и знакомые инструментальные средства, например, электронные таблицы.

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

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

Есть несколько характеристик, отличающих вычислительную модель клиент-сервер от обычных схем распределенных вычислений.

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

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

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

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

Эта тенденция просматривается как в малом, так и в крупном бизнесе и затрагивает управленцев среднего звена, а также конторских служащих. Архитектура клиент-сервер предоставляет средство автоматизации задач и устранения барьеров для информации, что позволяет компаниям удалять лишние управленческие звенья и увеличивать производительность, не раздувая штаты.

Другой тенденцией, иллюстрирующей эффективность архитектуры клиент-сервер, является так называемое движение внутреннего рынка. Это движение затрагивает, в первую очередь, крупный бизнес, пытающийся сочетать предпринимательское рвение с корпоративной мощью, чтобы получить лучшее и от того, и от другого: экономию, обусловленную крупными масштабами большого бизнеса, и гибкость малого бизнеса. В эпоху быстрых технологических и рыночных изменений многие крупные компании отказались от традиционной функциональной иерархии, заменив ее набором относительно независимых организационных единиц. Эти организационные единицы должны конкурировать с внешними компаниями. На внутреннем рынке каждая организационная единица функционирует как независимая компания. Каждая организационная единица сама решает, что и у кого ей покупать (независимо от того, является поставщик подразделением той же корпорации или же внешней компанией). Даже такие традиционные непроизводительные подразделения, как бухгалтерия, информационные системы и юридический отдел, должны продавать свои услуги другим подразделениям и конкурировать с внешними поставщиками.

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

Таблица 1.

Достоинства и недостатки архитектуры клиент-сервер

Системная характеристика

Значение

Достоинства

Сеть небольших мощных машин

Если одна машина выйдет из строя, ваша компания все равно сможет продолжать работу

Мощные объединения компьютеров

Система предоставляет мощность, позволяющую выполнять работу без монополизации ресурсов. У конечных пользователей достаточно мощностей для локальной работы

Некоторые рабочие станции столь же мощны, как мэйнфреймы, но их стоимость на порядок ниже

Предоставляя вычислительные мощности за меньшие деньги, система позволяет вам тратить сэкономленные средства на другие приобретения или на увеличение ваших доходов

Открытые системы

Аппаратуру, программы и услуги можно приобретать у разных поставщиков

Легкость наращивания системы

Вашу систему нетрудно модернизировать, как только ваши потребности изменятся

Индивидуальная рабочая среда клиента

Вы можете объединять компьютерные платформы, подбирая их под конкретные нужды подразделений и пользователей

Недостатки

Слабая поддержка

Отдельные части системы не всегда корректно работают вместе. Бывает довольно трудно найти причину неисправности

Недостаток инструментальных средств обслуживания

При использовании архитектуры клиент-сервер часто приходится искать инструментальные средства на рынке или разрабатывать их самостоятельно

Необходимость переобучения

Философия программирования для Мае или Windows существенно отличается от философии программирования на языке COBOL или С

1.2 Эволюция архитектуры клиент-сервер

Идея организовать вычислительные ресурсы в соответствии с архитектурой клиент-сервер возникла на уровне рабочих групп и подразделений компаний. Менеджеры отделов обнаружили, что использование централизованных приложений, работающих на мэйнфрейме, не дает им достаточно быстро реагировать на требования бизнеса. Развертывание приложений центральным отделом информационного обслуживания требовало очень много времени, а результаты не всегда соответствовали нуждам подразделений. С развитием персональных компьютеров работники получили возможность хранить и обрабатывать данные прямо на своих рабочих местах, а менеджеры отделов — быстро находить нужные приложения.

Однако в окружении, состоящем исключительно из персональных компьютеров, пользователи при совместной работе сталкивались с определенными трудностями. Даже на уровне одного подразделения компании было необходимо поддерживать базу данных, а также форматы и стандарты их использования. Решение проблем дает архитектура клиент-сервер, развернутая на уровне подразделения. Как правило, подобная архитектура включает одну локальную сеть, несколько персональных компьютеров и один или два сервера.

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

1.3 Классы приложений клиент-сервер

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

Выделяют четыре класса приложений с разными вариантами распределения задач между сервером и клиентом.

  • Обработка данных на базе хоста. Данная схема не является настоящим приложением клиент-сервер, а относится к традиционному окружению мэйнфрейма, когда вся или практически вся обработка данных осуществляется на главной вычислительной машине. Зачастую в подобной вычислительной среде интерфейс пользователя предоставляет примитивный терминал. Но даже если пользователь сидит за персональным компьютером, роль персонального компьютера в этом случае ограничивается эмуляцией терминала.
  • Обработка данных на базе сервера. Простейшим классом конфигурации клиент-сервер является схема, в которой клиент отвечает лишь за предоставление графического интерфейса пользователя, тогда как практически вся обработка данных осуществляется на сервере.
  • Обработка банных па базе клиента. Данная схема представляет сооои другую крайность. Практически вся обработка данных осуществляется на клиенте, за исключением процедур проверки целостности данных и прочей логики, относящейся к обслуживанию базы данных, которые лучше исполнять на сервере. Как правило, наиболее сложные функции для работы с базой данных располагаются на клиентской стороне. На сегодняшний день подобная схема, возможно, является наиболее распространенной реализацией архитектуры клиент-сервер. Она позволяет пользователю работать с приложениями, соответствующими его локальным потребностям.
  • Совместная обработка данных. В данной конфигурации обработка данных оптимизирована таким образом, чтобы использовать сильные стороны как клиента, так и сервера, а также самого факта распределения данных. Подобные конфигурации гораздо сложнее в установке и обслуживании, но в долговременной перспективе они позволяют обеспечить лучшие показатели производительности и эффективности использования сетевых ресурсов, чем другие методы реализации архитектуры клиент-сервер.

Модель «толстого» клиента стала популярной благодаря появлению таких инструментальных средств как PowerBuilder корпорации Powersoft и SQL Windows корпорации Gupta. Данные инструментальные средства рассчитаны на создание приложений уровня подразделения с поддержкой от 25 до 150 пользователей. Главное достоинство модели «толстого» клиента заключается в том, что она максимально опирается на вычислительные возможности настольного компьютера, освобождая сервер от излишней нагрузки по обработке данных и, таким образом, повышая их эффективность и снижая вероятность того, что сервер станет узким местом системы.

Однако у стратегии «толстого» клиента имеются и недостатки. Оснащение настольных компьютеров новыми функциями быстро истощает их вычислительные мощности, заставляя компании проводить модернизацию. Если в работу приложения вовлекаются множество пользователей из разных подразделений, компании приходится устанавливать локальную сеть с высокой пропускной способностью для поддержки огромных объемов данных, передаваемых между «тонкими» серверами и «толстыми» клиентами. Наконец, приложения, распределенные по нескольким десяткам и сотням настольных машин, трудно поддерживать, обновлять и заменять.

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

Вывод по главе

Клиентские приложения являются составной частью приложения архитектуры клиент-сервер, поэтому в первой главе были рассмотрены основные принципы архитектуры клиент-сервер.

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

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

Глава 2. Обзор API для создания клиентских приложений

2.1 Настольные приложения

2.1.1 Создание клиентских приложений в Windows.

Для разработки клиентских приложений для Windows используется совокупность функций для написания ПО, работающих под управлением Microsoft Windows 98, Windows NT или Windows 2000 — Win32 API .

Реализация как МFС, так и Windows Forms основана на вызовах функций Windows API. Эти интерфейсы являются надстройкой над Win32 АPI и разработаны для того чтобы облегчить программирование Windows приложений. МFC и Windоws Fоrms способны повысить производительность работы программистов, но также гораздо менее гибки по сравнению с Win32 API. [10]

После запуска windows-программа находится в состоянии ожидания, она ожидает, когда ей операционная система пошлёт сообщение. Операционная система посылает специально оформленные группы данных, называемых сообщениями. Сообщения бывают разных типов, они взаимодействуют с ОС хаотично, поэтому приложение не может знать, какое сообщение оно получит. Отсюда следует, что логике построения Windows-приложения необходимо обеспечивать корректную и предсказуемую работу при поступлении сообщений любого типа. Здесь можно провести некоторую ана­логию между механизмом сообщений Windows и механизмом прерываний в архитектуре IBM PC. Для обеспечения правильной работы программы программисту необходимо знать правила использования функций интерфейса (API) ОС. Windows поддерживает два типа приложений.

  1. Оконное приложение создаётся с помощью функций API, которые составляют графический интерфейс пользователя (Graphic User Interface, GUI). Оконное приложение — это программа, в которой вывод на терминал производится в графическом виде. В результате работы оконных приложений на экране отображаются специальные объекты — окна. Затем, приложения должны поддерживать эти окна их в актуальных состояниях.
  2. Консольное приложение — это программа, которая работает в текстовом режиме. Консольное приложение в процессе выполнения похоже на программу MS-DOS. Но это только внешние впечатления. Работа консольного приложения осуществляется с помощью специальных функций Windows.

Разница между этими типами Windows-приложений только в том, с какими типами информации они работают.

Основная задача главной функции оконного Windows-приложения состоит в правильной инициализации программы и корректном ее заверше­нии.

Правильная инициализация приложения предполагает выполнение ряда предопределенных шагов.

Под классом окна понимается совокупность присущих ему характеристик, таких как стиль его границ, формы указателя мыши, значков, цвет фона, наличие меню, адрес оконной процедуры, обрабатывающей сообщения этого окна. Класс окна можно впоследствии использовать для создания окон приложения функцией CreateWindow. Характеристики окна описываются с помощью специальной структуры WNDCLASS (или ее рас­ширенного варианта WNDCLASSEX в Win32).

В WinMain определен экземпляр структуры WNDCLASSEX — wc. Первое поле структуры WNDCLASSEX cbSize должно содержать длину структуры. В поле style можно определять стиль границ окна и его поведение при пере­рисовке. Значение стиля является целочисленным и формируется из констант. Каждая константа означает некоторую предопределенную характеристику.

В поле lpfnWndProc записывается адрес оконной функции. С помощью этой функции все окна, созданные позднее функцией CreateWindow на основе класса, для которого выполняется регистрация, будут обрабатывать посланные им сообщения.

Поля cbClsExtra и cbWndExtra служат для указания количества байтов, дополнительно резервируемых в структуре класса окна WNDPROC и структуре параметров окна, которая поддерживается внутри самой системы Windows. Обычно эти поля инициализированы нулевыми значениями.

Дескриптор приложения формируется в поле hlnstance.

В поля Iсоn и hCursor загружаются дескрипторы значка и ука­зателя мыши. После запуска приложения значок будет отображаться на панели задач Windows и в левом верхнем углу окна приложения, а указатель мыши по­явится в области окна. Значки и указатели мыши представляют собой ресурсы и находятся в отдельных файлах. Windows предоставляет в распоряжение программиста ряд стандартных изображений указателей мыши и значков. B фaйлe winuser.h содержатся символические имена констант, обозначающих стандартные указатели мыши и значки.

Последнее действие при описании класса окна — присвоение данному классу уникального имени. Это имя описано в виде ASCIIZ-строки в поле szClassName lpszClassName.

После инициализации структуры необходимо зарегистрировать класс окна в системе. Это действие выполняется с помощью функции RegisterClassExA, которой в качестве параметра передается указатель на структуру WNDCLASSEX.

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

После описания и регистрации в системе класс окна, приложение на его основе может создать множество различных окон. Создание окна выполняется функцией Win32 API CreateWindowEx. В качестве результата функция возвращает уникальный дескриптор окна hWnd, который необходимо сохранить.

Какой именно кнопке послано сообщение, оконная функция определяет по полю hwnd в структуре сообщения. Наличие одного класса для всех кнопок гарантирует их одинаковое поведение.

Все параметры, передаваемые функции CreateWindowEx, сохраняются в создаваемой Windows внутренней структуре CREATESTRUCT.

Параметр hlnst— дескриптор приложения, создающего окно.

Параметр hMenu — дескриптор главного меню окна.

Параметр hWndParent — дескриптор родительского окна.

Параметр dwStyle определяет стиль окна приложения.

Параметр szTitleName — указатель на ASCII-строку содержащее имя класса окна

Параметр szClassName — указатель на ASCII-строку содержащее текст, помещаемый в заголовок окна.

Параметр dwExStyle задаёт дополнительные стили окна.

В качестве результата функция CreateWindowExA возвращает дескриптор окна hWnd. Он имеет уникальное значение и является одним из важнейших описателей объектов приложения. Он передается как параметр многим функциям Win32 API и как значение полей в некоторых структурах. Дескриптор hWnd однозначно идентифицирует то окно в Windows, для работы с которым вызывается какая-либо функция Win32 API. Также результатом работы функции CreateWindowExA является посылка асинхронного сообщения WMCREATE в оконную функцию приложения.

В случае успешного выполнения функции CreateWindowExA требуемое окно будет создано, но пока это произойдет лишь внутри самой системы Windows — на экране это новое окно пока еще не отобразится. Для того чтобы созданное окно появилось на экране, необходимо применить еще одну функцию Win32 API — ShowWindowA. В качестве параметров этой функции передаются дескриптор hWnd окна, которое необходимо отобразить на экране, и константа, задающая начальный вид окна на экране. В зависимости от значения последнего параметра окно отображается в стандартном виде, развернутым на весь экран или свернутым в значок. Весь вывод на экран должен производиться в оконной функции [11].

Это показывает роль сообщений (и не только WMPAINT), цирку­лирующих в системе.

Сообщение в Win32 — это объект особой структуры, формируемый Windows. Формирование и доставка этого объекта в нужное место в системе позволяют управлять работой как самой системы Windows, так и загруженных Windows-приложений. Инициировать формирование сообщения могут несколь­ко источников: пользователь, само приложение, система Windows, другие прило­жения. Именно наличие механизма сообщений позволяет Windows реализовать многозадачность, которая при работе на одном процессоре является, конечно же, псевдо мультизадачностью. Windows поддерживает очередь сообщений для каждого приложения [5].

Если в системе произошло какое-то событие, например, некоторому приложению необходимо перерисовать свое окно, в результате чего система Windows сформировала сообщение WMPAINT. Данное сообщение попадает в очередь сообщений приложения, создавшего окно.

Выход из цикла обработки сообщений означает одно — необходимо завершить программу. В программе на C/C++ для этого непосредственно за циклом обработки сообщений помешается оператор return: return LpMsg.wParam;

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

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

Таким образом, при поступлении сообщения Windows вызывает оконную функцию и передает ей ряд параметров. Все они берутся из соответствующих полей сообщения. В нотации языка C/C++ заголовок оконной функции описан следующим образом:

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAH LParam)

Здесь hWnd — дескриптор окна, которому предназначено сообщение; message — идентификатор сообщения, характеризующий тип сообщения; wParam и IParam — дополнительные параметры, являющиеся копиями соответствующих полей струк­туры поступившего сообщения.

Центральным местом оконной функции является синтаксическая конструкция, в задачу которой входит распознавание поступившего сообщения по его типу (параметр message) и передача управления на ту ветвь кода оконной функции, ко­торая продолжает далее работу с параметрами сообщения. В языке C/C++ для этого используется оператор switch (переключатель).

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

2.1.2 Создание клиентских приложений в ОС Linux.

Введение в систему X.

Система X первоначально разработанная в MIT (Массачусетский технологиче­ский институт) вначале 1980 гг., имеет длинную и яркую историю. Она была создана в качестве унифицированной оконной системы для высокопроизводительных рабочих станций того времени.

Одной из наиболее передовых и в результате разочаровывающих характеристик X является жесткая привязка к идеологии «инструментов, а не политики». Это означает, что в системе X не существует определения какого-нибудь пользовательского интерфейса» но имеются средства для его создания. Программист может создавать полностью свою собственную среду рабо­чего стола, добавляя совершенно новые элементы при желании

Х-сервер находится в состоянии ожидания ввода и передаёт нажатия кла­виш и щелчки мыши в приложения Х-клиентам. Такие сообщения называются событиями; они являются ключевыми элементами программирования GUI.

Х-клиент — все программы, использующие X Window System как GUI. Например xterm, xcalc и другие более сложные приложения, например. Abiword. Х-клиент ожидает события от пользователя, которые посылаются Х-сервером, затем он отвечает на них путём отправки серверу сообщений об внесение изменений в изображение.

Х-клиент и Х-сервер взаимодействуют друг с другом посредством Х-протокола, это протокол позволяет клиентам и серверу быть установленными на разных машинах в сети. Например, можно запустить Х-клиент на удаленном компьютере через Интернет VPN. В большинстве PC Х-сервер и Х-клиент и работают на одной и той же машине.

Для генерации сообщений Х-протокола Х-клиент использует библиотеку Xlib. Эта библиотека предлагает свой API, который позволяет кли­ентам отрисовывать простейшие элементы и откликаться на простейший ввод. Xlib является библиотекой очень низкого уровня, и разработка с ее применением даже простого меню, будет неве­роятно трудоемким процессом с сотнями строк кода [9].

Разработчики GUI не могут эффективно программировать непосредственно при помощи Xlib. Для этого им требуется API, делающий более простым создание таких элемен­тов GUI, как списки, панели меню, кнопки и т.д. Эту роль выполняет комплекты инструментальных средств или комплекты элементов интерфейса.

Комплекты инструментов. Оконные менеджеры

Комплект элементов интерфейса — это библиотека GUI, применяемая Х-клиентами для упрощения создания панелей меню, окон и т. д. С помощью комплекта элементов интерфейса программист можете создать окна, флажки и тому подобное посредством вызовов одной функции. Виджеты — это общий термин для обозначения элементов GUI. Они являются универсальными элементами, которые можно найти во всех современных биб­лиотеках GUI.

Из массы комплектов элементов интерфейса для системы X можно выбирать те, которые обладают нужными достоинствами. Вопрос о том какой комплект выбрать является важным проектным решением для приложения, поэтому рекомендуется брать в расчёт следующие факторы:

  • Для чего предназначено приложение?
  • Есть ли библиотеки комплекта элементов у пользователей?
  • Присутствует ли комплект элементов в других популярных ОС?
  • На какой лицензии распространяется комплект?
  • Есть ли поддержка нужного языка программирования?

В течение многих лет наиболее популярными комплектами инструментальных средств были OpenLook, Motif, и Xt, но затем они уступили более совершен­ным комплектам GTK+ и Qt, формирующим основу рабочих столов GNOME и KDE соответственно.

Оконный менеджер или диспетчер отвечает за положение окна на экране. Диспетчер часто поддерживает отдельные «рабочие области», на которые может делиться рабочий стол, чтобы увеличить область экрана, с которой пользователь можете работать. Также оконный диспетчер ответственен за графическое оформление окна, состоящее, обычно, из полосы заголовка и пиктограмм минимизации, максимизации и закрытия окна. Оконные диспетчеры частично обеспечивают внешний вид рабочего стола, напри­мер заголовки окон [12].

Наиболее популярные оконные менеджеры:

  • Metacity — используется для рабочего стола GNOME по умолчанию;
  • KWin—применяется для рабочего стола KDE по умолчанию;
  • Openbox— разработан для запуска на системах с сильно ограниченными ресурсами, запускается на медленных и ста­рых системах;
  • Enlightenment—отображает превосходную графику и спецэффекты.

Оконные диспетчеры в системе X можно переключать.

Введение в GTK+

Вначале GTK+ был лишь частью одного из популярных графических редакторов GNU Imаgе Маnipulation Program (GIMР), от него он и получил своё имя (Thе Gimр ToоlKit). Затем GTK+ стал самостоятельным проектом, сейчас он один из самых мощных и попу­лярных комплектов инструментов.

Комплект GTK+ полностью реализован на языке С и преобладающая часть программного обеспечения GTK+ тоже реализована на С. В GTK, присутствуют привязки к некоторым языкам (language binding), которые позволяют применять GTK+ с предпочитаемыми языками программирования: С++, Python. PHP, Ruby, Perl, C# или Java.

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

  • Glib – это ряд низкоуровневых структур данных, типы, которые обеспечивают многопоточную разработку, циклы событий и динамическую загрузку;
  • GObjec — реализация объектно-ориентированной системы на языке С, благодаря которой не требуется применять язык С++;
  • Pango — поддержка визуализации и форматирования текста;
  • АТК— используется для создания приложений которые пользователи могут запускать используя средства чтения экрана и другие средства доступа;
  • GDK (GIMP Drawing Kit) – используется для обработки визуализации низкоуровневой гра­фики поверх библиотеки Xlib;
  • GdkPixbuf — используется для манипуляции изображениями в программах созданных с помощью GTK+;
  • Xlib – используется для работы с низкоуровневой графикой в системах Linux и UNIX.

GLib и GObject — библиотеки переносимости языка С, на которых основан набор средств GTK+, они определяют эти типы для того, чтобы реализовать возможность межплатформенных разработок.

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

Все современные комплекты инструментов, включая GTK.+, написаны в объектно-ориентированном стиле программирования.

Независимо от того, что набор инструментов GTK+ реализован на чистом С, благодаря библиотеке GObject он имеет поддержку объектов и ООП. Библиотека GObject поддерживает концепцию наследования объектов и полиморфизма с помощью макросов.

Все функции, которые предназначены для создания виджетов, должны возвращать тип GtkWidget [9].

Каркасное приложение средствами GTK+

Далее приведён фрагмент простейшей из программ GUI, созданной средствами GTK+ — отображение окна.

#include <gtk/gtk.h>

int main (int _argc, char *_argv[]) (

GtkWidget *_window;

gtk_init(&_argc, &_argv);

_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(_window);

gtk_main ();

return 0;

)

Как видно из листинга библиотеки GTK+ в действии и большой набор функциональных возможностей, получаемых из очень короткого программ­ного кода.

Для начала программирования средствами GTK+ необходимо включить заголовочные файлы, необходимые для библиотек GTK+ и связанных с ними библиотек с помощью одного оператора #include <gtk/gtk.h>. Да­лее объявлено окно как указатель на объект Gtkwidget.

Затем для инициализации библиотек GTK+ следует выполнить вызов gtkimt, передав аргументы командной строки _argc и _argv. Это дает возможность GTK+ вы­полнить синтаксический анализ любых параметров командной строки, о которых комплект должен знать. Необходимо всегда инициализировать GTK + таким способом перед вызовом любых функций GTK+.

Суть примера заключается в вызове функции gtkwindownew. Далее приведен ее прототип:

GtkWidget* gtk windownew (GtkWindowType type) ;

Параметр type может принимать в зависимости от назначения окна одно из двух значений:

  • gtk_window_toplevel — стандартное окно с рамкой;
  • gtkwindowpopup — окно без рамки, подходящее для диалогового окна.

Почти всегда применяется значение gtk_window_toplevel, потому что для создания диалоговых окон есть гораздо более удобные способы.

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

gtk_widget_show(_window);

Эта функция принимает указатель типа Gtkwidget, поэтому нужно просто предостав­ить ссылку на свое окно.

Последним выполняется вызов функции gtk_main. Эта основная функция запус­кает процесс обмена информацией (interactivity process), передавая управление GTK+, и не возвращает его до тех пор, пока не будет выполнен вызов функции gtk_main_quit.

I:Screenshot from 2015-05-13 09_51_49.png

Рисунок 1 — Простейшей окно, созданное средствами GTK+.

Все библиотеки GUI имеют кое-что общее. Необходимо присутствие некоего механизма позволяющего выполнение программного кода в ответ на действия пользователя. Программа, которая выполняется в режиме консоли, может позволять себе остановку выполне­ния для ожидания ввода, а затем применять нечто вроде операторов выбора, чтобы вы­полнить разные ветви программы в зависимости от пользовательских данных. Этот подход является нецелесообразным в случае приложений GUI, потому что у оконного приложения есть необходимость непрерывно реагировать на ввод пользовательской информации, например, нужно постоянно об­новлять области окна.

Современные оконные системы имеют систему событий и приемники событий, кото­рым адресована эта задача. Общая идея основана на том, что любой пользовательский ввод как правило, при помощи мыши или клавиатуры инициирует событие. Перемещение мыши, например, вызывает «событие маши». Затем используется программный код, который будет ждать приема именно этого события и выполняться, в случае если оно возникнет.

Эти события генерирует система X Window System, но они мало помогут программисту GTK+, т. к. они очень низкоуровневые. Когда про­изводится щелчок кнопкой мыши, X порождает событие, содержащее координаты указателя мыши, а разработчику нужно знать, когда пользователь активизирует виджет [12].

У GTK+ есть собственная система событий и приемников событий, называемых сигналами и обратными вызовами. Их очень легко применять, поскольку для уста­новки обработчика сигнала можно использовать очень полезное свойство языка С, указатель на функцию.

Сигнал GTK+ порождается объектом типа GtkObject, когда происходит нечто, например, ввод пользователя. Функция, связанная с сигналом и, следовательно, вызываемая при любом порождении сигнала, называется функцией обратного вызова.

Программист, использующий GTK+, должен позаботиться лишь о написании и связывании функции обратного вызова, потому что код порождения сигнала является внутренним программным кодом определенного виджета.

Прототип функций обратного вызова обычно выглядит следующим образом:

void a__callback_function (GtkWidget *widget, gpointer user_data) ;

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

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

gulong g_signal_connect (gpointer *object, const gchar *name,

GCallback func, gpointer user data );

Следует заметить, что для связывания функций обратного вызова отсутствуют ограничения. Большое количество сигналов могут быть связаны с одной и той же функцией обратного вызова, и несколько функций обратного вызова могут быть связаны с одним сигналом.

2.1.3 Платформенно-независимые оконные API

Существуют и другие способы программирования приложений GUI для ОС Linux, — существуют языки программирования со своей собственной поддержкой GUI.

  • Язык Java имеет поддержку программирования GUI с помощью Swing и некоторых более старых API AWT. Внешнее оформление приложений GUI на языке Java может понравиться не всем и на многих более старых компьютерах интерфейс может восприниматься громоздким и медленно реагирующим. Преимущество языка Java в том, что однажды откомпилированный код способен выполняться неизменным на лю­бой платформе с установленной виртуальной машиной Java (Java Virtual Machine), реализация которой существует для Linux, Windows, Mac OS и мобильные устройства.
  • Язык программирования С# похож на язык Java. В ОС Linux приход обще­языковой исполняющейся среды (С# Common Language или CLR) был осуществлён благодаря проек­ту Mono. На платформе Mono язык С# имеет поддержку модели программирования Windows Forms, которая применяется в Windows, а также необходимую привязку к комплекту инструментов GTK+, которая называется Gtk#.
  • Tcl/Tk — это язык сценариев который отлично подходит для быстрого создания интерфейсов GUI и работает с X, Windows и Mac OS. Он является очень удобным для эффективного макетирования или маленьких утилит, которые нуждаются в удобстве сопровождения сценария.
  • Python – также является языком сценариев. В Linux имеется возможность использовать привязку Python к GTK+, и тем самым разрабатывать програм­му GTK+ на языке Python.
  • Perl — является еще одним популярным языком сценариев в Linux. Возможно применять Тk или часть Tcl/Tk, в языке Perl как Perl/Tk.

За независимость от платформы, которую обеспечивают эти языки, приходится платить. Затрудняется совместное использование данных их собственными приложениями, примером является использование операций перетаскивания мышью (drag and drop), сохранение конфигурации не стандарт­ным способом, которое характерно для данного рабочего стола. Зачастую поставщики программного обеспечения на языке Java включают в поставку платформенно-зависимые расширения с целью избежать этих проблем [1].

2.2 Разработка клиентских приложений для web-ресурсов

Веб-приложение (Web-приложение) — это прикладная программа, которая хранится на удаленном сервере и доставляется через Интернет через интерфейс браузера.

Веб-службы по определению являются веб-приложениями, и многие, хотя и не все, веб-приложения содержат веб-приложения.

В секторе мобильных компьютеров веб-приложения иногда сравнивают с нативными приложениями, которые представляют собой приложения, разработанные специально для конкретной платформы или устройства и установленные на этом устройстве. Однако они не являются взаимоисключающими, поскольку многие приложения содержат элементы как собственных, так и веб-приложений. Программы, сочетающие два подхода, иногда называют гибридными приложениями [4].

2.2.1 HTML5

HTML5 — это язык программирования, акроним расшифровывается как Hyper Text Markup Language. Это система, которая позволяет изменять внешний вид веб-страниц, а также вносить коррективы в их внешний вид. Он также используется для структурирования и представления контента в Интернете.

С помощью HTML5 такие браузеры, как Firefox, Chrome, Explorer, Safari и другие, могут знать, как отображать определенную веб-страницу, знать, где находятся элементы, где размещать изображения и где размещать текст.

Помимо HTML5, существуют другие языки, которые необходимы для придания сайту формата и интерактивности, но основная структура любой страницы сначала определяется на языке HTML5.

Основными достоинствами HTML5 по сравнению с его предшественником (HTML4) является то, что вы можете добавлять мультимедийный контент без использования Flash или другого медиаплеера. Благодаря HTML5 пользователи могут получать доступ к веб-сайтам без подключения к Интернету. К этому добавляется функция перетаскивания, а также онлайн-редактирование документов, которое было популяризировано в Документах Google. Кроме того, вот возможности, которые вы имеете, когда используете HTML5:

Одной из основных особенностей разработки приложений HTML5 является то, что конечный результат полностью доступен. То есть можно получить доступ к этому приложению с компьютера, планшета или мобильного телефона. Даже если меняются устройства, все равно можно получить доступ к веб-приложению по соответствующему URL-адресу, что не относится к мобильному приложению [6].

2.2.2 CSS

Каскадные таблицы стилей (CSS) — это язык таблиц стилей, используемый для описания представления документа, написанного на языке разметки, например HTML. CSS является краеугольной технологией Всемирной паутины, наряду с HTML и JavaScript.

CSS предназначен для разделения представления и содержимого, включая макет, цвета и шрифты. Такое разделение может улучшить доступность контента, обеспечить большую гибкость и контроль в спецификации характеристик презентации, дать возможность нескольким веб-страницам совместно использовать форматирование, указав соответствующий CSS в отдельном файле .css, а также уменьшить сложность и повторяемость структурного контента [7].

Разделение форматирования и содержимого также позволяет представить одну и ту же страницу разметки в разных стилях для разных методов рендеринга, например, на экране, в печати, голосом (через речевой браузер или программу чтения с экрана) и на основе шрифта Брайля. тактильные устройства. CSS также имеет правила для альтернативного форматирования, если доступ к контенту осуществляется на мобильном устройстве.

Каскадирование имен происходит из указанной схемы приоритетов, чтобы определить, какое правило стиля применяется, если конкретному элементу соответствует несколько правил. Эта каскадная схема приоритетов предсказуема [8].

2.2.3 JavaScript

JavaScript часто называемый JS, представляет собой интерпретируемый язык программирования высокого уровня, который соответствует спецификации ECMAScript. JavaScript имеет синтаксис фигурных скобок, динамическую типизацию, ориентирование объектов на основе прототипов и функции первого класса.

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

Как мультипарадигмальный язык, JavaScript поддерживает стили программирования, управляемые событиями, функциональные и императивные (в том числе объектно-ориентированные и основанные на прототипах). У него есть API для работы с текстом, массивами, датами, регулярными выражениями и DOM, но сам язык не включает никаких операций ввода-вывода, таких как сетевые функции, хранилище или графические средства. Для обеспечения этих функций он зависит от среды хоста, в которую он встроен.

Изначально реализованные только на стороне клиента в веб-браузерах, механизмы JavaScript теперь встроены во многие другие типы хост-программ, в том числе на стороне сервера, в веб-серверы и базы данных, а также в не-веб-программы, такие как текстовые процессоры и программное обеспечение PDF, и во время выполнения. среды, которые делают JavaScript доступным для написания мобильных и настольных приложений, включая виджеты для рабочего стола.

Термины Vanilla JavaScript и Vanilla JS относятся к JavaScript, который не распространяется ни на какие фреймворки или дополнительные библиотеки. Скрипты, написанные на Vanilla JS, представляют собой простой код JavaScript.

Хотя между JavaScript и Java есть сходства, в том числе имя языка, синтаксис и соответствующие стандартные библиотеки, эти два языка отличаются друг от друга и сильно различаются по дизайну. На JavaScript повлияли такие языки программирования, как Self и Scheme. Формат сериализации JSON, используемый для хранения структур данных в файлах или их передачи по сетям, основан на JavaScript [5].

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

        1. Angular

Angular — основанная на TypeScript инфраструктура веб-приложений с открытым исходным кодом, возглавляемая Angular Team в Google и сообществом людей и корпорации. Angular — это полное переписывание от той же команды, которая создала AngularJS.

  • Angular не имеет понятия «объем» или контроллеров, вместо этого он использует иерархию компонентов в качестве своей основной архитектурной характеристики.
  • Angular имеет другой синтаксис выражений, фокусируясь на «[]» для привязки свойства и «()» для привязки события;
  • Модульность — основная функциональность перешла на модули;

Angular рекомендует использовать язык Microsoft TypeScript, который включает следующие функции:

  • Статическая типизация, в том числе Generics
  • TypeScript является расширенным набором ECMAScript 6 (ES6) и обратно совместим с ECMAScript 5 (т. Е. JavaScript).
  • Динамическая загрузка
  • Асинхронная компиляция шаблонов
  • Итеративные обратные вызовы, предоставляемые RxJS. RxJS ограничивает видимость состояния и отладку, но их можно решить с помощью реактивных надстроек, таких как ngReact или ngrx.
  • Поддержка Angular Universal, технологии, которая запускает ваше приложение Angular на сервере
  • Имеет собственный набор современных компонентов пользовательского интерфейса, которые работают через Интернет, мобильные и настольные системы, под названием Angular Material [13].

Vue.js

Vue.js — это JavaScript-инфраструктура с открытым исходным кодом для создания пользовательских интерфейсов и одностраничных приложений.

Vue.js обладает постепенно адаптируемой архитектурой, которая фокусируется на декларативном рендеринге и компоновке компонентов. Расширенные функции, необходимые для сложных приложений, таких как маршрутизация, управление состоянием и инструменты сборки, предлагаются через официально поддерживаемые библиотеки поддержки и пакеты.

Vue использует основанный на HTML синтаксис шаблона, который позволяет связать визуализированный DOM с данными базового экземпляра Vue. Все шаблоны Vue представляют собой действительный HTML, который может быть проанализирован совместимыми со спецификацией браузерами и анализаторами HTML. Под капотом Vue компилирует шаблоны в виртуальные функции рендеринга DOM (виртуальная объектная модель документа (или «DOM»)) позволяет Vue рендерить ваш компонент в его памяти до обновления вашего браузера, что ускоряет все, потому что меньше взаимодействий с браузером В сочетании с системой реактивности Vue может рассчитать минимальное количество компонентов для повторного рендеринга и применить минимальное количество манипуляций с DOM при изменении состояния приложения.

Пользователи Vue могут использовать синтаксис шаблона или напрямую писать функции рендеринга, используя JSX. Функции рендеринга открывают возможности для мощных основанных на компонентах шаблонов — например, новая система переходов теперь полностью основана на компонентах, используя функции рендеринга внутри.

        1. React

React (также известный как React.js или ReactJS) — это библиотека JavaScript для создания пользовательских интерфейсов. Он поддерживается Facebook и сообществом отдельных разработчиков и компаний.

React можно использовать в качестве основы при разработке одностраничных или мобильных приложений, поскольку он оптимален для извлечения быстро меняющихся данных, которые необходимо записать. Однако выборка данных — это только начало того, что происходит на веб-странице, поэтому сложные приложения React обычно требуют использования дополнительных библиотек для управления состоянием, маршрутизации и взаимодействия с API [1].

Вывод по главе

В главе были рассмотрены основные принципы разработки программ для Windows на языках C и C++ с применением Win32 API и одна из самых популярных библиотек GUI для ОС Linux — GTK+.

Win32 API — это совокупность функций для написания ПО, работающее под управлением Microsoft Windows 98, Windows NT или Windows 2000.

После запуска windows-программа находится в состоянии ожидания, она ожидает, когда ей операционная система пошлёт сообщение. Операционная система посылает специально оформленные группы данных, называемых сообщениями.

Также были рассмотрены вопросы взаимодействия приложений с GUI и операционных систем.

Реализация как МFС, так и Windоws Forms основана на вызовах функций Windows API. Эти интерфейсы являются надстройкой над Win32 АPI и разработаны для того чтобы облегчить программирование Windows приложений.

GTK+ соответствует одной из популярнейших интегрированных сред рабочего стола Linux: GNOME (GTK+).

Была рассмотрена разработка приложений при помощи библиотек GTK+/GNOME для разработки приложения с интерфейсом GUI. Рассмотрены принципы работы X Window System и основы применения GTK+, а также механизм сигналов обратного вызова этого набора инст­рументальных средств.

Все библиотеки GUI в Linux расположены поверх низкоуровневой оконной системы, которая называется X Window System (или просто X).

Были рассмотрены средства создания клиентских приложений для web, в том числе популярные web фреймворки: Angular, Vue.js, React.

3. Реализация клиентских приложений.

3.1 Visual Studio

Visual Studio (полная версия) — это «полнофункциональная» и «удобная» среда разработки.

Visual Studio (бесплатные версии «Экспресс» — только до 2017 года) — это функциональные и упрощенные версии полной версии. Функционально-ориентированный означает, что существуют разные версии (Visual Studio Web Developer, Visual Studio С# и т.д.) В зависимости от цели.

Visual Studio (бесплатная версия Community — с 2015 года) является упрощенной версией полной версии и заменяет отдельные экспресс-версии, использовавшиеся до 2015 года.

Обзор возможностей:

  • Разработка. Возможность мгновенной очистки кода и точные результаты поиска.
  • Совместная работа. Совместная работа в рамках рабочего процесса Git-first, функции редактирования и отладки, а также рецензирования кода прямо в Visual Studio.
  • Отладка. Выделение определенных значений и переход к ним; создание автоматических моментальных снимков при выполнении приложения.

Ниже приведено несколько примеров того, как Visual Studio IntelliCode может помочь повысить производительность:

  • обеспечивает контекстно зависимое завершение кода;
  • помогает разработчикам придерживаться шаблонов и стилей написания кода в команде;
  • выполняет поиск трудновыявляемых ошибок в коде;
  • при проверке обращает внимание на те участки кода, которые действительно требуют проверки [14].

3.2 Visual Studio Code

Visual Studio Code — это редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS. Он включает поддержку отладки, встроенный элемент управления Git и GitHub, подсветку синтаксиса, интеллектуальное завершение кода, фрагменты кода и рефакторинг кода. Он легко настраивается, позволяя пользователям изменять тему, сочетания клавиш, настройки и устанавливать расширения, которые добавляют дополнительные функции. Исходный код является бесплатным и открытым исходным кодом и выпущен под разрешающей лицензией MIT. Скомпилированные двоичные файлы являются бесплатными и бесплатными для частного или коммерческого использования.

Visual Studio Code основан на Electron, фреймворке, который используется для развертывания приложений Node.js для рабочего стола, работающего на движке макетов Blink. Хотя он использует платформу Electron, [10] программное обеспечение не использует Atom и вместо этого использует тот же компонент редактора (под кодовым названием «Monaco»), который используется в DevOps Azure (ранее назывался Visual Studio Online и Visual Studio Team Services [15].

3.3 Eclipse

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

Проект Eclipse предоставляет своего рода универсальную инструментальную платформу — открытую расширяемую IDE для чего угодно и ничего особенного. Реальная ценность заключается в том, что плагины для инструментов «учат» платформу тому, как работать с такими вещами, как файлы Java, веб-контент, графика, видео — практически все, что только можно вообразить. Eclipse позволяет разработчикам инструментов независимо разрабатывать инструменты, которые интегрируются с инструментами других людей, поэтому вы не сможете определить, где заканчивается один инструмент, а другой начинается.

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

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

Проект Eclipse охватывает две основные области работы:

  • Инструменты интеграции платформ. Разработка базовых структур и технологий, на которых другие могут создавать инструменты для разработки программного обеспечения всех видов.
  • Инструменты, необходимые для создания и расширения этих платформ. Создание инструментов, необходимых коммиттерам проекта Eclipse для построения платформ интеграции инструментов, и инструментов, необходимых сообществу для расширения и адаптации платформ.

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

Для разработки клиентских приложений имеется готовая сборка — Eclipse IDE for JavaScript and Web Developers

Данный пакет имеет все основные инструменты для любого разработчика клиентских приложений, включая JavaScript, HTML, CSS, поддержку языков XML, клиент Git и Mylyn [16].

Вывод по главе

В главе были рассмотрены основные IDE для разработки приложений, которые применяются, в том числе и для разработки клиентских приложений.

Интегрированная среда разработки Visual Studio — это среда разработки, которая позволяет редактировать, отлаживать и создавать код, а затем публиковать приложения. Интегрированная среда разработки (IDE) — это многофункциональная программа, которую можно использовать для различных аспектов разработки программного обеспечения. Помимо стандартного редактора и отладчика, которые существуют в большинстве сред IDE, Visual Studio включает в себя компиляторы, средства выполнения кода, графические конструкторы и многие другие функции для упрощения процесса разработки программного обеспечения.

Visual Studio Code (VSCode) — это кроссплатформенный (Linux, Mac OS, Windows) редактор, который может быть дополнен плагинами.

Eclipse представляет собой основанную на Java расширяемую платформу разработки с открытым исходным кодом. По сути, это просто среда разработки и набор сервисов для построения приложений на основе встраиваемых компонентов (плагинов). В состав Eclipse входит стандартный набор плагинов, в том числе хорошо известный инструментарий Java Development Tools.

Заключение

Проведённое исследование позволяет сделать следующие выводы.

Приступая к разработке приложения, важно понимать, что сам язык программирования мало влияет на его общую структуру. Это обстоятельство позволяет с относительной легкостью менять инструментальные средства разработки приложений.

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

У современных оконных систем есть система событий и приемники событий, кото­рым адресована эта задача. Идея заключается в том, что каждый пользовательский ввод обычно с помощью мыши или клавиатуры инициирует событие. Нажатие на клавиатуре, например, вызовет «событие клавиатуры». Затем пишется программный код, который ждет приема такого события и выполняется в случае его возникновения.

При написании прикладных программ программистам приходится пользоваться огромным объемом документации. Часто приходится тратить много времени, чтобы понять, как работает та или иная функция и её область ее применения. Ситуация становится хуже, когда разработчики программного обеспечения обладают лишь базовой информацией о механизмах и о внутренних процессах с помощью которых ОС вза­имодействует с приложением.

Наличие хороших знаний об интерфейсе прикладного программирования способно существенно облегчить изучение технологий программирования более высокого уровня, например, использование МFC (Microsoft Foundation Classes) или Windоws Fоrms.

MFC и Windоws Fоrms, действительно способны повысить производительность работы программистов, но также гораздо менее гибки по сравнению с Win32 API. Win32 API даёт разработчикам возможность исполь­зования тех возможностей интерфейсов программирования и ОС, которые являются недоступными в MFC или Windows Forms.

Платформа Microsoft.NET Framework, предназначенная для работы приложений Mi­crosoft.NET, дает большие преимущества разработчикам программ. В частности, она способна преодолеть барьеры языковой несовместимости, допуская создание отдельных компонентов создаваемой системы на различных языках программирования.

Среди других преимуществ Microsoft .NET Framework заслуживает упоминания наличие обширной библиотеки классов, существенно облегчающей решение задач, наиболее часто возникающих при создании автономных программ и Web-приложений. Эта библиотека, насчитывающая десятки тысяч классов, готовых к употреблению, позволяет использовать в своих разработках готовые и отлаженные модули.

В работе была рассмотрена разработка приложений при помощи библиотек GTK+/GNOME для разработки приложения с интерфейсом GUI. Рассмотрены принципы работы X Window System и основы применения GTK+, а также механизм сигналов обратного вызова этого набора инст­рументальных средств.

GTK+ — это библиотека, которая существенно упрощает создание графиче­ских интерфейсов пользователей (Graphical User Interface, GUI), предоставляя набор готовых компонентов, именуемых виджетами, которые вы соединяете вместе с помощью легких в использовании вызовов функций, включенных в логическую структуру приложения.

Список использованной литературы

  1. Бэнкс Алекс, Порселло Ева React и Redux: функциональная веб-разработка. — СПб.: Питер, 2018. — 336 с: ил.
  2. Дженифер Тидвелл. Разработка пользовательских интерфейсов. M.: Питер, 2008 г.- 416 с.
  3. Джеф Раскин. Интерфейс: новые направления в проектировании компьютерных систем. M.: Символ-Плюс, 2010 г.- 416 с.
  4. Колисниченко Д. Н. Самоучитель РНР 5 — СПб.; Наука и Техника, 2007. — 640 с, ил.
  5. Лафоре Роберт. Объектно-ориентированное программирование в С++. М.: Питер, 2011.- 928 с.
  6. Никсон P. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. — СПб.: Питер, 2015. — 688 с: ил.
  7. Макфарланд Д. Новая большая книга CSS. — СПб.: Питер, 2016. — 720 с: ил.
  8. Мейер, Эрик А. CSS. Карманный справочник, 4-е изд. : Пер. с англ. — М. : ООО «И.Д. Вильяме» 2016. — 288 с.: ил. — Парал. тит. англ.
  9. Н. Мэтью.Основы программирования в Linux: Пер. с англ. / Н. Мэтью, Р. Стоуне.— СПб.: БХВ-Петербург, 2011. — 896 с: ил.
  10. Побегайло А. П. Системное программирование в Windows. — СПб.: БХВ-Петербург, 2010.- 1056 с.
  11. П. В. Румянцев. Исследование программ Win32: до дизассемблера и отлад­чика. — М.: Горячая линия-Телеком, 2014. — 367 с.
  12. Роббинс А. Linux: программирование в примерах. Пер с англ. — М.: Мир, 2011. — 656 с.
  13. Фримен А. Angular для профессионалов. — СПб.: Питер, 2018. — 800 с: ил..

Электронные ресурсы:

  1. [Электронный ресурс] URL:

https://docs.microsoft.com/en-us/visualstudio/?view=vs-2019 (дата обращения: 28.05.2019)

  1. [Электронный ресурс] URL:

https://code.visualstudio.com/docs

(дата обращения: 28.05.2019)

  1. [Электронный ресурс] URL: https://www.eclipse.org/downloads/packages/release/2018-09/r/eclipse-ide-javascript-and-web-developers

(дата обращения: 28.05.2019)

СПИСОК ДЛЯ ТРЕНИРОВКИ ССЫЛОК

  • Проектирование БД для сотрудника туристического агентства (Выбор средств/методологии проектирования. Выбор СУБД)
  • Особенности политики мотивации персонала малых предприятий ООО «Гранд»
  • Управление поведением в конфликтных ситуациях (Характеристика причин и последствий конфликтов в ООО «Максима»)
  • Теории происхождения государства (Теории и признаки происхождения Древнерусского государства)
  • Теория происхождения государства (Общие закономерности возникновения государства. Пути возникновения государства)
  • Анализ влияния качества управленческих решений на деятельность организации
  • Формы и системы оплаты труда на предприятии (СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЗАРУБЕЖНОГО И РОССИЙСКОГО ОПЫТА УСТАНОВЛЕНИЕ СИСТЕМ ОПЛАТЫ ТРУДА И ВЫБОР ЭФФЕКТИВНОЙ СИСТЕМЫ ОПЛАТЫ ТРУДА РАБОТНИКОВ ОГРАНИЗАЦИИ)
  • Виды и состав угроз информационной безопасности. Меры, методы и способы защиты информации на современном этапе
  • Факторы внешней среды прямого воздействия (на примере ОАО Газпром)
  • Эффективность менеджмента организации (Организационно-правовая характеристика предприятия)
  • Организация маркетинга на предприятии (теоретические аспекты) (Организация маркетинга на предприятии ООО «Русское молоко»)
  • Роль рекламы в современном маркетинге (на примере конкретной организации) (Аналитические аспекты по теме исследования: значение и роль рекламы в системе маркетинговой деятельности на примере ООО «TESLA COFFEE»)

Понятие web-приложений и их типы. Структура сети и сетевые сервисы. Развитие и структура веб-приложений. HTTP-протокол: сущность и основные методы с примерами.

Урок 1. Web-приложение: понятие, компоненты и принципы работы

Понятие web-приложений и их типы. Структура сети и сетевые сервисы. Развитие и структура веб-приложений. HTTP-протокол: сущность и основные методы с примерами.

Smartiqa Automation web sm

Оглавление

Теоретический блок

1. Сущность web-приложения
2. Пятиуровневая структура сети
3. Сетевые сервисы
4. История развития web-приложений
5. Типы web-приложений
6. Принцип работы web-приложений
7. HTTP-протокол

Перейти

Практический блок

1. Вопросы-ответы

Перейти

ТЕОРЕТИЧЕСКИЙ БЛОК

Сущность web-приложения

Web-приложение – программа с определенным набором функционала, использующая в качестве клиента браузер. Другими словами, если приложению для осуществления бизнес-логики требуется сетевое соединение и наличие на стороне пользователя браузера, то его относят к веб-приложению.

К сегодняшнему дню исторически сложилось 3 типа приложений:

Типы приложений

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

Мобильные приложения заточены исключительно для смартфонов и планшетов с учетом установленной там системы (Android, iOS и др.). Это также добавляет боли разработчикам софта. Важно отметить, что многие мобильные приложения фактически являются web-приложениями (о чем подозревают не все пользователи), так как возможности «движков» браузеров это позволяют.

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

  1. Могут работать как на смартфоне, так и персональном компьютере,
  2. Практически независимы от железа
  3. По функционалу скоро перестанут уступать десктопным аналогам.

Взаимодействие внутри web-приложения

Взаимодействие внутри web-приложения

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

Подытожим:
1 – Выделяют 3 типа приложений: десктопные, мобильные, web
2 – Web-приложения используют в качестве клиента браузер

Пятиуровневая структура сети

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

Рассмотрим наиболее простую модель сетевых слоев, состоящую из пяти уровней. В литературе ее еще называют моделью TCP/IP.

Модель сети TCP/IP

Представленные слои демонстрируют уровни сетевых взаимодействий (от радио или световых сигналов до процесса передачи сообщения между двумя приложениями через HTTP-протокол).

1. Физический уровень

Физический уровень является самым низким. Он связан непосредственно с законами физики. Например, через оптоволоконный кабель передаются пучки света, которые интерпретируются машиной как нули или единицы. Любое ваше действие в Интернете в конце концов становится набором сигналов, которые через кабель или радиоволны транслируются между устройствами.

Полезно знать:
Помимо представленной 5-уровневой модели существует 7-уровневая модель OSI (The Open Systems Interconnection model, модель взаимодействия открытых систем). Она включает в себя уровни: физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной.

На физическом слое применяется ряд протоколов: 1000BASE-SX, 802.15 и др. Протоколы необходимы для того, чтобы сетевые устройства могли понимать друг друга, коммуницировать между собой на одном языке. Каждый уровень имеет свои протоколы.

2. Канальный уровень

Канальный уровень отвечает за соединение устройств одной сети (локальной). Здесь используется два популярных протокола:

  1. Ethernet (когда компьютеры соединяются кабелем)
  2. WiFi (беспроводное соединение).

Чтобы разные устройства могли различаться, они имеют MAC-адреса, которые представляют собой уникальные идентификаторы. В мире практически нет двух гаджетов с одинаковыми MAC-адресами. Пример MAC-адреса: 12:FA:A9:11:BC:DE (шесть 16-ричных однобайтных чисел, разделенных двоеточием).

3. Сетевой уровень

Сетевой уровень – необходимость функционирования Интернета, так как дает возможность общения устройствам из разных сетей. Использование IP-протокола позволяет присваивать сетевым устройствам определенные адреса и определять их принадлежность к конкретной сети. IP-адрес состоит из четырех однобайтных чисел, которые записываются в десятичной системе. Типичный пример: 192.16.0.1.

На основании адресов устройств сети мы можем подключаться к сайтам, серверам, почтовым клиентам и получать требуемую информацию. Существует 2 протокола IP: 4-ой и 6-ой версий. В ближайшем будущем произойдет полный переход на последнюю версию, так как версия IPv4 уже не справляется с растущим количеством компьютеров и гаджетов с доступом к сети (более того, в 2020 году в мире закончились свободные IP-адреса).

4. Транспортный уровень

Транспортный уровень позволяет идентифицировать адресатов и не смешивать потоки данных. На любом ПК или мобильном устройстве может одновременно работать несколько приложений, которым требуется сетевое подключение. Согласитесь, email и MMORPG никогда не меняются местами при получении сообщений. Вы всегда уверены в том, что на почту приходит сообщение, а в игре информация характеризуется другими параметрами.

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

Наиболее популярны на транспортном уровне 2 протокола: TCP и UDP.

TCP гарантирует получение всей передаваемой информации (иначе возникнет ошибка), а UDP такой гарантии не дает. Так, когда вы скачиваете книгу с сайта, применяется протокол TCP (разве нужна кому-то книга кусками?), а когда смотрите стрим на ютубе, то достаточно UDP протокола (если потеряется несколько кадров, вы этого не заметите, зато качество трансляции будет высоким).

5. Уровень приложений

Уровень приложений – это, по факту, то, с чем непосредственно работает программист большую часть времени. Главная задача данного слоя – предоставить клиенту удобный интерфейс для взаимодействия с сетью и устройствами.

Здесь используется огромное количество разнообразных протоколов, среди которых:

1. HTTP (применяется браузером для получения данных с Интернета),
2. SMTP (для почтовых сервисов),
3. FTP (загрузка файлов),
4. BitTorrent (пиринговый протокол),
5. SSH (защищенное соединение).

Наиболее значимым в рамках курса является HTTP протокол, о котором пойдет речь ниже.

Подведем итог по изученной сетевой модели:
1 – Передача данных в сети осуществляется на 5-ти уровнях (физическом, канальном, сетевом, транспортном, приложений)
2 – На каждом слое используется свои протоколы, чтобы сетевые устройства могли понимать друг друга
3 – Особое внимание разработчикам web-приложений следует уделить HTTP-протоколу

Сетевые сервисы

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

1 – DNS (Domain Name System, система доменных имен)

Любой сайт в сети имеет определенный адрес. Так, когда в браузере вы набираете строку google.com, то попадаете на вполне конкретный сайт. Однако как мы выяснили ранее, IP-адреса – это числа, и никаких человекоудобных форм представления у них нет. Так, главная страница Гугл на самом деле имеет адрес 173.194.222.101.

Так каким же образом веб-браузер понимает написанные нами буквы google.com? За это стоит благодарить DNS-сервера. Они хранят все имена сайтов и соответствующие им IP-адреса.

Браузеру все равно, что вы введете в адресную строку: набор чисел или имя сайта. На заре Интернета, когда было не так много сайтов, запомнить адреса 2-5 страниц было реальным. В любом случае, числа плохо укладываются в памяти, а вот слова – очень даже просто. Благодаря DNS нам не нужно помнить сочетания цифр.
К слову, узнать IP-адрес любого сайта можно в командной строке. Для Windows и UNIX-систем команда выглядит одинаково.

Обмен пакетами с google.com [173.194.222.101] с 32 байтами
Ответ от 173.194.222.101: число байт=32 время=73мс TTL=109
Ответ от 173.194.222.101: число байт=32 время=73мс TTL=109

Как видим, google.com преобразован в адрес 173.194.222.101. В зависимости от вашего местоположения этот адрес может меняться, так как у крупных сервисов «сайт» располагается на множестве серверов, а выбирается тот, который ближе всего к вам территориально.

2 – NAT (Network Address Translation, преобразование сетевых адресов)

Одна из главных проблем в Интернете – безопасность. Никто не хочет, чтобы к его компьютеру или смартфону получил доступ злоумышленник. А ведь зная ваш адрес, сделать это достаточно просто. К чему это может привести, объяснять не требуется (кража паролей, кредитных карточек, платежных данных, личной информации).

Когда вы запрашиваете адрес какой-то страницы в Интернете, то передаете, в том числе, свой адрес. Как же защититься? Разработчики сервиса NAT это предусмотрели. На самом деле запрос к удаленному серверу идет не от имени вашего ПК. Ваш реальный адрес маскируется роутером или файрволом и передается в скрытом виде. Особенно это удобно для крупных компаний, где компьютеры объединены в сеть (запрос будет отправляться не от отдельного ПК, а от общего роутера, поэтому узнать адрес конкретной машины практически невозможно).

3 – DHCP (Dynamic Host Configuration Protocol, протокол динамической настройки узла)

Любой компьютер в сети обязан иметь уникальный IP-адрес. В разных сетях адреса могут пересекаться, но в локальной или корпоративной – никак.

Представим ситуацию, когда у предприятия имеется 100-200 ПК, которые имеют выход в сеть. Перед администратором сети стоит непосильная задача: настроить каждую машину, постоянно следить за тем, чтобы не было повторяющихся адресов, так как начнется коллизия данных.

Компания Microsoft разработала технологию DHCP, которая позволяет динамически присваивать IP-адрес из диапазона доступных. Задача существенно упрощается: администратору требуется лишь один раз задать диапазон значений, а они сами будут подставляться по мере обращения компьютера к сети.

К слову, даже ваш ПК не имеет постоянного IP-адреса, если он не является статическим. Другими словами, если вы не задавали вручную IP-адрес, то ПК получает динамический адрес от DHCP-сервера. При перезагрузке роутера он может меняться.

Итоги по сетевым сервисам
1 – упрощают сетевые настройки, повышают безопасность и делают работу с Интернетом более простой с точки зрения человека
2 – DNS необходим для преобразования имени сайта в IP-адрес
3 – NAT позволяет обеспечить безопасность, маскируя ваш реальный IP-адрес
4 – DHCP автоматически подставляет адрес из заданного промежутка вариантов для устройств в случае их объединения в сеть

История развития web-приложений

Ознакомившись с общей структурой сети, ее сервисами, перейдем к web-приложениям и специфике их работы в этой среде. Вкратце опишем эволюцию этих сервисов.

Развитие веб-приложений напрямую связано с популяризацией Интернета. По мере появления новых технологий и инструментов совершенствовались и набирали популярность web-приложения.

Следует отметить, что первые web app появились до того, как Интернет стал массовым. Еще в 1987 году Ларри Уолл разработал Perl, серверный язык сценариев.

Самый первый сайт появился в 1991 году благодаря Тиму Бернерсу-Ли, который представил новую технологию World Wide Web, основанную на протоколе HTTP. Этот сайт существует до сих пор и каждый может с ним ознакомиться (http://info.cern.ch/WWW/TheProject).

Он представляет собой набор гипертекста со ссылками на основные понятия, направления развития ресурса и т.п. В сравнении с современными сетевыми проектами он выглядит просто и неказисто, но имеет историческое значение.

Долгое время web-приложения оставались простыми, так как не было инструментария и потребностей в их усложнении. Лишь только в начале 21 века они стали набирать популярность и к сегодняшнему моменту представлены огромным разнообразием.

Благодаря HTML (языку гипертекстовой разметки), CSS (каскадным таблицам стилей), Javascript (для оживления статики страниц), серверным технологиям (Apache, Nginx, AJAX) и языкам программирования (Python, Java, PHP и др.) стало возможным делать крупные массовые web-приложения, обладающие большим функционалом.

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

Этапы взаимодействия пользователя с функционалом веб-приложения

Этапы взаимодействия пользователя с функционалом веб-приложения

Понятие «сайт» в узком смысле связано со статическими страничками, содержимое которых жестко задано и выложено в сеть. Web-приложения ассоциируются с динамически генерируемым контентом в зависимости от запроса пользователя как с перезагрузкой, так и без перезагрузки страницы.

Для работы веб-приложений требуется клиентская часть (frontend), т.е. интерфейс, представление на экране пользователя, и серверная часть (для обработки запросов, записи в базы данных получаемых сведений).

Резюмируем
1 – Развитие web-приложений связано с эволюцией Интернета
2 – Совершенствование инструментов позволяет создавать сложные сетевые приложения на основе браузеров
3 – Веб-приложения имеют клиентскую (фронтэнд) и серверную (бэкэнд) части

Типы web-приложений

Хоть первые web-приложения и появились в конце 20 века, до сих пор нет единой классификации их видов. Это связано с тем, что последние 5-10 лет их развитие совершило революционный скачок, породив новые разновидности.

В общем виде все web-приложения можно разбить на 5 типов. Деление в некоторой степени условное, так как возможно сочетание нескольких типов в одном приложении.

Виды веб-приложений

1. Серверные web-приложения

Серверные web-приложения работают на удаленных компьютерах. Для их написания используют такие языки программирования: Python, Java, Ruby, PHP, C# и др. Они практически не требуют пользовательского вмешательства. Переход между страницами вызывает генерацию нового контента, который отображается у клиента.

Пример чисто серверного приложения – push-уведомления (от почтовых сервисов, мессенджеров, операторов связи) в смарфонах. Клиент получает информацию, что появилось новое сообщение, письмо, изменения в тарифе, не предпринимая для этого никаких действий.

2. Клиентские web-приложения

Клиентские приложения в чистом виде не требуют серверной части и обходятся возможностями JavaScript, используя в качестве оболочки браузер пользователя. Они не сохраняют результат своей работы дольше одной сессии.

Типичные примеры таких приложений: простые игры, браузерный фоторедактор.

3. SPA приложения

Single page application (SPA, одностраничные веб-приложения) реализуют сложный функционал в рамках одного окна браузера без перезагрузки. Динамическое обновление содержимого страницы достигается технологией AJAX (Asynchronous JavaScript and XML, асинхронный JavaScript и XML). В ответ на действия пользователя (прокрутка страницы, нажатие кнопок, заполнение формы, движение ползунка и т.п.) содержание страницы будет меняться.

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

В сочетании с фреймворками JavaScript (Angular, React, Vue) работа таких программ становится максимально плавной.

Практически все почтовые сервисы являются SPA.

4. MPA приложения

Multi Page Application (MPA, многостраничные web-приложения) применяются для построения сложных систем. В данном случае любые изменения в данных приводят к полной перезагрузке страницы. Когда имеется большой массив данных и контента, разнообразие представляемых сведений, MPA подходят лучше всего.

Несмотря на то, что они требуют больших объемов ресурсов для реализации и существенно дороже, другие виды web-приложений их заменить не могут. Однако тенденции показывают, что общая доля MPA постепенно снижается.
Стандартный пример такого приложения – интернет магазины с большим массивом товаров (Amazon, Citilink и т.п.).

5. PWA приложения

Progressive Web Application (PWA, прогрессивные web-приложения) – новый способ «подачи» web-сервисов, который максимально сближает их с обычным, привычным десктопным приложением, но на качественно более высоком уровне.

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

Главная область применения таких приложений – мобильные устройства. Пользователю больше не нужно входить на AppStore или PlayMarket, чтобы скачать программу – все сделает браузер автоматически (а еще создаст ярлык на рабочем столе, позволит работать с собой без доступа к сети и т.д.). Фактически, мы получаем аналог обычного приложения с тем же функционалом и множеством плюсов (для PWA не требуется лишняя память смартфона, ради которой приходится удалять фото и видео, они весят менее 1 Мб).

При появлении нового контента PWA отправляет пользователю push-уведомление. Следует признать, что в скором времени эти приложения смогут заменить практически все мобильные аналоги. Хоть технология и появилась в 2007 году в компании Apple, изначально она «не зашла» в силу слабой «прогретости» публики, зато ко второй половине 2016 года Google развил ее и сделал популярной.

PWA-версии приложений встречаются у многих компаний (тот же Aliexpress почти в 2 раза повысил конверсию от новых посетителей благодаря этому).

Перечислим основные преимущества и недостатки SPA, MPA и PWA приложений:

Подведем итог
1 – Общая классификация делит веб-приложения на преимущественно клиентские и преимущественно серверные
2 – Новый подход выделяет одностраничные (SPA), многостраничные (MPA) и прогрессивные (PWA) приложения
3 – В реальности возможны сочетания разных видов web-приложений

Принцип работы web-приложений

Для понимания функционирования web-приложения следует рассмотреть его основные структурные компоненты.

В сети устройства, имеющие выход в Интернет, принято называть узлами. Ими могут быть:

  1. Компьютеры,
  2. Мобильные аппараты
  3. Роутеры.

Чтобы описать работу сетевых приложений следует разделить узлы на серверы и клиенты. За серверную часть отвечает backend-разработка, а за клиентскую – frontend.

Компоненты web-приложения

Компоненты web-приложения

1. Клиентская часть (Frontend)

Frontend подразумевает создание визуальной части приложения, которая выполняет функции на стороне пользователя. Это все то, что посетитель сайта видит своими глазами, с чем он может напрямую взаимодействовать (от дизайна до отдельных элементов, на которые можно нажать, ввести текст, подвигать и т.д.).

Чтобы прочувствовать, что собой представляет frontend-разработка, достаточно в браузере открыть любой сайт. Так как мы в рамках курса будем использовать Google Chrome, то на открытом вами сайте нажмите правую кнопку мыши и выберите пункт «Посмотреть код» (Inspect). Откроются «Инструменты разработчика», где можно увидеть HTML-разметку сайта, а во вкладке Sources находятся таблицы стилей (CSS) и JavaScript сценарии. Обо всех этих элементах мы будем говорить в последующих уроках курса.

Здесь описываются цвета, картинки, таблицы и другие составляющие страницы, поведение при взаимодействии с ними.

2. Серверная часть (Backend)

Backend связан с тем, что пользователь визуально никак оценить не может и к чему не имеет доступа. Это логика работы приложения, осуществляемая на удаленном сервере.

Когда вы открываете страницу приложения, то от вас поступает запрос на сервер. Там он обрабатывается, а пользователю возвращается сгенерированная web-страница. Взаимодействия со страницей также ведут к формированию запросов на сервер (заполнение формы, просмотр увеличенной фотографии, поисковый запрос и т.д.).

Разработка серверной части приложений связана с рядом языков программирования (Java, Python, C#, C++), а упрощение такой разработки достигается использованием бэкэнд-фреймворков (Django) и веб-серверов (Nginx, Node.js и др.).

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

Следовательно, используя web-приложение мы имеем дело с клиентской и серверной частями, упрощенное взаимодействие которых показано на рисунке.

Взаимодействие серверной и клиентской частей веб-приложения

Взаимодействие серверной и клиентской частей веб-приложения

От клиента через браузер поступает запрос на сервер (для этого используется HTTP-протокол). Сервер получает этот запрос, обрабатывает его, достает из базы данных соответствующие сведения и отправляет обратно клиенту.

На стороне клиента загружается страница, которая представляется в необходимом виде при помощи HTML, JS и CSS.

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

Чтобы сервер и клиент понимали друг друга, применяется HTTP-протокол. В последнее время в целях безопасности используется расширение HTTPS, которое при помощи криптографических протоколов TLS шифрует данные. Это необходимо для исключения возможности перехвата сведений сторонними лицами или устройствами, которым они не адресованы.

Подведем итог
1 – Сетевые узлы делятся на серверы (связаны с backend-разработкой) и клиенты (frontend-разработка)
2 – Для общения клиента и сервера применяется HTTP-протокол
3 – На стороне клиента используются HTML, CSS, JavaScript
4 – На серверной стороне используются серверные языки (Python, C#, PHP), веб-серверы (Nginx, Node.js) и фреймворки (Django)

    HTTP-протокол

    Уровень приложения является самым верхним в модели TCP/IP. Работа web-приложений связана с протоколом HTTP данного уровня. Для лучшего понимания функционирования сетевых приложений необходимо детально рассмотреть HTTP-протокол, его специфику, используемые запросы.

    HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) изначально предназначался для передачи данных в виде HTML-документов, а сегодня отвечает за передачу любых данных в клиент-серверном приложении.

    Программное обеспечение для работы с HTTP-протоколом делят на 3 категории:
    — серверы (обрабатывают запросы);
    — клиенты (отправляют запросы, потребляют информацию);
    — прокси (транспортные службы).

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

      HTTP-протокол имеет несколько версий. Наиболее ходовой в нынешнее время считается HTTP/1.1 (в этой редакции протокола введен режим постоянного соединения TCP). HTTP/2 введен в обиход в 2015 году и позволяет уплотнять канал (передавать большее количество запросов при имеющихся мощностях). В 2019 году появилась третья версия протокола, предполагающая замену TCP на UDP в роли основного транспортного протокола.

      Между клиентом и сервером передаются HTTP-сообщения (HTTP-запросы и HTTP-ответы). Их структура всегда одинакова (содержание может отличаться) и представлена в указанном на рисунке порядке

      Структура HTTP-сообщения

      1. В стартовой строке указывается тип запроса, адрес ресурса и версия протокола, код состояния и др.
      2. В заголовках содержатся сведения о теле сообщения, применяемые параметры передачи.
      3. В теле сообщения передаются сами данные, отделенные от заголовков пустой строкой.

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

      Полезно знать
      Коды состояния – часть ответов сервера, содержащая трехзначное число и поясняющую фразу. Их существует 5 классов:
      — информационные (1хх)
      — говорящие об успехе передачи (2хх)
      — перенаправления (3хх)
      — ошибки на стороне клиента (4хх)
      — ошибки на стороне сервера (5хх)
      Наиболее известные: 404 (нет такой страницы), 200 (все хорошо, ошибок нет), 503 (не удалось получить доступ к сервису).

        Чтобы сервер понял, чего именно хочет клиент, используются HTTP-запросы (методы). Изначально применялся только один метод – GET, но сегодня их список намного шире.

        Чаще всего на практике используются методы GET, POST, HEAD. Рассмотрим подробнее типы запросов GET и POST, так как с ними мы сталкиваемся ежедневно как пользователи Интернета.

        Типы запросов: GET, POST, PUT, PATCH, DELETE

        Типы запросов: GET, POST, PUT, PATCH, DELETE

        1. GET-запрос

        Метод GET предназначен для получения данных целевого ресурса. Например, каждый раз при входе на сайт вы, в том числе, отправляете GET-запрос.

        Как правило, в GET запросе отсутствует тело запроса. Но зато помимо адреса ресурса в GET запросе могут передаваться уточняющие параметры. Они передаются URI целевого ресурса после символа ?. Параметры представляют собой пары <ключ>=<значение>. Сами параметры разделяются символом &.

        Пример передачи параметров:

        GET /path/resource?key1=value1&key2=value2
        Host: example.com

        А вот так будет выглядеть адрес GET запроса на Yandex, когда в поисковой строке мы введем слово python:

        GET /search/?lr=23&clid=2054711&text=python
        Host: yandex.ru

        Полезно знать
        Более подробно ознакомиться с параметрами запросов, заголовками и ответами сервера можно в «Инструментах разработчика» в браузере Google Chrome (в закладке Сеть).

          А вот пример ответа на GET запрос:

          Ответ на GET запрос. Пример 3.

          Request URL: https://yastatic.net/s3/web4static/_/v2/GkDs.svg
          Request Method: GET
          Status Code: 200 (from disk cache)
          User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

          Что мы тут видим: запрошена картинка в формате svg, код ответа – 200 (картинка успешно получена, взята из кеша), также представлены сведения о браузере и системе. В строке с описанием User-Agent содержится следующая информация:
          — Название и версия браузера.
          — Язык.
          — Версия операционной системы.
          — Программное обеспечение, установленное на используемом устройстве.
          — Тип устройства, с которого пользователь зашел на сайт.

          И еще один пример — получаем текущую погоду для города Москва с сайта OpenWeatherMap:

          GET запрос и ответ. Пример 4.

          #Запрос
          GET http://api.openweathermap.org/data/2.5/weather?q=moscow&APPID=2ab106523eb046092f91d4c4c22af3f1
          APPID: 2ab106523eb046092f91d4c4c22af3f1
          User-Agent: PostmanRuntime/7.22.0
          Postman-Token: 08c4fad2-406a-4e9f-9689-8351baa4abbd
          Host: api.openweathermap.org
          Accept-Encoding: gzip, deflate, br
          Connection: keep-alive
          
          #Ответ
          Status: 200
          Server: openresty
          Date: Mon, 23 Nov 2020 12:29:47 GMT
          Content-Type: application/json; charset=utf-8
          Access-Control-Allow-Methods: GET, POST
          {
          "coord": {
          "lon": 37.62,
          "lat": 55.75
          },
          "weather": [
          {
          "id": 804,
          "main": "Clouds",
          "description": "overcast clouds",
          "icon": "04d"
          }
          ],
          "base": "stations",
          "main": {
          "temp": 273.65,
          "feels_like": 269.6,
          "temp_min": 273.15,
          "temp_max": 274.15,
          "pressure": 1009,
          "humidity": 98
          },
          "visibility": 10000,
          "wind": {
          "speed": 3,
          "deg": 230
          },
          "clouds": {
          "all": 90
          },
          "dt": 1606134332,
          "sys": {
          "type": 1,
          "id": 9029,
          "country": "RU",
          "sunrise": 1606108876,
          "sunset": 1606137065
          },
          "timezone": 10800,
          "id": 524901,
          "name": "Moscow",
          "cod": 200
          }

          2. POST-запрос

          Метод POST позволяет отправлять на сервер существенно больше данных, чем предыдущий. Он более безопасен (никто не увидит в адресной строке отсылаемые параметры), может отправлять не только текст, но и файлы любых форматов.

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

          В отличие от GET в POST запросе данные передаются в теле. Тело, как правило, представлено в формате JSON или XML. Приведем пример POST-запроса.

          Сайт https://petstore.swagger.io/ позволяет создавать товары в магазине домашних питомцев. С помощью POST запроса создадим домашнее животное в магазине:

          POST https://petstore.swagger.io/v2/pet
          Content-Type: application/json
          APPID: 
          User-Agent: PostmanRuntime/7.22.0
          Postman-Token: 08c4fad2-406a-4e9f-9689-8351baa4abbd
          Host: petstore.swagger.io
          Accept-Encoding: gzip, deflate, br
          Connection: keep-alive
          
          #Тело запроса:
          {
          "id": 333,
          "category": {
          "id": 0,
          "name": "string"
          },
          "name": "smartiqa_cat",
          "photoUrls": [
          "string"
          ],
          "tags": [
          {
          "id": 0,
          "name": "string"
          }
          ],
          "status": "available"
          }

          Ответ на POST запрос. Пример.

          Status: 200
          Date: Mon, 23 Nov 2020 12:29:47 GMT
          Content-Type: application/json; charset=utf-8
          Access-Control-Allow-Methods: GET, POST, DELETE, PUT
          Server:Jetty(9.2.9.v20150224)
          {
          "id": 333,
          "category": {
          "id": 0,
          "name": "string"
          },
          "name": "smartiqa_cat",
          "photoUrls": [
          "string"
          ],
          "tags": [
          {
          "id": 0,
          "name": "string"
          }
          ],
          "status": "available"
          }

          Для закрепления материала попробуйте проделать аналогичную операцию.

          Таким образом, HTTP-протокол на сегодня является наиболее часто используемым в сети. Более 60% всех сетевых сообщений передается с его помощью.

          При автоматизации тестирования работы web-приложений очень часто используются HTTP-запросы. При взаимодействии программ они передают данные в формате JSON или XML, используя HTTP-протокол. Понимание работы сети и ее протоколов позволят тестировщику быстрее находить уязвимости в коде и принимать решения по их исправлению.

          Подведем итог
          1 – HTTP-протокол используется для передачи данных в клиент-серверных приложениях
          2 – Указание метода запроса позволяет серверу понять, как ему себя вести (выдать данные, поменять данные, сохранить сведения, удалить ресурс)
          3 – Самые часто используемые на практике запросы – GET и POST
          4 – При автоматизации тестирования приходится часто сталкиваться с HTTP-запросами

            ПРАКТИЧЕСКИЙ БЛОК

            Вопросы по теме

            Как упоминалось, IP адрес представляет собой четыре восьмибитных числа, разделенных точкой. Максимальное двоичное число из 8 знаков – 11111111, что в десятичной системе счисления представляет 255. Следовательно, ни одно из чисел не может превосходить 255, тогда как в примере имеется 311.

            В качестве примера приведем IP-адрес одного сайта. Для остальных все выглядит аналогично.

            Команда в консоли

            ping vk.com

            Результат работы

            Обмен пакетами с vk.com [93.186.225.208] с 32 байтами дан
            Ответ от 93.186.225.208: число байт=32 время=64мс TTL=56
            Ответ от 93.186.225.208: число байт=32 время=70мс TTL=56

            MPA вариант интернет-магазина подходит в случае наличия большого разнообразия товаров, а SPA-версия удобнее тогда, когда предлагает несколько товаров (например, инфопродукт).

            GET запрос отправляется при загрузке отдельных страниц социальной сети. POST запросы возникают при отправке сообщений, загрузке фотографий и публикации постов.

            Как вам материал?

            Читайте также

            BEA Systems

               Сервисы удаленного вызова процедур

               Сервисы сообщений

            Borland

            Hewlett-Packard

            IBM

               Основные продукты

               Другие продукты

            Microsoft

               Семейство продуктов Microsoft

            Oracle

               Средства разработки Oracle 9i

               Oracle Web Services Business Suites

            Sun Microsystems

               Solaris

               Java 2 Platform

                  Java XML Pack

               Java Web Services Developer Pack

               iPlanet

               Forte Development Tools

            Sybase

               Разработка

               Внедрение

               Доступ

               Управление

            В обзоре «Технологии для Web-сервисов», публикуемом в этом
            номере, мы ознакомились с технологиями, лежащими в основе Web-сервисов. В данной
            статье мы рассмотрим, каким образом ведущие компании поддерживают эти технологии
            и что они предлагают в качестве платформ и продуктов для создания, выполнения
            и использования Web-сервисов.

            BEA Systems

            Компания
            BEA предлагает создание Web-сервисов на платформе J2EE с использованием протокола
            SOAP. J2EE-приложения реализуют EJB и JMS как Web-сервисы. Сервисы используют
            WSDL как язык описания сервисов и обеспечивают доступ к компонентам посредством
            протокола SOAP 1.1 и транспортного уровня на основе HTTP. Для интеграции с партнерами
            применяются реестры на основе UDDI. В отличие от других компаний, BEA (и Borland)
            для управления бизнес-транзакциями между предприятиями использует Business Transaction
            Protocol (BTP). Этот протокол не зависит от стека и может быть реализован с
            использованием таких стандартов, как ebXML или SOAP.

            Компания BEA четко выделяет два типа Web-сервисов — сервисы удаленного вызова
            процедур (RPC-based Web Services) для поддержки простых Web-сервисов и сервисы
            сообщений (Message-based Web Services) для поддержки асинхронных моделей коммуникаций,
            которые требуются для создания корпоративных Web-сервисов. Поддержка обоих типов
            Web-сервисов реализуется на платформе BEA WebLogic Enterprise Platform — это
            показано на рис. 1.

            Сервисы удаленного вызова процедур

            К этому типу Web-сервисов относятся сервисы, основанные на удаленном вызове
            процедур и реализуемые с использованием EJB без сохранения состояния (Stateless
            EJB). В этом случае клиентское приложение получает доступ к удаленному объекту.
            Взаимодействие между клиентом и Web-сервисом осуществляется на основе специфичных
            для сервиса интерфейсов. Вызывая Web-сервис, клиент посылает ему параметры,
            которые вызывают соответствующие методы сервиса, а сервис возвращает клиенту
            определенные данные. Поскольку такое взаимодействие предполагает осуществление
            синхронных операций между клиентом и сервером (клиент посылает запрос и ожидает
            ответа, прежде чем перейти к выполнению каких-либо других действий), сервисы
            удаленного вызова процедур напоминают традиционные распределенные объектные
            модели типа RMI или DCOM.

            Сервисы сообщений

            Как мы отмечали выше, сервисы сообщений используются для создания корпоративных
            Web-сервисов. Такие сервисы базируются на документах, а не на специфичных для
            сервиса интерфейсах. Вызывая сервис сообщений, клиент отсылает документ (например,
            заказ на приобретение продуктов), а не дискретный набор параметров. Web-сервис
            принимает документ, обрабатывает его и может даже не отсылать результирующее
            сообщение. Отсутствие в данном сценарии тесной связи между запросом и ответом
            дает определенные преимущества по сравнению с сервисами удаленного вызова процедур.

            Платформа для создания и выполнения Web-сервисов, предлагаемая фирмой BEA, называется
            BEA WebLogic E-Business Platform и содержит следующие ключевые компоненты:

            • BEA WebLogic Server — сервер приложений, входящий в лидирующую тройку
              продуктов на рынке. Представляет собой основу платформы BEA WebLogic E-Business
              Platform и обеспечивает доступ и внедрение простых Web-сервисов. В настоящее
              время предусмотрена поддержка таких стандартов, как XML, SOAP, UDDI и WSDL;
            • BEA WebLogic Integration — открытый и расширяемый продукт, позволяющий
              интегрировать партнеров через Web и создавать комплексные Web-сервисы с поддержкой
              транзакций и защиты информации, работающие на основе стандартов ebXML и BTP;
            • BEA WebLogic Personalization Server — обеспечивает настройку Web-сервисов
              под конкретных клиентов в зависимости от пользовательских настроек, бизнес-правил
              или других критериев;
            • BEA WebLogic Workshop — средство разработки Web-сервисов на платформе
              BEA WebLogic E-Business Platform.

            Создание Web-сервисов с помощью интегрированной среды WebLogic Workshop облегчается
            тем, что данная среда предоставляет обширный набор визуальных средств для разработки
            дизайна сервисов. Использование специальных компонентов обеспечивает доступ
            к таким ресурсам, как базы данных, компоненты EJB, а также к другим Web-сервисам
            и существующим приложениям. В состав продукта входят следующие компоненты: ServiceControl,
            TimerControl, EJBControl и JMSControl. Логика работы сервиса сохраняется в JWS-файле,
            содержимое которого графически отображается в режиме дизайна (рис.
            2).

            Приложения, создаваемые с помощью WebLogic Workshop, полностью соответствуют
            спецификации J2EE и не требуют внедрения на сервер приложений BEA WebLogic Server
            — достаточно любого сервера приложений, поддерживающего стандарт JWS. В состав
            WebLogic Workshop входит версия BEA WebLogic Server, поэтому Web-сервисы безо
            всяких проблем внедряются как файлы Enterprise Archive (EAR).

            Завершая рассмотрение продуктов фирмы BEA Systems, отметим, что компания хорошо
            позиционирована на рынке, предлагает один из ведущих серверов приложений, имеет
            четкую стратегию по поддержке Web-сервисов и связанных с ними технологий и следует
            ей, разумно подходя к приобретению продуктов сторонних компаний и развивая собственные
            продукты.

            Дополнительную информацию по продуктам фирмы BEA можно получить по адресу:
            http://www.beasys.com/products/index.shtml.

            Borland

            Фирму
            Borland можно смело назвать пионером в области разработки средств создания Web-сервисов
            для различных платформ. Так, Delphi 6 позволяет создавать и использовать SOAP
            и WSDL на платформе Windows, Borland Kylix — на платформе Linux, а JBuilder
            — на платформе Java.

            Продукты компании Borland можно разделить на три категории: разработка, развертывание
            и управление. К первой категории относятся:

            • Borland Enterprise Studio — это полная платформа для моделирования, разработки
              и внедрения решений для бизнеса и электронной коммерции. Продукт выпускается
              в двух вариантах: Borland Enterprise Studio for Java (включает JBuilder) и
              Borland Enterprise Studio for Windows (включает Delphi);
            • C++Builder — популярное средство для разработки Windows-приложений на
              языке C++; в версии 6 позволяет разрабатывать Web-сервисы и приложения на
              их основе. C++Builder 6 обеспечивает поддержку клиентов Web-сервисов, использующих
              как SOAP encoding, так и Document Literal style. Последний входит в состав
              Microsoft .NET Web Services. Предоставляя набор высокоуровневых компонентов
              и визардов, в том числе автоматическую публикацию WSDL-документов для Web-сервисов
              в режиме исполнения и генерацию кода на основе WSDL (WSDL Importer), C++Builder
              6 позволяет разработчикам легко адаптировать существующие приложения для работы
              в режиме Web-сервисов и доступа к ним как во внутрикорпоративной сети, так
              и через Web;
            • Delphi 6 — обеспечивает быструю разработку приложений с использованием
              технологий CORBA и Web Services для платформы Windows. Необычайная легкость
              создания Web-сервисов позволяет быстро трансформировать существующие приложения
              в Web-систему. Интегрированная поддержка Apache дает возможность быстро создавать
              динамические Web-приложения с доступом к базам данных. Совместимость с Borland
              Kylix 2 обеспечивает кросс-платформенную разработку (в том числе многозвенных
              систем на основе CORBA IIOP и SOAP) без ущерба функциональности. Возможность
              доступа к компонентам Enterprise JavaBeans, развернутым на Borland AppServer,
              и наличие высокоуровневых средств работы с XML позволяют создавать решения
              корпоративного уровня;
            • JBuilder — включает наиболее полный набор средств визуальной разработки
              для создания приложений на платформе Java 2/J2EE 1.3. JBuilder 6 удовлетворяет
              практически всем возможным требованиям разработчиков конечных решений, позволяя
              интегрировать Web- и корпоративные приложения и обеспечивая группы разработчиков
              удобной и масштабируемой средой разработки. Визуальные инструменты и мастера
              упрощают и ускоряют разработку приложений. JBuilder 6 позволяет вести разработку
              на нескольких платформах, включая Windows, Linux, Solaris и Mac OS X. В настоящее
              время JBuilder занимает более 60% рынка коммерческих средств разработки на
              платформе Java;
            • Kylix — обеспечивает быструю разработку приложений с применением технологий
              CORBA и Web Services для платформы Linux. Уникальная легкость создания Web-сервисов
              дает возможность оперативно трансформировать существующие приложения в Web-систему.
              Интегрированная поддержка Apache позволяет быстро создавать динамические Web-приложения
              с доступом к базам данных. Совместимость с Borland Delphi 6 обеспечивает кросс-платформенную
              разработку без ущерба функциональности, включая разработку многозвенных систем
              на основе CORBA IIOP и SOAP. Возможность доступа к компонентам Enterprise
              JavaBeans, развернутым на Borland AppServer, и наличие высокоуровневых средств
              работы с XML позволяют создавать решения корпоративного уровня.

            Для развертывания приложений Borland предлагает Borland e-business platform
            — основу для создания полноценной информационной инфраструктуры современного
            предприятия. Ориентированность на стандарты, уникальная гибкость и масштабируемость
            — залог успеха проектов, построенных на базе данных технологий. К этой категории
            относятся следующие продукты:

            • Borland Enterprise Server — первый интегрированный комплекс средств на
              основе новейших промышленных стандартов CORBA 2.4 и J2EE 1.3. Borland Enterprise
              Server, развивающий функциональность AppServer и VisiBroker, занимает ведущие
              позиции в области инфраструктурного программного обеспечения для телекоммуникационного
              и банковско-финансового секторов, в которых масштабируемость, высокая скорость
              обработки транзакций и доступность в режиме 24Ѕ7 являются критически важными
              требованиями;
            • Borland Enterprise Server AppServer Edition позволяет разработчикам сконцентрировать
              свои усилия на создании прикладной логики в виде компонентов EJB (Enterprise
              JavaBeans). Лежащее в основе AppServer инфраструктурное ядро VisiBroker добавляет
              к богатству функциональности J2EE мощь коммуникативных средств CORBA IIOP
              (Internet Inter-ORB Protocol), удовлетворяющих требованиям таких новых и актуальных
              стандартов, как CORBA Portable Object Adapter (POA), Object-by-value (OBV
              — передача объектов по значению) и RMI-over-IIOP;
            • Borland Enterprise Server Web Edition включает Web-сервер Apache и Web-контейнер
              Tomcat, которые были усовершенствованы Borland (в Apache встроен IIOP plug-in,
              конвертирующий HTTP-запросы в IIOP). Также в поставку BES Web Edition включена
              база данных JDataStore, которая не только удовлетворяет стандартные потребности
              разработчиков в области СУБД, но и позволяет осуществлять кэширование сессий.
              Borland Web Engine, интегрирующий Borland Web Server и Borland Web Container,
              построен на базе ядра VisiBroker, при помощи которого происходит управление
              балансом загрузки, а также обеспечивается отказоустойчивость среды развертывания
              сервлетов/JSP, Web-приложений и Web-сервисов, созданных с использованием Delphi;
            • Borland InterBase 6 — SQL-сервер баз данных, объединяет простоту использования,
              низкие затраты на сопровождение и мощность систем корпоративного уровня. Компания
              Borland гарантирует, что InterBase 6 совмещает силу мощной, апробированной
              архитектуры с развитыми технологиями, необходимыми для успеха прикладных систем.

            И наконец, для управления и мониторинга прикладной инфраструктуры предприятия
            Borland предлагает AppCenter — уникальное средство управления и мониторинга
            объектных распределенных систем. Borland AppCenter 4.1 включает развитые инструменты
            управления объектами CORBA и компонентами Enterprise Java Beans (EJB), что делает
            его незаменимым средством для обеспечения жизненного цикла современных информационных
            систем. Интеграция AppCenter 4 с VisiBroker 4.x и Borland AppServer 4.x (включая
            версию 4.5.1) обеспечивает создание единой высоконадежной информационной среды
            предприятия.

            Разработка Web-сервисов средствами Delphi 6, C++ Builder и Kylix базируется
            на трех основных компонентах:

            • BizSnap — для создания Web-сервисов на основе XML и SOAP. BizSnap упрощает
              обмен, трансформацию и манипуляцию XML-документами, обеспечивая гибкость и
              расширяемость бизнес-приложений, приводя их в готовность к использованию в
              электронном бизнесе новой волны;
            • WebSnap — для создания и отладки Web-приложений. Инструменты, входящие
              в состав WebSnap, например отладочный Web-сервер, упрощают отладку и тестирование
              приложений. Возможность плотной интеграции приложений WebSnap в корпоративные
              Web-сайты и порталы, разработанные с использованием таких известных средств,
              как DreamWeaver и FrontPage, а также поддержка серверных сценариев на JavaScript,
              VBScript и других языках позволяют вам задействовать существующие наработки
              в области Web-приложений;
            • DataSnap — для создания соединений с базами данных для приложений и сервисов
              через XML, DCOM или CORBA. DataSnap оптимизирует число соединений и потоки
              данных между клиентами и серверами баз данных за счет централизации доступа
              к данным и их обновления во всех процессах и приложениях электронного бизнеса,
              а также позволяет масштабировать приложения в зависимости от изменения объемов
              обрабатываемых данных.

            Дополнительную информацию о продуктах фирмы Borland можно получить по адресу:
            http://www.borland.com/.

            Hewlett-Packard

            Нewlett-Packard
            была первой компанией, которая стала заниматься исследованиями в области Web-сервисов
            еще в 1995 году. В 1999 году компания объявила о платформе E-speak, ставшей
            прообразом современной линейки продуктов фирмы, но до марта 2001 года никакой
            видимой активности в этом направлении не проявляла. В настоящее время объявлено
            о большом наборе программных продуктов под общим названием NetAction. Этот набор
            можно разделить на следующие основные компоненты:

            • HP Netaction Internet Operating Environment (IOE) — интегрированная платформа
              для построения и внедрения решений, позволяющая сконцентрироваться на бизнес-проблемах,
              а не на разработке программ;
            • HP Opencall — платформа для разработки сервисов, связанных с доставкой
              данных, голосовой информации и т.п.;
            • HP Chai — полная платформа для доставки Web-сервисов на различные устройства.
              Представляет собой настраиваемую Java-среду для доступа к Web, а также модульные
              блоки Embedded Linux.

            Взаимодействие этих компонентов, а также ряда других продуктов фирмы показано
            на диаграмме (рис. 3).

            Рассмотрим основные компоненты HP Netaction IOE более подробно:

            • HP Application Server — сервер приложений «нового поколения» с сервис-ориентированной
              архитектурой и поддержкой подключаемых сервисов;
            • HP Application Server Resilient Edition — версия сервера приложения для
              поддержки непрерывной работы, сообщений, транзакций и других технологий для
              обеспечения работоспособности Web-сервисов;
            • HP Process Manager — средство управления процессами, позволяющее графически
              определять бизнес-процессы и автоматизировать их выполнение;
            • HP Process Manager, Interactive Edition — средство быстрой (посредством
              графических средств моделирования) разработки композитных приложений для основанных
              на базе Web или мобильных сервисов;
            • HP Total-e-Transactions — средство управления транзакциями для J2EE-приложений;
            • HP Message Service — средство поддержки J2EE Java Message Service;
            • HP Web Services Registry — позволяет потребителям создавать и управлять
              корпоративными реестрами и доступом к Web-сервисам. Включает HP Registry Composer
              — графическое средство для регистрации и поиска сервисов как в Web-, так и
              в корпоративных реестрах;
            • HP Total-e-Syndication — средство автоматизации доставки наполнения Web-сервисов,
              интегрирующееся с другими продуктами фирмы;
            • HP Mobile Portal Solution — средство для доставки сервисов и наполнения
              на мобильные устройства;
            • HP Web Services Transactions — средство для управления транзакциями, состоящее
              из трех компонентов: координатора транзакций, сервера транзакций и клиентских
              библиотек, используемых для инициализации транзакций;
            • HP Web Services Platform — основанная на стандартах открытая архитектура
              для разработки, внедрения, регистрации, поиска и потребления Web-сервисов,
              в том числе программных средств и утилит для реализации Java-объектов в виде
              Web-сервисов. Архитектура HP Web Services Platform показана на рис.
              4.

            Для разработки сервисов предлагается использование средства HP Service Composer,
            которое предоставляет графический интерфейс для создания WSDL-интерфейсов для
            Java-объектов и поддерживает автоматическое внедрение Web-сервисов на сервер
            приложений HP Application Server.

            Hewlett-Packard занимает собственную нишу на рынке средств создания Web-сервисов,
            сравнимую, может быть, с нишами, занимаемыми IBM и Sun, — компания обладает
            и аппаратными платформами для выполнения Web-сервисов, и программными платформами
            для внедрения и управления сервисами, а при успешном слиянии с Compaq у Hewlett-Packard
            появятся и консалтинговые сервисы.

            Дополнительную информацию о поддержке Web-сервисов можно получить по адресам:
            http://www.hp.com/go/webservices/,
            http://www.hp.com/go/webservicestools/
            и http://www.hp.com/go/middleware/.

            IBM

            Хотя
            IBM и не была в числе первых компаний, сформулировавших свое видение Web-сервисов,
            она фактически является лидером (как и с Microsoft) по продвижению стандартов
            и технологий, связанных с Web-сервисами. В настоящее время компания IBM не только
            предлагает широкий спектр продуктов для создания и внедрения Web-сервисов (от
            WebSphere Suite до средств хостинга Web-сервисов, поддержки Web-сервисов на
            уровне СУБД DB2 — в семействе продуктов Tivoli и Lotus), но и имеет определенную
            политику в отношении развития самой концепции Web-сервисов и активно участвует
            в ее продвижении, сотрудничая с другим лидером — Microsoft.

            Говоря о предлагаемых IBM продуктах для создания и внедрения Web-сервисов, следует
            в первую очередь отметить такие средства, как WebSphere Studio для создания
            сервисов на языке Java, сервер приложений WebSphere Application Server, MQ Series
            для управления сообщениями для объединения систем, включая поддержку SOAP и
            Web-сервисов на уровне СУБД DB2.

            Основные продукты

            Из обширного семейства продуктов фирмы IBM можно выделить две линейки, представляющие
            прежде всего интерес для тех, кто собирается создавать Web-сервисы: семейство
            продуктов WebSphere Studio и семейство продуктов WebSphere Application Server:

            • WebSphere Studio — это набор средств для создания Web-сервисов. Существенно
              то, что данный продукт рассчитан не только на разработчиков, но и на Web-дизайнеров,
              художников и Web-мастеров, которые могут принимать участие в создании сервисов.
              WebSphere Studio включает такие средства, как Applet Designer — визуальное
              средство для создания Java-аплетов, WebArt Designer — для создания графических
              элементов и Animated Gif Designer — для создания анимированных GIF-изображений.
              Помимо этого отметим наиболее важные компоненты, входящие в состав WebSphere
              Studio: WebSphere Studio Site Developer — средство для создания и публикации
              Web-сервисов с поддержкой основных Web-стандартов, WebSphere Studio Application
              Developer — полный набор средств, включенных в WebSphere Studio Site Developer,
              а также средства мониторинга и тестирования сервисов;
            • WebSphere Application Server — этот серверный продукт обеспечивает поддержку
              всех основных стандартов Web-сервисов, интегрируется с WebSphere Studio, облегчая
              таким образом создание и внедрение Web-сервисов. Кроме того, в состав WebSphere
              Application Server включены средства интеграции с другими продуктами фирмы
              IBM — например Lotus Domino и WebSphere Commerce Suite. WebSphere Application
              Server — один из первых серверов приложений, совместимый со спецификацией
              J2EE 1.3.

            По данным Giga Information Group, платформа WebSphere является наиболее важной
            для создания Web-сервисов — ее указали 33% опрошенных. Второй по значимости
            оказалась Microsoft .NET, а третьей — J2EE с дополнительными технологиями поддержки
            Web-сервисов (рис. 5).

            Другие продукты

            Среди огромного числа продуктов, предлагаемых IBM, есть такие, которые так или
            иначе связаны с Web-сервисами. Наиболее важными из них являются следующие:

            • VisualAge for Java — визуальное средство разработки на языке Java, интегрируемое
              с семейством продуктов WebSphere Studio;
            • DB2 — реляционная база данных, поддерживающая основные стандарты Web-сервисов,
              в том числе XML, UDDI и SOAP. DB2 при использовании совместно с DB2 XML Extender
              позволяет извлекать и хранить данные через Web-сервисы;
            • Web Services Hosting Technology — семейство продуктов для управления Web-сервисами,
              позволяющее анализировать использование сервисов и использовать различные
              модели оплаты;
            • Web Services Gateway — набор различных функций защиты доступа, включая
              поддержку аутентификации пользователей;
            • Web Services Toolkit — набор средств для разработки Web-сервисов.

            Web Services Toolkit, бесплатно распространяемый IBM набор средств для разработки
            Web-сервисов, представляет собой реализацию архитектуры Web-сервисов, описанную
            в документе «Web Services Architecture Overview», доступном на Web-сайте фирмы
            IBM. Этот набор содержит следующие компоненты:

            • клиентская часть:
              • UDDI4J API для управления UDDI-реестрами (как корпоративными, так
                и расположенными в Internet) через функции Save, Delete, Find и Get;
              • Services Registry API для управления UDDI-реестрами через функции
                Publish, Unpublish и Find;
            • спецификации WSDL 1.1, Web Services Flow Language (WSFL), WS-Inspection
              и HTTPR (Reliable HTTP);
            • набор средств для разработки Web-сервисов:
              • утилиты на базе AXIS, включая утилиту Java2WSDL для генерации WSDL-документов
                на основе Java-кода и утилиту WSDL2Java для генерации Java-прокси-кода
                на основе WSDL-документа;
              • Web Services Toolkit Configuration Tool для настройки и конфигурации
                Web Services Toolkit;
              • Utility Web Services Portal Tool для управления пользователями Web-сервисов,
                включенными в состав Utility Web Services;
            • набор Web-сервисов (Utility Web Services), предоставляющих набор функций,
              которые можно использовать при создании бизнес-приложений:

              • Notification;
              • Common Data;
              • User Identity;
              • Metering;
              • Accounting;
              • Contract.
            • примеры использования Utility Web Services;
            • набор программных средств для развертывания Web-сервисов, включая WebSphere
              Application Server Micro Edition и UDDI-реестр;
            • утилита WSDLdoc для автоматической генерации документации на основе WSDL-файлов;
            • набор Java-классов для программного управления WSDL-документами (WSDL4J);
            • SOAPConnect for LotusScript — средство, позволяющее приложениям Lotus
              Domino и Lotus Notes использовать Web-сервисы;
            • UDDI4J для управления UDDI-реестрами из Java-приложений.

            Архитектура Web Services Toolkit представлена на рис. 6.
            Здесь показаны основные компоненты Web Services Toolkit. Средства создания Web-сервисов,
            расположенные в нижней части справа, включают утилиты для обнаружения и публикации
            сервисов, а также для создания сервисов на основе существующих Java-приложений.
            Компоненты времени исполнения разделяются на серверные и клиентские компоненты.
            К серверным компонентам относятся UDDI-реестр для создаваемых Web-сервисов,
            набор Utility Web Services и примеры использования сервисов. Клиентские компоненты
            расположены в приложениях, которые обращаются к серверным компонентам, и поддерживают
            Java-интерфейсы, позволяющие приложениям осуществлять следующие операции:

            • публиковать и находить Web-сервисы, непосредственно обращаясь к UDDI (UDDI4J);
            • публиковать и находить Web-сервисы через WSDL-документы (WSDL-прокси);
            • обращаться к Web-сервисам через SOAP.

            Отметим, что Web Services Toolkit не является коммерческим и его задача заключается
            в предоставлении набора технологий для широкого использования разработчиками.
            Ряд этих технологий впоследствии может войти в новые версии коммерческих продуктов
            типа WebSphere Studio Application Developer, WebSphere Application Server или
            в другие продукты IBM, Tivoli или Lotus (см. http://www.lotus.com/developer/).

            В будущих версиях Web Services Toolkit планируется реализовать следующие компоненты:
            дополнительная поддержка защиты, расширения для управления сервисами, поддержка
            WorkFlow, поддержка новых версий Apache AXIS, предоставление среды для создания,
            публикации и поиска сервисов, улучшение интеграции с UDDI-реестрами.

            Дополнительная информация о Web Services Toolkit доступна на Web-сайте по адресу:
            http://www.alphaworks.ibm.com/tech/webservicestoolkit/.

            Microsoft

            Мicrosoft
            играет активную роль на рынке средств создания и потребления Web-сервисов и
            совместно с IBM участвует практически во всех связанных с этой технологиях новациях.
            Практически нет ни одного стандарта (начиная со стандарта языка XML), в принятии
            которого не была бы заметна роль Microsoft. Примером заинтересованности Microsoft
            в лидерстве на рынке Web-сервисов может служить факт создания совместно с IBM
            в феврале 2002 года ассоциации Web Services Interoperability Organization (WS-I,
            http://www.ws-i.org/), которая к настоящему
            времени насчитывает более 100 членов.

            В качестве платформы для Web-сервисов Microsoft предлагает .NET Framework и
            набор корпоративных серверных приложений (семейство .NET Enterprise Servers).
            На сегодняшний день .NET представляет собой наиболее полную реализацию технологий
            Web-сервисов. Для разработки и потребления Web-сервисов Microsoft предлагает
            Visual Studio .NET — визуальную среду, поддерживающую все языки программирования
            и интегрирующуюся с существующими серверами компании.

            Полнота реализации фирмой Microsoft технологий Web-сервисов подтверждается
            данными исследований, проведенных компанией Gartner, Inc. (см. «Web Services
            Major Vendors», D. Smith, August 2001 — рис. 7).

            Продукты Microsoft для создания Web-сервисов подразделяются на пять основных
            категорий — .NET Experiences, клиенты, XML Web-сервисы, утилиты и серверы:

            • XML Web-сервисы — представляют собой строительные блоки компонентов, основанные
              на стандартах Web-сервисов: SOAP, WSDL, UDDI и XML. Первой, но неудачной попыткой
              создания подобных блоков стал набор сервисов, известных как .NET My Services,
              для хранения различной персональной информации. К этой категории также относятся
              такие сервисы, как .NET Passport и .NET Alerts;
            • .NET Experiences — Microsoft описывает .NET Experiences как набор Web-сервисов,
              которые позволяют «обращаться к информации через Internet или из обычных приложений».
              Пока различия между XML Web-сервисами и .NET Experiences определены недостаточно
              четко, но первыми продуктами в категории .NET Experiences стали: MSN — пользовательский
              Web-узел, поддерживаемый Microsoft, bCentral — Web-узел для малого бизнеса
              и Microsoft Visual Studio .NET — средство разработки приложений для .NET;
            • клиенты — к этой категории относятся как аппаратные, так и программные
              компоненты. Аппаратным компонентом может быть любое устройство, способное
              обращаться к Web-сервисам и поддерживающее TCP/IP-коммуникации, в том числе
              персональные компьютеры, телефоны, «ручные» компьютеры, игровые консоли и
              т.п. С точки зрения Microsoft, тип аппаратного компонента не имеет значения
              — главное, чтобы он базировался на каком-либо варианте платформы Windows;
              будь то Windows XP или Windows CE;
            • серверы — к данной категории относятся продукты семейства .NET Enterprise
              Servers, в том числе Microsoft Windows 2000 и др.;
            • утилиты — Microsoft предлагает большой набор программных средств для создания
              .NET Web-cервисов, в том числе Microsoft Visual Studio .NET и .NET Framework.

            Архитектура платформы Microsoft .NET показана на рис. 8.

            Семейство продуктов Microsoft

            Семейство продуктов Microsoft .NET пополняется практически каждый месяц, но
            для нашего обзора достаточно уже существующих серверных продуктов, средств разработки,
            операционных систем и Web-сервисов:

            • серверные продукты базируются на серверной операционной системе Windows
              2000, на смену которой в скором времени придет ОС Windows .NET Server. Среди
              различных серверных продуктов следует выделить: Windows 2000 Server — серверную
              операционную систему, включающую поддержку каталогов, Web, приложений, коммуникаций,
              файловые сервисы и сервисы печати, Application Center для управления группами
              серверов; Mobile Information Server — сервер, позволяющий доставлять информацию
              и .NET-сервисы на мобильные устройства; BizTalk Server — сервер для поддержки
              обмена XML-информацией и документами между приложениями и бизнесами; Commerce
              Server — сервер для создания приложений электронной коммерции; Content Management
              Server — сервер для управления наполнением Web-сайтов и доставки этого наполнения
              различным клиентам;
            • средства разработки. Основным продуктом здесь является Microsoft Visual
              Studio .NET — средство для создания .NET-сервисов, поддерживающее такие языки
              программирования, как Visual Basic, C# и J#. Последний, однако, формально
              поддерживая синтаксис языка Java, не позволяет создавать стандартные Java-приложения
              — написанный код будет работать только под управлением Microsoft .NET;
            • операционные системы и прикладное ПО. Операционные системы являются ядром
              стратегии Microsoft .NET. Сюда входят все версии Windows, включая Windows
              CE для PDA, Windows Embedded и версии Windows, работающие на консоли Microsoft
              Xbox. Из прикладного программного обеспечения фирмы Microsoft отметим пакет
              Microsoft Office, для последней версии которого существует поддержка .NET;
            • Web-сервисы. Сервисы — это XML-компоненты и строительные блоки, которые
              могут использоваться Microsoft и другими компаниями для построения Web-сервисов.

            Некоторые вопросы использования Microsoft Visual Studio .NET для создания Web-сервисов
            рассматривались в статье «Web нового поколения — Web-сервисы», опубликованной
            в КомпьютерПресс № 6’2001.

            Дополнительную информацию о поддержке Web-сервисов можно найти на Web-сайте
            фирмы по адресу: http://www.microsoft.com/webservices/.

            Oracle

            Несмотря
            на то что фирма Oracle давно обсуждала проблемы, связанные с Web-сервисами,
            вполне четкая концепция поддержки этой технологии сформировалась относительно
            недавно. Теперь поддержка Web-сервисов сопровождается широкомасштабной кампанией,
            лозунг которой можно сформулировать следующим образом: «С использованием продуктов
            Oracle разработка Web-сервисов будет в десять раз быстрее, в десять раз менее
            ресурсоемкой, а сами сервисы будут в десять раз надежнее».

            Oracle имеет два подхода к созданию и использованию Web-сервисов: во-первых,
            фирма предлагает программную инфраструктуру, которую разработчики могут использовать
            для создания Web-сервисов, а во-вторых, разрабатывает и продает программные
            продукты как Web-сервисы.

            Более того, Oracle использует Web-сервисы для того, чтобы расширить сферу влияния
            за пределы рынка баз данных. Началом этому послужило появление E-Business Suite
            — набора корпоративных продуктов, которые могут работать через Internet.

            Для разработки Web-сервисов Oracle предлагает J2EE-совместимую среду Oracle
            9i JDeveloper (этот продукт доступен в виде бесплатной версии). Для выполнения
            Web-сервисов применяется сервер приложений Oracle 9i Application Server, а для
            создания приложений, использующих данные, СУБД Oracle 9i Database.

            Кроме того, Oracle предлагает E-Business Suite — серверное программное обеспечение,
            работающее через Internet и включающее такие компоненты, как CRM, B2B, управление
            финансами, проектами, ресурсами, а также компоненты Business Intelligence. Набор
            Oracle Small Business Suite также работает через Internet и содержит модули
            для ведения счетов, создания отчетов, управления заказчиками и ряд других.

            На рис. 9 показана инфраструктура Web-сервисов, предлагаемая
            Oracle.

            Ниже мы рассмотрим основные продукты фирмы Oracle более подробно. Как мы упоминали
            выше, Oracle предлагает две линейки продуктов. К первой относятся продукты,
            предназначенные для разработчиков Web-сервисов, ко второй — продукты для потребителей
            готовых Web-сервисов.

            Средства разработки Oracle 9i

            Семейство средств разработки Oracle 9i представляет собой набор интегрированных
            программных продуктов, используемых для создания и внедрения Web-сервисов. Еще
            раз отметим, что это семейство состоит из трех основных компонентов: Oracle
            9i JDeveloper для разработки Web-сервисов, Oracle 9i Application Server для
            выполнения Web-сервисов и Oracle 9i Database для создания приложений, работающих
            с данными, которые могут использоваться совместно с Web-сервисами:

            • Oracle 9i JDeveloper — это J2EE-совместимая платформа для разработки Web-сервисов
              на языке Java. Oracle 9i JDeveloper может работать под управлением Windows,
              Linux и Solaris. Существенным здесь является то, что созданные с использованием
              Oracle 9i JDeveloper решения легко внедряются на сервер приложений Oracle
              9i Application Server (Oracle утверждает, что для этого достаточно одного
              щелчка кнопки мыши — sigle click delpoyment). В состав Oracle 9i JDeveloper
              входят и средства для работы с базами данных, что не удивительно для компании,
              в арсенале которой имеется Oracle 9i Database. Продукт поддерживает создание
              Web-сервисов и их внедрение как Java-сервисов, а также внедрение на платформе
              Microsoft .NET. Таким образом, разработчики получают единую среду для создания
              и внедрения Web-сервисов на обеих платформах. Для работы с XML предлагается
              XML Developer’s Toolkit (XDK), в состав которого входят: XML Parsers (Java,
              C, C++, PL/SQL), XSLT Processors, XML Class Generator (Java, C++), XML SQL
              Utility, XSQL Servlet, XML Scheme Processor и XML Transviewer Java Beans (более
              подробную информацию об Oracle 9i JDeveloper можно получить по адресу: http://otn.oracle.com/products/jdev/content.html);
            • Oracle 9i Application Server (Oracle9iAS) — это сервер для Web-сервисов.
              Его основным достоинством является интеграция как со средством разработки
              Oracle 9i JDeveloper, так и с СУБД Oracle 9i Database. Таким образом, сервер
              приложений наилучшим образом подходит для тех разработчиков, которые планируют
              создавать Web-интерфейсы к приложениям, базирующимся на Oracle 9i Database.
              Помимо этого обеспечивается полная поддержка приложений для беспроводных устройств.
              Новая версия сервера приложений поддерживает все стандарты Web-сервисов. Сервер
              приложений поставляется в двух вариантах: Standard Edition и Enterprise Edition.
              В состав Standard Edition входят Business Components for Java, Email Server
              (для организации сервера электронной почты, доступ к которому возможен из
              любых клиентских программ) и Internet Directory (ограниченная версия). Вариант
              Enterprise Edition содержит все компоненты Standard Edition, а также Oracle9iAS
              Portal (для быстрого развертывания и поддержки работы информационного портала
              организации), Oracle Forms Services, Oracle Reports Services, Discoverer Viewer,
              Discoverer Plus, Application InterConnect Toolkit — для интеграции приложений
              масштаба предприятия и Workflow — средство для автоматизации стандартных бизнес-процедур
              организации, ориентированное на разработчиков корпоративных приложений (более
              подробную информацию об Oracle 9i Application Server можно получить по адресу:
              http://otn.oracle.com/products/ias/content.html);
            • Oracle 9i Database — это третий компонент фирмы Oracle для поддержки Web-сервисов.
              Не вдаваясь в детали, отметим интеграцию этого продукта с сервером приложений
              Oracle 9i Application Server и поддержку XML на уровне типов данных (более
              подробную информацию об Oracle 9i Database можно получить по адресу: http://otn.oracle.com/products/oracle9i/content.html).

            Oracle Web Services Business Suites

            Семейство Oracle Web Services Business Suites — это набор программных продуктов,
            функционирующих как Web-сервисы. E-Business Suite содержит полный комплект корпоративных
            средств, работающих через Internet, куда входят средства для управления клиентами,
            средства интеграции бизнесов, финансовые средства, средства управления проектами,
            ресурсами и набор модулей для аналитической обработки информации. В состав Small
            Business Suite (ближайший аналог — bCentral фирмы Microsoft) включены средства
            для управления счетами, платежами, средства создания Web-магазинов, онлайновой
            оплаты счетов, управления отчетами и т.п. Использование Small Business Suite
            обходится в 99 долл. в месяц. Помимо этого Oracle предлагает дополнительные
            программные продукты, выполненные в виде Web-сервисов. Сюда относятся средства
            для управления продажами, средства поддержки клиентов, средства для создания
            порталов и т.п.

            Демонстрируя свою приверженность Web-сервисам, Oracle использует эту технологию
            для управления своими внутренними операциями. Oracle показала потенциальную
            модель и доказала, что программное обеспечение может распространяться как набор
            сервисов.

            Завершая рассмотрение средств для создания Web-сервисов, а также предлагаемых
            Oracle Web-сервисов, отметим, что несомненным преимуществом продуктов данной
            фирмы является широкий набор программных продуктов, легко интегрирующихся между
            собой, не последнюю роль в котором играет Oracle 9i Database, широко используемая
            при создании различных корпоративных решений. Еще одним преимуществом является
            то, что продукты компании не связаны с какой-либо конкретной аппаратной платформой.

            Более подробную информацию об Oracle Web Services Business Suites можно получить
            по адресу: http://www.oracle.com/applications/index.html.

            Sun Microsystems

            Фирма
            Sun давно приводила аргументы в пользу того, что сервисы, доступные через Web,
            в один прекрасный момент заменят традиционные приложения. Тем не менее у Sun
            ушло достаточно много времени на то, чтобы ее видение проблемы сформировалось
            в четкую концепцию, поэтому планы фирмы по отношению к Web-сервисам оформились
            сравнительно недавно.

            Sun объявила инициативу Sun ONE (Open Net Environment) в октябре 2001 года
            (рис. 10). Необходимость появления этой платформы была
            обусловлена следующим обстоятельством: несмотря на то что J2EE обеспечивает
            надежную, масштабируемую, переносимую платформу для создания корпоративных решений,
            она до недавнего времени не имела стандартизованной поддержки Web-сервисов.

            Sun ONE — это и архитектура, и платформа, и набор средств для создания и внедрения
            основанных на открытых стандартах (XML, UDDI, WSDL, SOAP) Web-сервисов, называемых
            в терминах Sun сервисами по запросу — Services on Demand (рис.
            11).

            Платформа Sun ONE базируется на следующих основных компонентах: на операционной
            системе Solaris, платформе Java 2 Platform, наборе серверов семейства iPlanet
            и средствах разработки Forte Development Tools. Ниже мы рассмотрим эти компоненты
            более подробно и перечислим их основные характеристики и назначение.

            Solaris

            Solaris — это операционная система на базе UNIX, функционирующая на системах
            на основе SPARC и на основе Intel. Она разработана с учетом мультипроцессорной
            поддержки и 64-битной архитектуры. Вместе с операционной системой поставляются
            Forte for Java, Forte Developer 6 Tools, iPlanet Web Server, iPlanet Directory
            Server, набор офисных продуктов StarOffice и СУБД Oracle8i Enterprise Edition.

            В семейство Solaris входят следующие продукты:

            • Solaris Operating Environment — основа систем фирмы Sun. Это вычислительная
              среда для серверов любого уровня — от серверов отделов до массивных, объединенных
              в кластеры серверов, насчитывающих более 100 процессоров, — разработанная
              для мультипроцессорных 64-битных систем;
            • Trusted Solaris Operating Environment — расширяет возможности Solaris
              Operating Environment, защищая вычислительную среду от внутренних и внешних
              проникновений;
            • Solaris WBEM Services — используется для создания и модификации информации,
              хранимой в стандартном CIM-формате, облегчает администрирование Solaris Operating
              Environment и обеспечивает взаимодействие управляющих сервисов;
            • Solaris Bandwidth Manager — управляет сетевым трафиком;
            • Solaris Resource Manager — управляет системными ресурсами, обеспечивая
              их доступность и лучшее использование;
            • Solaris Easy Access Server — используется для включения систем на базе
              Solaris в сети на базе Windows NT;
            • Solaris PC NetLink — переносит сетевые сервисы типа Windows NT, файловые
              сервисы, сервисы печати, управление каталогами и аутентификацией с PC-серверов
              в среду Solaris Operating Environment;
            • Solaris Data Encryption — обеспечивает поддержку технологий шифрования
              для Solaris Operating Environment;
            • Solaris PDASync — синхронизует настольные приложения Solaris с устройствами
              на базе Palm OS и приложениями, выполняющимися на персональных компьютерах;
            • Sun Cluster — позволяет использовать базовые сервисы Solaris в рамках
              кластеров, обеспечивая полную совместимость с существующими приложениями для
              Solaris Operating Environment;
            • Sun Management Center — обеспечивает функции управления для Solaris Operating
              Environment, включая сервисы для управления аппаратными и программными конфигурациями.
              В дополнение к Sun Management Center предлагается Service Availability Manager,
              который увеличивает доступность сетевых серверов, выполняющихся локально или
              удаленно на системах Sun, осуществляет мониторинг и подтверждает доступность
              сетевых сервисов — Web-серверов, FTP-, Mail-, Calendar-сервисов и т.п. Дополнительным
              продуктом для Sun Management Center также является System Reliability Manager,
              который увеличивает надежность платформы и содержит ряд модулей для внедрения
              обновлений, слежения за файловой системой, запуска скриптовых программ и анализа
              протоколов сбоев операционной системы.

            Более подробную информацию об операционной системе Solaris можно получить по
            адресу: http://wwws.sun.com/software/solaris/.

            Java 2 Platform

            Java является ключевой технологией фирмы Sun, на которой базируется большинство
            предлагаемых ею продуктов и сервисов. С момента появления технологии Java базовая
            философия фирмы не изменилась: вы один раз пишете приложение на языке Java и
            оно способно работать на любой платформе, независимо от операционной системы.
            Для этого необходимо использование соответствующей виртуальной машины Java —
            Java VM. Самая новая версия платформы для разработки на языке Java — Java 2
            Platform, Enterprise Edition (J2EE). С точки зрения фирмы Sun, приложения, которые
            будут выполнять функции Web-сервисов, должны быть написаны на языке Java. Java-приложения
            могут работать на любом устройстве, содержащем Java VM, включая персональные
            компьютеры, мобильные компьютеры, сотовые телефоны и беспроводные устройства.

            Более подробную информацию о Java можно получить по адресу: http://wwws.sun.com/software/java/index.html.

            В задачи данного обзора не входит рассмотрение всех интерфейсов и технологий,
            основанных на платформе J2EE. Здесь мы остановимся лишь на интерфейсах, обеспечивающих
            работу с XML-документами и создание и потребление Web-сервисов, — Java XML Pack
            и Java Web Services Developer Pack.

            Java XML Pack

            Пакет Java XML Pack — это набор интерфейсов и средств для разработки, публикации,
            обнаружения и потребления XML Web-сервисов для платформы Java 2 Platform. Входящие
            в состав Java XML Pack технологии можно разделить на две большие категории —
            средства для работы с XML-документами и средства для использования XML-технологий.
            К первой категории относятся:

            • Java API for XML Processing (JAXP) — набор интерфейсов для обработки XML-документов
              с использованием JAXP-совместимого парсера. Обеспечивается поддержка как событийной
              модели (SAX), так и древовидной модели (DOM) обработки XML-документов;
            • Java Architecture for XML Binding (JAXB) — средства для отображения между
              XML-документами и Java-классами, позволяющие использовать XML-документы как
              обычные Java-объекты.
            • К средствам использования XML-технологий, входящим в состав Java XML Pack,
              относятся:
            • Java API for XML Messaging (JAXM) — поддержка передачи XML-сообщений с
              использованием языка Java. JAXM базируется на спецификациях SOAP 1.1 и SOAP
              with Attachments, но при необходимости возможно расширение функциональности
              для поддержки высокоуровневых протоколов типа ebXML или bizTalk;
            • Java API for XML Registries (JAXR) — унифицированный механизм доступа
              к реестрам из языка Java. JAXR не связан с конкретной реализацией реестров
              и может использоваться как с XML-реестрами на базе стандарта ebXML Registry
              and Repository, так и с реестрами на основе спецификации Universal Description,
              Discovery and Integration (UDDI)
            • Java API for XML-based RPC (JAX-RPC) — средства поддержки вызова удаленных
              методов на базе языка XML через Internet.

            Загрузить Java XML Pack можно по адресу: http://java.sun.com/xml/javaxmlpack.html.

            Java Web Services Developer Pack

            Недавно фирма Sun выпустила пакет Java Web Services Developer Pack (Java WSDP),
            в состав которого входит и Java XML Pack. Java Web Services Developer Pack —
            это набор средств, облегчающих создание Web-сервисов на платформе Java 2. Этот
            набор включает, помимо Java XML Pack, следующие компоненты:

            • JavaServer Pages Standard Tag Library (JSTL) 1.0 Beta 1;
            • Ant Build Tool 1.4.1;
            • Java WSDP Registry Server 1.0 EA2;
            • Web Application Deployment Tool;
            • Apache Tomcat 4.1-dev Container.

            Java WSDP поддерживается на следующих платформах: Solaris 2.8, Windows 2000,
            Professional Edition, Windows XP, Professional Edition, RedHat Linux 7.2.

            В состав Java Web Services Developer Pack входит более чем 600-страничное методическое
            пособие «The Java Web Services Tutorial», в котором рассматриваются все аспекты
            создания Web-сервисов с использованием перечисленных выше интерфейсов, библиотек
            и технологий.

            Java WSDP можно найти по адресу: http://java.sun.com/webservices/webservicespack.html.

            iPlanet

            iPlanet — это семейство серверных продуктов фирмы Sun. В его состав входят Web-сервер,
            сервер каталогов, а также другие серверы, которые мы кратко рассмотрим ниже.
            Следует отметить, что появление в составе iPlanet средств обмена сообщениями
            является прямым ответом на Microsoft .NET Alerts. Однако в отличие от Microsoft
            .NET Alerts средства обмена сообщениями и нотификациями фирмы Sun базируются
            не на Microsoft Passport, а на альтернативном решении, известном как Liberty
            Alliance.

            В семейство iPlanet входят следующие продукты:

            • iPlanet Directory Server — предназначен для хранения и управления профилями,
              привилегиями доступа, приложениями и сетевыми ресурсами. Кроме того, существуют
              версии iPlanet Directory Server Access Management Edition и iPlanet Directory
              Server Integration Edition;
            • iPlanet LDAP Proxy Server — обеспечивает сервисы безопасности для iPlanet
              Directory Server;
            • iPlanet Certificate Management System — обеспечивает корпоративные сервисы
              аутентификации сотрудников, клиентов и партнеров, управляет сертификатами
              на базе X.509;
            • iPlanet Web Proxy Server — служит в роли управляющего трафиком, собирая
              данные из сети, определяя механизмы перенаправления и выполняя соответствующие
              сервисы;
            • iPlanet Portal Server — используется для внедрения коммерческих порталов
              и включает сервисы управления членством, персонализации, интеграции и поиска
              информации;
            • iPlanet Web Server Enterprise Edition — Web-сервер с поддержкой Java Servlets
              и Java Server Pages;
            • iPlanet Biller Xpert — облегчает подготовку и публикацию счетов, оплату
              через Internet;
            • iPlanet Market Maker — управляет каталогами, ценовыми моделями, онлайновыми
              переговорами, аукционами и т.п.;
            • iPlanet BuyerXpert — используется для контроля закупок с Web-интерфейсом;
            • iPlanet SellerXpert — используется для автоматизации работы каналов продажи;
            • iPlanet Trustbase Transaction Manager — обеспечивает защищенные коммуникации
              между организациями и клиентами;
            • iPlanet Messaging Server — обеспечивает сервисы для обмена информацией,
              отсылки и приема сообщений с поддержкой Web-интерфейса;
            • iPlanet Calendar Server — управляет календарями, разделением ресурсов,
              расписанием событий и групповой работой;
            • iPlanet Application Server — используется для разработки, внедрения и
              управления основанными на Java 2 Platform Enterprise Edition (J2EE) приложениями
              на различных серверах, клиентах и устройствах. Также существуют версии iPlanet
              Application Server EAI Edition и iPlanet Application Server B2B Edition;
            • iPlanet Message Queue for Java — используется для интеграции унаследованных
              систем и данных с новыми приложениями и ERP-решениями;
            • iPlanet Unified Development Server — служит для быстрого создания, внедрения
              и управления сетевыми приложениями.

            Более подробную информацию о семействе продуктов iPlanet можно получить по
            адресу: http://wwws.sun.com/software/iplanet/products/.

            Forte Development Tools

            Для разработки Web-сервисов используется Forte for Java — интегрированная среда
            разработчика на языке Java (рис. 12). Forte for Java базируется
            на платформе NetBeans Tools Platform и позволяет разработчикам создавать J2EE-приложения,
            разрабатывать и публиковать Web-сервисы, включать Web-сервисы в состав Web-сайтов
            и т.п.

            Forte for Java поставляется для различных платформ, в том числе для Windows,
            Linux и Solaris. Среда разработчика имеет открытый интерфейс и расширяема —
            в настоящее время существуют дополнительные продукты от более чем 75 сторонних
            компаний. Для коллективной разработки приложений используется Forte Code Management
            Software.

            Более подробную информацию о Forte for Java можно получить по адресу: http://wwws.sun.com/software/Developer-products/ffj/index.html.

            Помимо всего прочего фирма Sun занимается разработкой набора Web-сервисов,
            включающего Sun ONE WebTop — набор офисных продуктов (текстовый процессор, электронная
            таблица, графический пакет и т.п), доступных как Web-сервисы, а также набора
            Web-сервисов для поддержки посылки/получения сообщений и управления расписаниями
            событий. Кроме того, в документе, озаглавленном «Sun ONE Architecture Guide»,
            можно найти раздел, посвященный базовым Web-сервисам, в котором упоминаются
            такие сервисы, как Location Web Service, Presence Web Service, Notification
            Web Service, Usage Web Service, Search Web Service, File Web Service, а также
            набор Web-сервисов, делающих доступной функциональность продуктов семейства
            iPlanet.

            Одним из примеров Web-сервисов является myServices.ONE, который реализует корзину
            покупателя, используемую в нескольких магазинах. Созданный с помощью iNsight
            for Forte for Java, этот Web-сервис позволяет покупателям просматривать и обновлять
            свои покупки в одной корзине. В сервис myServices.ONE входят: myIdentity (поддержка
            идентификации между Web-узлами), myBasket (поддержка централизованной корзинки
            покупателя для нескольких магазинов), myJeeves (централизованная автоматизация
            оплаты).

            Как мы уже отмечали, фирма Sun не сразу четко сформулировала свою позицию по
            отношению к Web-сервисам. Из-за этого было потеряно время, позволившее другим
            компаниям — в первую очередь IBM и Microsoft — выйти в лидеры. Тем не менее
            Sun обладает всем необходимым — от языка Java до средств разработки, от операционной
            системы до серверных продуктов, — чтобы выйти в первую пятерку лидеров, предлагающих
            средства для создания Web-сервисов. К положительным моментам также следует отнести
            большое число Java-разработчиков, лояльных к продуктам и технологиям фирмы,
            а также наличие широкого спектра аппаратных решений.

            Sybase

            В
            феврале нынешнего года компания Sybase объявила о стратегической инициативе,
            направленной на то, чтобы помочь клиентам перенести существующие инфраструктуры
            на Web-сервисы. Sybase планирует активно участвовать в поддержке стандартов,
            участвует в работе таких организаций, как Web Services Interoperability Organization
            (WS-I) и Organization for Structured Information Standards (OASIS).

            Поддержка Web-сервисов будет осуществляться по четырем ключевым направлениям:
            разработка, внедрение, доступ и управление. Ниже мы рассмотрим продукты, которые
            будут выполнять каждую из перечисленных функций.

            Разработка

            EAServer Web Service Toolkit — набор средств для создания, тестирования, автоматизации
            и внедрения приложений с использованием Web-сервисов и соединения таких приложений
            с существующими бизнес-процессами. Эти средства также позволяют публиковать
            Web-сервисы через UDDI-реестры.

            PowerDesigner 9.0 объединяет различные подходы к моделированию и позволяет пользователям
            полностью разобраться в элементах, составляющих Web-сервис. С помощью PowerDesigner
            9.0 дизайнеры могут легко генерировать код и объекты баз данных, необходимые
            для разработки и выполнения Web-сервисов. Используя генерацию кода на основе
            шаблонов, PowerDesigner 9.0 автоматизирует создание кода для выбранного языка
            программирования, а также WSDL-документов, необходимых для внедрения Web-сервисов.

            PowerBuilder будет поддерживать все стандарты, связанные с Web-сервисами, включая
            SOAP, XML, WSDL, UDDI и XSL, а также стандарты, которые появятся в будущем.
            Разработчики смогут публиковать и редактировать данные, а также обмениваться
            XML-информацией через протоколы, связанные с Web-сервисами на платформах J2EE
            и Microsoft .NET. Web-сервисы будут доступны клиентам PowerBuilder и другим
            клиентам, поддерживающим стандарты Web-сервисов. В настоящее время партнерская
            стратегия Sybase в области PowerBuilder дает разработчикам доступ к Web-сервисам
            через невизуальные объекты (Non-Visual Objects, NVO). PowerBuilder и Web Services
            Toolkit, поставляемый в составе Sybase EAServer, облегчают разработчикам на
            PowerBuilder создание и внедрение NVO как Web-сервисов прямо на сервер приложений
            EAServer.

            Внедрение

            EAServer 4.1 — сервер приложений с поддержкой открытых стандартов и технологий,
            необходимых для разработки, потребления и внедрения приложений на основе Web-сервисов,
            включая поддержку UDDI, SOAP, J2EE, WSDL и возможности управления UDDI-реестрами.

            Business Process Integrator позволяет бизнесам интегрировать и управлять «потоком»
            Web-сервисов и приложений; таким образом компании могут управлять внешними и
            внутренними бизнес-процессами. Этот продукт позволяет доставлять SOAP-сообщения
            от одного приложения на основе Web-сервисов к другому, а кроме того, поддерживает
            приложения в стандартах ebXML и RosettaNet.

            СУБД Sybase, в том числе Adaptive Server Enterprise, Sybase Adaptive Server
            IQ и SQL Anywhere, дают возможность приложениям на основе Web-сервисов обращаться
            к данным, хранимым в СУБД Sybase, а также в СУБД от IBM, Microsoft и Oracle,
            посредством хранимых процедур.

            Доступ

            В Sybase Enterprise Portal расширены возможности Portlet Framework для поддержки
            компонентов порталов (Portlets) с использованием Web-сервисов. Расширение существующей
            структуры позволяет разработчикам реализовать бизнес-логику в виде Web-сервисов
            и разделять такие сервисы между компонентами порталов (Portlets) и приложениями.
            Подобный подход позволяет существенно снизить время, необходимое для разработки
            и тестирования. Помимо этого такие Web-сервисы становятся доступными другим
            порталам и приложениям.

            iAnywhere Solutions m-Business Platform поддерживает Web-сервисы для расширения
            доступа к корпоративной информации через мобильные и беспроводные устройства.
            Встроенная поддержка мобильных коммуникаций, включая возможность посылки сообщений
            на различные устройства с помощью различных сетевых протоколов, может быть использована
            как Web-сервис другими корпоративными приложениями. Компания также планирует
            создание набора средств для разработчиков, который позволит создавать дополнительные
            Web-сервисы.

            Управление

            BizTracker следит за производительностью среды, в которой выполняются Web-сервисы.

            Open Bizs Interchange координирует и управляет Web-сервисами, а также различными
            гетерогенными технологиями на одном логическом уровне, который располагается
            над другими сервисами и может рассматриваться как единый элемент управления.
            Выступая в виде сервиса хостинга, Open Bizs позволяет пользователям быстро соединяться
            с партнерами с помощью выбираемой технологии и не требует установки и настройки
            различных связующих компонентов.

            Дополнительная информация о продуктах фирмы Sybase может быть получена по адресу:
            http://www.sybase.com/

            КомпьютерПресс 6’2002

            Понравилась статья? Поделить с друзьями:
          1. Окна программ реализующих интерфейс windows не содержат какое меню
          2. Около курсора постоянно моргает кружок windows 10
          3. Окна открываются с задержкой на windows 10
          4. Окно это рабочая область экрана приложение windows
          5. Окна открываются за пределами экрана windows 10