Типы веб приложений visual studio
- легко использовать компоненты, разработанных на различных языках;
- разрабатывать единое приложение из нескольких частей на разных языках;
- FCL (Framework Class Library) - библиотеку классов каркаса;
- CLR (Common Language Runtime) - общеязыковую исполнительную среду.
Основным пространством имен библиотеки FCL является пространство System , содержащее как классы, так и другие вложенные пространства имен. Например, в пространстве System.Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов - списками, очередями, словарями. Пространство System.Windows.Forms содержит классы, используемые при создании windows-приложений.
В большинстве случаев между двоичным файлом .NET и сборкой существует отношение "один-к-одному". Однако сборка может состоять как из одного, так и из нескольких двоичных файлов.
Сборка из одного файла содержит и манифест, и метаданные, и инструкции IL.
Двоичные файлы, образующие совместно общую сборку называются модулями. При этом один из двоичных файлом должен содержать манифест сборки. Остальные модули могут содержать только метаданные типов и инструкции IL.
Многофайловые сборки позволяют среде исполнения избирательно загружать только те сборки, которые в данный момент работы приложения действительно необходимы, что позволяет сокращать сетевой трафик и увеличивать скорость работы программ.
Проект (Project) - это основная единица, с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом. Проект состоит из классов, собранных в одном или нескольких пространствах имен. Пространства имен (Namespaces) позволяют структурировать проекты, содержащие большое число классов, объединяя в одну группу близкие классы.
Несколько проектов могут объединяться в решение (Solution), которое также может включать ресурсы, необходимые этим проектам.
С точки зрения разработчика конечным результатом его работы, получаемым после компиляции исходного программного кода, является решение, а с точки зрения CLR (Common Language Runtime - общеязыковой среды исполнения) - сборка (assembly), содержащая PE файл, т.е. модуль в формате исполняемого файла PE (Portable Executable) для 32-разрядной ОС Windows либо DLL (Dynamic Link Library) файл.
Стандарт языка C++ включает следующий набор фундаментальных типов.
- Логический тип ( bool ).
- Символьный тип ( char ).
- Целые типы. Они могут отличаться размером: short , int , long , а также могут быть знаковыми ( signed ) или беззнаковыми ( unsigned ).
- Типы с плавающей точкой. Они также могут отличаться размерами: float , double и long double .
Тип void указывает на отсутствие информации.
К конструируемым типам относятся следующие:
- Указатели (например, char* ).
- Ссылки (например, char& ).
- Массивы (например, char[] ).
Также язык позволяет разработчику конструировать собственные типы:
- Перечислимые типы ( enum ).
- Структуры ( struct ).
- Классы.
- Типы-значения ( value ).
- Ссылочные ( reference ).
- Указатели ( pointer ).
- Тип void .
Для ссылочного типа значение задает ссылку на область памяти в "куче" (heap), где расположен соответствующий объект. Для типа-значения значением являются собственно данные, а память для них выделяется в стеке.
Логический, арифметический, структуры, перечисление относятся типам-значениям. Массивы, строки и классы относятся к ссылочным типам.
И ссылочные, и обычные типы являются производными от базового класса object . В тех случаях, когда обычный тип должен вести себя как объект, создается оболочка (wrapper), которую можно рассматривать как ссылочный объект, помещенный в кучу, и в нее копируется значение переменной обычного типа. Оболочка автоматически помечается таким образом, что система знает, какое значение она содержит. Этот процесс назывется упаковкой (boxing), а обратный процесс - распаковкой ( unboxing ).
Упаковка происходит автоматически, для этого нужно только присвоить значение обычного типа переменной типа object. Упаковка и распаковка позволяют обрабатывать любой тип как объект. Например, в выражении
целое число 7 упаковывается путем вызова функции Int32.ToString() .
Описание класса имеет следующий синтаксис:
В теле класса могут быть объявлены:
- константы;
- поля;
- конструкторы и деструкторы;
- методы;
- события;
- делегаты;
- классы (структуры, интерфейсы, перечисления).
Поля класса синтаксически являются обычными переменными (объектами) языка. Их описание удовлетворяет обычным правилам объявления переменных. Поля характеризуют свойства объектов класса.
Методы класса синтаксически являются обычными процедурами и функциями языка. Методы содержат описания операций, доступных над объектами класса. Методы, называемые свойствами явлются специальной синтаксической конструкцией, предназначенной для обеспечения эффективной работы с классами.
Конструктор представляет собой специальный метод класса, позволяющий создавать объекты класса. Его имя должно совпадать с именем класса. Если разработчик не определяет конструктор класса, то к классу автоматически добавляется конструктор по умолчанию - конструктор без аргументов.
Выражения строятся из операндов - констант, переменных, функций, - объединенных знаками операций и скобками. При вычислении выражения определяется его значение и тип.
- Оператор присваивания ( = )
- Составной оператор ( <> )
- Операторы выбора: if-else и switch
- Операторы цикла: for , while , оператор
- Операторы break и continue
- Оператор return
- Оператор перехода goto
Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис:
Windows Store
Категория проектов Windows Store появилась в Visual Studio 2013. Ранее шаблон Windows Store находился в категории Windows. Эта категория появляется только если вы работаете под управлением операционной системы версии Windows 8.1. Проекты этого типа создаются для приложений Windows Runtime.
Windows
Категория проектов Windows - самая крупная. Она включает в себя большинство распространенных типов проектов, выполняемых в пользовательских операционных системах. В частности, она содержит выполняемые проекты Windows Forms, проекты приложений Console и приложения Windows Presentation Foundation (WPF). Эти типы проектов предусматривают создание сборки (.exe), выполняемой непосредственно пользователем. Категория Windows включает также несколько типов библиотечных сборок, на которые легко ссылаться из других проектов. К ним относятся как библиотеки классов, так и библиотеки элементов управления для приложений Windows Forms и WPF. Файлы библиотек классов имеют хорошо известные расширения DLL. К этой же категории относится тип проектов Windows Service.
Web
Office
Как следует из названия этой категории, к ней относятся управляемые программные надстройки для продуктов Microsoft Office, таких как Outlook, Word или Excel. Проекты этих типов используют средства Visual Studio Tools for Office (VSTO) и способны создавать надстройки для большинства продуктов, включая пакеты Office 2003, Office 2007, Office 2010 и Office 2013.
SharePoint
Эта категория с самоочевидным названием содержит проекты, предназначенные для веб-платформ Windows SharePoint Services, таких как SharePoint Workflows или Team Sites.
Database
Данная категория содержит типы проектов для создания кода, который можно использовать на сервере SQL Server. К ним относятся хранимые процедуры, пользовательские типы и функции, триггеры и специальные агрегирующие функции.
Cloud
По умолчанию раздел Cloud содержит только ссылку, которая может извлечь Windows Azure SDK. После установки SDK, появляются дополнительные шаблоны проектов, связанных с разработкой приложений Azure.
LightSwitch
Категория проектов LightSwitch появилась в Visual Studio 2013. Сам продукт используется для быстрого создания бизнес-приложений с использованием новейших технологий. Шаблоны проектов в этой категории позволяют создавать приложения как для настольных, так и для HTML.
Reporting
К этой категории относится тип проекта, идеально подходящий для быстрой генерации сложных отчетов об источнике данных.
Silverlight
Эта категория содержит типы для создания приложений Silverlight Applications или проектов Class Library.
Test
Данная категория включает в себя тип для проектов, содержащих тесты, использующие каркас для тестирования модулей MSTest.
WCF
Эта категория содержит большое количество типов проектов для создания приложений, обеспечивающих веб-службы с использованием технологии Windows Communication Foundation (WCF).
Workflow
Эта категория содержит большое количество типов проектов для создания библиотек и приложений, реализующих последовательные процессы и конечные автоматы.
Формат файлов проекта
Для того чтобы отобразить файл проекта в формате XML, следует щелкнуть правой кнопкой мыши на проекте и выбрать команду Unload. Затем необходимо снова щелкнуть правой кнопкой мыши на проекте и выбрать команду Edit . В результате в окне редактора XML, поддерживающего технологию IntelliSense, появится файл проекта.
Ознакомление с Visual Studio
Написание и компиляция кода вручную было бы утомительным делом для любого разработчика. К счастью, IDE-среда Visual Studio предлагает набор высокоуровневых функциональных возможностей, которые выходят за рамки базового управления кодом.
Ниже перечислены основные преимущества IDE-среды Visual Studio:
Наличие встроенного веб-сервера
Установить свой веб-сервер несложно, но может быть не совсем удобно. Наличие в Visual Studio интегрированного веб-сервера позволяет запускать веб-сайт прямо из среды проектирования, а также повышает безопасность, исключая вероятность получения доступа к тестовому вебсайту с какого-нибудь внешнего компьютера, поскольку тестовый сервер может принимать соединения только с локального компьютера.
Поддержка использования множества языков для разработки
Visual Studio позволяет писать код на своем языке или любых других предпочитаемых языках, используя все время один и тот же интерфейс (IDE).
Более того, Visual Studio также еще позволяет создавать веб-страницы на разных языках, но помещать их все в один и тот же веб-сайт. Существуют лишь два ограничения, о которых следует помнить: не использовать более одного языка в одной и той же веб-странице (что может вызвать очевидные проблемы на этапе компиляции) и обязательно применять модель веб-сайта без проекта (а не веб-проект).
Меньше кода для написания
Например, добавление веб-элемента управления, присоединение обработчиков событий и корректировка форматирования требует установки в разметке страницы ряда деталей. В Visual Studio такие детали устанавливаются автоматически.
Интуитивно понятный стиль кодирования
По умолчанию Visual Studio форматирует код по мере его ввода, автоматически вставляя необходимые отступы и применяя цветовое кодирование для выделения элементов типа комментариев. Такие незначительные отличия делают код более удобным для чтения и менее подверженным ошибкам.
Применяемые Visual Studio автоматически параметры форматирования можно даже настраивать, что очень удобно в случаях, когда разработчик предпочитает другой стиль размещения скобок (например, стиль Кернигана и Ритчи, при котором открывающая скобка размещается на той же строке, что и объявление, которому она предшествует).
Более высокая скорость разработки
Многие из функциональных возможностей Visual Studio направлены на то, чтобы помочь разработчику делать свою работу как можно быстрее.
Удобные функции, такие как IntelliSense (которая умеет перехватывать ошибки и предлагать правильные варианты), поиск и замена (которая позволяет отыскивать ключевые слова как в одном файле, так и во всем проекте) и автоматическое добавление и удаление комментариев (которая может временно скрывать блоки кода), позволяют разработчику работать быстро и эффективно.
Возможности отладки
Предлагаемые в Visual Studio инструменты отладки являются наилучшим средством для отслеживания загадочных ошибок и диагностирования странного поведения. Разработчик может выполнять свой код по строке за раз, устанавливать интеллектуальные точки останова, при желании сохраняя их для использования в будущем, и в любое время просматривать текущую информацию из памяти.
Веб-сайты и веб-проекты
Разработка на основе проекта
Разработка без использования проекта
Это альтернативный подход, который подразумевает создание просто веб-сайта безо всякого файла проекта.
Разумеется, разработчик может применить предварительную компиляцию и устранить связанные с первым запросом непроизводительные издержки для развертываемого веб-приложения.
Осознав, что для определенных сценариев все-таки больше подходила проектная разработка, Microsoft выпустила доступный для загрузки пакет, который возвращал в Visual Studio 2005 опцию проектной модели. В версии Visual Studio 2010 поддерживаются оба подхода.
Создание веб-сайта без использования проекта
Чтобы сразу же приступить к работе и создать новое веб-приложение, выберите в меню File (Файл) пункт New --> Website (Создать Веб-узел). Откроется диалоговое окно New Web Site, показанное на рисунке:
Каждая деталь более подробно описана в следующих разделах.
Язык разработки
Обычно следует выбирать версию, которая поддерживается на используемом веб-сервере. Более поздние версии предоставляют доступ к новейшим функциональным возможностям.
Выберите в меню Website (Веб-сайт) пункт Start Options (Параметры запуска).
В списке слева выберите категорию Build (Сборка).
Шаблон
После выбора языка (в списке слева) появляется список всех шаблонов, предоставляемых Visual Studio для этого языка (в большой области в центре). Каждый шаблон определяет то, с каких файлов будет начинаться создание веб-сайта.
Ниже приведено краткое описание всех доступных шаблонов:
Также он содержит папку Accounts (Учетные записи) со страницами для регистрации, входа в систему и смены пароля и папку Scripts (Сценарии) с библиотекой jQuery для клиентских сценариев JavaScript.
Создается почти пустой веб-сайт. Этот веб-сайт включает только сокращенную версию конфигурационного файла web.config, и ничего больше. Разумеется, с началом кодирования в него можно легко добавлять необходимые фрагменты.
WCF Service (Служба WCF)
Создается служба WCF — библиотека серверных методов, которые удаленные клиенты (например, Windows-приложения) могут вызывать.
Чтобы просмотреть их, щелкните на заголовке Online Templates (Шаблоны в Интернете) в левом крайнем углу диалогового окна New Web Site. Через некоторое время, необходимое для установления связи с веб-серверами Microsoft, добавляется список различных подкатегорий, каждая с собственной группой готовых шаблонов.
Место размещения
Место размещения отвечает за то, где будут храниться файлы веб-сайта. Обычно выбирается вариант File System (Файловая система) и затем указывается либо папка на локальном компьютере, либо сетевой путь.
Однако веб-сайт также допускается редактировать и непосредственно через HTTP или FTP (File Transfer Protocol — протокол передачи файлов). Такой подход иногда удобен, когда требуется "вживую" выполнять редактирование веб-сайта на удаленном веб-сервере. С другой стороны, он влечет за собой дополнительные накладные расходы. Конечно, производить редактирование напрямую на производственном сервере не следует никогда, поскольку такие изменения являются автоматическими и необратимыми. Вместо этого лучше ограничивать свои изменения только тестовыми серверами.
Если просто нужно создать свой проект в какой-то папке внутри файловой системы, можно ввести имя этой папки в поле Location (Размещение) вручную. Но если интересуют все возможные варианты для определения подходящего места, щелкните на кнопке Browse (Обзор). Откроется диалоговое окно Choose Location (Выбор размещения). В левой части этого окна есть четыре кнопки, позволяющие выбирать различные варианты для размещения файлов.
Преимущества и недостатки пользовательских интерфейсов, которые отрисовываются сервером и клиентом
- Приложения, которые преобразовывают для просмотра пользовательский интерфейс с сервера.
- Приложения, которые преобразовывают для просмотра пользовательский интерфейс на клиенте в браузере.
- Гибридные приложения, использующие преимущества методов отрисовки серверных и клиентских пользовательских интерфейсов. Например, большинство пользовательских веб-интерфейсов преобразовываются для просмотра на сервере, а компоненты, отображаемые клиентом, добавляются по мере необходимости.
Существует ряд преимуществ и недостатков, которые следует учитывать при отрисовке пользовательского интерфейса на сервере или на клиенте.
Пользовательский интерфейс, отображаемый сервером
- Требования клиента минимальны, так как сервер создает логику и страницы:
- Отлично подходит для низкоуровневых устройств и подключений с низкой пропускной способностью.
- Предоставляет широкий спектр версий браузеров на клиенте.
- Быстрая загрузка начальной страницы.
- Минимальное количество или отсутствие элементов JavaScript для представления клиенту.
- Доступ к базе данных.
- Доступ к секретам, таким как значения для вызовов API к службе хранилища Azure.
Примеры распространенных сценариев приложения пользовательского веб-интерфейса, отображаемого сервером:
- Динамические сайты, например те, которые предоставляют персонализированные страницы, данные и формы.
- Отображение данных только для чтения, например списков транзакций.
- Отображение статических страниц блога.
- Общедоступная система управления содержимым.
- Оплата за вычисления и использование памяти выставляется на сервере, а не на каждом клиенте.
- Для взаимодействия с пользователем требуется выполнить круговой путь к серверу, чтобы создать обновления пользовательского интерфейса.
Пользовательский интерфейс, отображаемый клиентом
Приложение, отображаемое клиентом, динамически преобразовывает для просмотра пользовательский веб-интерфейс на клиенте и при необходимости непосредственно обновляет модель DOM браузера.
- Обеспечивает практически мгновенные многочисленные интерактивные возможности без необходимости выполнения кругового пути к серверу. Обработка событий пользовательского интерфейса и логика выполняются локально на устройстве пользователя с минимальной задержкой.
- Поддержка добавочных обновлений с обеспечением сохранения частично заполненных форм или документов, не требуя при этом от пользователя нажимать кнопку для отправки формы.
- Может быть настроен для работы в отключенном режиме. Обновления клиентской модели с возможностью синхронизировать ее с сервером при восстановлении подключения.
- Снижение нагрузки и сокращение затрат на сервер. Рабочая нагрузка переносится на клиент. Многие приложения, отображаемые клиентом, могут размещаться так же, как и статические веб-сайты.
- Использование преимуществ возможностей устройства пользователя.
Примеры пользовательского веб-интерфейса, отображаемого клиентом:
- Интерактивная панель мониторинга.
- Приложение с функцией перетаскивания.
- Быстродействующее социальное приложение для совместной работы.
- Код логики необходимо скачать и выполнить на клиенте, что увеличивает время начальной загрузки.
- Требования клиента могут исключить пользователя, который использует низкоуровневые устройства, более старые версии браузера или подключения с низкой пропускной способностью.
Преимущества Razor Pages в дополнение к преимуществам отрисовки сервера:
Преимущества MVC в дополнение к преимуществам отрисовки сервера:
- Основывается на масштабируемой и продуманной модели для создания крупных веб-приложений.
- Четкое разделение задач для максимальной гибкости.
- Разделение обязанностей на основе шаблона "Модель — представление — контроллер" гарантирует, что бизнес-модель можно легко развивать, не затрагивая при этом реализацию возможностей более низкого уровня.
Blazor
Преимущества компонентов Razor:
Варианты размещения Blazor:
Компоненты Razor можно разместить с помощью Blazor Server или Blazor WebAssembly, чтобы воспользоваться преимуществами отрисовки сервера или клиента. Дополнительные сведения см. в статье Модели размещения Blazor. Сервер и WebAssembly.
- Требуются дополнительные языки программирования, платформы и средства.
- Сложно обмениваться кодом, поэтому некоторая логика может дублироваться.
Чтобы начать работу, см. следующие статьи.
Дано три стороны треугольника: a , b , c .
Используя формулу Герона, разработать приложение, которое находит площадь треугольника. Приложение реализовать как Web-application .
Формула Герона имеет вид:
где p – полупериметр:
a, b, c – длина сторон треугольника.
⇑
Выполнение
1. Запустить MS Visual Studio
Пример создания приложения в MS Visual Studio по шаблону Windows Forms Application подробно описывается в теме:
⇑
2. Создание Web-приложения
Приложения типа Web могут вызываться из любого компьютера, подключенного к сети Internet. Для открытия такого приложения используется Web -браузер (например Opera , Google Chrome , Internet Explorer и другие).
Ниже указаны два способа создания Web -приложения в MS Visual Studio .
⇑
2.1. Создание Web-приложения (способ № 1)
Для этого способа, чтобы создать Web -приложение, нужно сначала вызвать команду (рис. 1):
Рис. 1. Команда создания нового веб-сайта
Например, в нашем случае, файлы будут сохраняться в папке
Место расположения файлов указывается в поле « Web-location» . Доступны три способа размещения файлов:
Выбираем « File system «. В этом случае файлы приложения будут размещаться на локальном сервере ( localhost ), который создается системой. Это означает, что программа-клиент (наше приложение) и программа-сервер (условно отдаленный компьютер в сети) размещены на одном и том же (домашнем) компьютере. Фактически localhost – это IP -адрес, с помощью которого компьютер может обратиться в сети к самому себе, независимо от наличия или вида компьютерной сети.
Рис. 2. Создание Web-сайта
⇑
2.2. Создание Web-приложения (способ № 2)
Существует также и другой способ создания Web -приложения с помощью команды (рис. 3)
Рис. 3. Команда создания нового проекта
Рис. 4. Команда создания Web-приложения
⇑
3. Создание приложения как веб-сайта
Для решения задачи выбираем первый способ.
После выполненных операций создается решение ( Solution ), в котором есть один проект типа веб-сайт (рис. 5).
Рис. 5. Окно « Solution Explorer » после создания веб-сайта
Если запустить на выполнение данный проект, то внизу в правой части экрана ( SySTray ) отобразится окно загруженного локального сервера (рис. 6).
Рис. 6. Загрузка локального сервера для выполнения приложения
Следующим отобразится окно, изображенное на рисунке 7. В этом окне нужно подтвердить на кнопке « ОК «, чтобы модифицировать файл « Web.config » таким образом, чтобы можно было выполнять наше приложение.
Рис. 7. Запрос к модификации файла « Web.config «
В результате запуска, в активном веб-браузере откроется страница с приблизительно таким текстом (рис. 8):
Рис. 8. Текст, который выводится в веб-браузере
Для завершения работы приложения, нужно в MS Visual Studio вызвать команду « Stop Debugging » из меню « Debug «.
⇑
4. Добавление формы к приложению
Добавим новую форму к Web -приложению.
Для этого нужно выделить название приложения в Solution Explorer , сделать клик правой кнопкой «мыши» и в контекстном меню выбрать команду « Add New Item… » (рис. 9).
Рис. 9. Команда « Add New Item… «
Существует и другой способ добавления формы – вызов команды « Add New Item… » из меню « Website «.
Рис. 10. Добавление новой формы
После добавления, в Solution Explorer можно увидеть дополнительные два файла (рис. 11):
С помощью этих двух файлов можно изменять внешний вид формы и организовывать работу в ней.
Рис. 11. Файлы формы « Default.aspx » и « Default.aspx.cs «
С помощью кнопок Design и Source можно переключаться между режимом проектирования и режимом кода страницы Default.aspx (рис. 12).
Рис. 12. Режимы проектирования ( Design ) и кода ( Source )
⇑
5. Конструирование формы
Согласно с условием задачи, форма должна содержать следующие элементы управления:
⇑
5.1. Изменение размеров формы
Переходим в режим проектирования с помощью кнопки « Design » (рис. 12).
С помощью «мышки» увеличиваем размер формы, как показано на рисунке 13 (необязательно).
Рис. 13. Изменение размеров формы в режиме проектирования
⇑
С помощью «мышки» можно выносить на форму различные элементы управления. Работа с Web -формой есть точно такая же как и с формой типа Windows Forms . Текст на форме можно вносить непосредственно.
Для нашей задачи нужно вынести на форму следующие элементы управления:
- три элемента управления типа Label для обозначения « а = «, « b = «, « c = «;
- один элемент управления типа Button ;
- три элемента управления типа TextBox ;
- один элемент управления типа Label для вывода результата.
При вынесении элемента управления в правой нижней части экрана (окно Properties ) можно изменять свойства элементов управления (рис. 14).
Рис. 14. Изменение свойств элементов управления Web -формы
В целом, после построения, форма приложения должна иметь вид как показано на рисунке 15.
Рис. 15. Форма приложения в режиме проектирования
⇑
6. Программирование события клика на кнопке « Calculate «
Последним шагом есть программирование события, которое будет генерироваться при клике на кнопке « Calculate «. Для Web -приложений это осуществляется стандартным для MS Visual Studio способом. Программный код обработки события будет сформирован в файле « Default.aspx.cs «.
Таким образом, выделяем элемент управления Button1 . В списке свойств Properties переходим к вкладке Events . В вкладке Events делаем двойной клик «мышкой» напротив названия события « OnClick «. Система откроет файл « Default.aspx.cs » со следующим кодом:
В обработчик события Button1_Click(…) вводим код расчета площади треугольника по трем сторонам. В целом текст модуля « Default.aspx.cs » будет иметь вид.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page < protected void Page_Load( object sender, EventArgs e) < >protected void Button1_Click( object sender, EventArgs e) < double a, b, c, p, s; a = Double .Parse(TextBox1.Text); b = Double .Parse(TextBox2.Text); c = Double .Parse(TextBox3.Text); p = (a + b + c) / 2; s = Math .Sqrt(p * (p - a) * (p - b) * (p - c)); Label4.Text = "S text-align: justify;">После запуска приложения на выполнение можно проконтролировать его работу в Web -браузере (рис. 16).
Рис. 16. Выполнение Web -приложения в браузере Opera
После этого можно выносить приложение на Web-сервер. Но это уже другая тема.
Читайте также: