Файл: Руководство пользователя для разработанной системы. Пятый раздел приводит данные по информационной безопасности приложения.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 173

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


  • получение данных с сервера (обычно в формате JSON, или XML).

  • добавление новых данных на сервер.

  • модификация существующих данных на сервере.

  • удаление данных на сервере.

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

2.2 Обзор и определение основных технологий и средств


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

  • фреймворк Flutter как основа клиентского приложения;

  • фреймворк ASP.NETCore как основа серверного приложения;

  • технология GraphQL как замена RESTful-API серверного приложения;

  • база данных PostgreSQL как основная база данных.

2.2.1 Фреймворк Flutter


Flutter представляет собой кросс-платформенный, высокопроизводительный фреймворк с открытым исходным кодом для создания различного рода кроссплатформенных приложений для таких платформ как: Android, iOS, веб-приложения, десктопные приложения для платформ Windows, Ubuntu Linux [1].

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

Для построения UI во Flutter используется декларативный подход, вдохновленный веб-фреймворком ReactJS, на основе виджетов или компонентов. Для еще большего прироста в скорости работы интерфейса виджеты перерисовываются по необходимости — только когда в них что-то изменилось (подобно тому, как это делает Virtual DOM в мире веб-фронтенда).

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

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

Google разработали специальный архитектурный стиль строения приложения. BloC (Business Logic Component) — это архитектурный шаблон, представленный Google. Идея заключается в том, чтобы иметь отдельные компоненты (компоненты BLoC), содержащие только бизнес-логику, которая должна легко использоваться приложениями. Архитектурный стиль представлен на рисунке 2.2.



Рисунок 2.2 – Архитектура BLoC

2.2.2 C#


C# – язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998–2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio [10].

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников – языков C++, Delphi, Modula и Smalltalk – С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (в отличие от Haskell). С помощью языка C# можно создавать обычные приложения Windows, XML-веб-службы, распределенные компоненты, приложения «клиент-сервер», приложения баз данных и т. д.

2.2.3 Платформа .NET


.NET Framework – это программная платформа, выпущенная компанией Microsoft, которая подходит для разных языков программирования [11].

.NET достаточно широко распространён в сфере разработки внутрикорпоративных программных продуктов, но в веб-разработке всё же встречается относительно редко, как и другие программные продукты корпорации Microsoft. Поэтому найти разработчиков для веб-проекта бывает достаточно непросто. Использование. NET «тянет» за собой покупку и иного ПО от корпорации Microsoft (серверной ОС, СУБД и т.п.). Технология достаточно дорогая в разработке и сопровождении: кроме затрат на покупку лицензий на необходимое ПО существенный вклад в бюджет проектов вносят высокие зарплаты разработчиков.



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

2.2.4 ASP .NET Core


Для реализации серверной части данного предложения была выбрана платформа .NET Core [12].

Платформа ASP.NET Core представляет технологию от компании Microsoft, предназначенную для создания различного рода веб-приложений: от небольших веб-сайтов до крупных веб-порталов и веб-сервисов.

С одной стороны, ASP.NET Core является продолжением развития платформы ASP.NET. Но, с другой стороны, это не просто очередной релиз. Выход ASP.NET Core фактически означает революцию всей платформы, ее качественное изменение.

Версия состоит из коллекции библиотек СoreFX и небольшой оптимизированной среды выполнения CoreCLR. .NET Core – проект с открытым исходным кодом, поэтому вы можете наблюдать за его развитием и поддерживать его на GitHub.

Среда выполнения CoreCLR (Microsoft.CoreCLR) и библиотеки CoreFX распространяются через NuGet. Поскольку версия .NET Core представляет собой компонентизированный набор библиотек, вы можете ограничить количество API для своего приложения и использовать только нужные элементы. Кроме того, можно выполнять приложения на базе .NET Core в гораздо более ограниченных средах (например, в ASP.NET Core на Nano Server).

Чтобы улучшить компонентизацию, в .NET Core был обновлен факторинг API. Иными словами, существующие библиотеки для .NET Framework придется перекомпилировать для выполнения в .NET Core. Экосистема .NET Core является относительно новой, но она быстро развивается благодаря поддержке популярных пакетов .NET (JSON.NET, AutoFac, xUnit.net и многие другие).

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

ASP.NET Core может работать поверх кроссплатформенной среды .NET Core, которая может быть развернута на основных популярных операционных системах: Windows, Mac OS, Linux. И таким образом, с помощью ASP.NET Core мы можем создавать кроссплатформенные приложения. И хотя Windows в качестве среды для разработки и развертывания приложения до сих пор превалирует, но теперь уже мы не ограничены только этой операционной системой. То есть мы можем запускать веб-приложения не только на ОС Windows, но и на Linux и Mac OS. А для развертывания веб-приложения можно использовать традиционный IIS, либо кроссплатформенный веб-сервер Kestrel.

2.2.5 Entity Framework


Entity Framework является продолжением технологии Microsoft ActiveX Data и предоставляет возможность работы с базами данных через объектно-ориентированный код C#. Этот подход предоставляет ряд существенных преимуществ: вам не нужно беспокоиться о коде доступа к данным, вам не нужно знать деталей работы СУБД PostgreSQL и синтаксиса языка запросов T-SQL, вместо этого вы работаете с таблицами базы данных как с классами C#, с полями этих таблиц – как со свойствами классов, а синтаксис SQL-запросов, который в ADO.NET раньше нужно было вставлять в код C# в виде команд, заменен на более удобный подход с LINQ. Entity Framework берет на себя обязанности по преобразованию кода C# в SQL-инструкции [15].

Центральной концепцией Entity Framework является понятие сущности или entity. Сущность представляет набор данных, ассоциированных с определенным объектом. Поэтому данная технология предполагает работу не с таблицами, а с объектами и их наборами.

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

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

Отличительной чертой Entity Framework является использование запросов LINQ для выборки данных из БД. С помощью LINQ мы можем не только извлекать определенные строки, хранящие объекты, из бд, но и получать объекты, связанные различными ассоциативными связями.

Другим ключевым понятием является Entity Data Model. Эта модель сопоставляет классы сущностей с реальными таблицами в БД.

Entity Data Model состоит из трех уровней: концептуального, уровень хранилища и уровень сопоставления (маппинга).

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

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

Уровень сопоставления (маппинга) служит посредником между предыдущими двумя, определяя сопоставление между свойствами класса сущности и столбцами таблиц.


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

Entity Framework предполагает три возможных способа взаимодействия с базой данных:

– Database first: Entity Framework создает набор классов, которые отражают модель конкретной базы данных;

– Model first: сначала разработчик создает модель базы данных, по которой затем Entity Framework создает реальную базу данных на сервере;

– Code first: разработчик создает класс модели данных, которые будут храниться в бд, а затем Entity Framework по этой модели генерирует базу данных и ее таблицы.

2.2.6 База данных PostgreSQL


PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД).

Существует в реализациях для множества UNIX-подобных платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.

Основные преимущества PostgreSQL:

­ высокопроизводительные и надёжные механизмы транзакций и репликации;

­ расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки модулей расширения на языке C[10];

­ наследование;

­ возможность индексирования геометрических (в частности, географических) объектов и наличие базирующегося на ней расширения PostGIS;

­ встроенная поддержка слабоструктурированных данных в формате JSON с возможностью их индексации;

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

2.2.7 Язык SQL


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

SQL основывается на реляционной алгебре. Язык SQL делится на три части:

  • операторы определения данных;

  • операторы манипуляции данными (Insert, Select, Update, Delete);

  • операторы определения доступа к данным.

Основные функции системы управления базами данных:

  • управление данными во внешней памяти (на различных носителях);

  • управление данными в оперативной памяти;

  • журналирование изменений и восстановление базы данных после сбоев;

  • поддержка языков БД (язык определения данных, язык манипулирования данными, язык определения доступа к данным).