Разработка веб-плагинов
С помощью веб-плагинов создаются:
- Новые типы представлений.
- Компоненты мнемосхем.
- Отчётные формы.
- Веб-страницы для работы с данными.
Рассмотрим разработку веб-интерфейса и интерфейса для настройки простого плагина, который будет иметь кодовое обозначение PlgAbc. Для разработки сложных плагинов изучите и используйте в качестве примеров исходный код существующих плагинов на GitHub.
Реализация веб-интерфейса
Создайте новый проект на основе шаблона Razor Class Library. Введите наименование проекта PlgAbc
, выберите фреймворк .NET 8.0 и поставьте галочку Support pages and views.
Добавьте зависимости на библиотеки ScadaCommon.dll
, ScadaCommon.Log.dll
и ScadaWebCommon.dll
. Актуальные бинарные файлы этих библиотек можно найти в директории установки Rapid SCADA, либо собрать самостоятельно из исходного кода.
По двойному щелчку в Solution Explorer откройте файл проекта PlgAbc.csproj
и отредактируйте его свойства, как показано ниже.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>disable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
<RootNamespace>Scada.Web.Plugins.PlgAbc</RootNamespace>
</PropertyGroup>
Создайте класс PluginInfo
и скопируйте код, который приведён ниже. Этот класс содержит информацию, описывающую плагин.
namespace Scada.Web.Plugins.PlgAbc
{
internal class PluginInfo : LibraryInfo
{
public override string Code => "PlgAbc";
public override string Name => "Плагин ABC";
public override string Descr => "Простой пример плагина";
}
}
Создайте класс PlgAbcLogic
, код которого показан ниже. Этот класс реализует базовую логику работы плагина. Обратите внимание, что пространство имён и имя класса должны содержать код плагина PlgAbc
. Изучите исходный код базового класса PluginLogic, чтобы узнать о возможностях, доступных при реализации логики плагина.
using Scada.Data.Entities;
using Scada.Web.Services;
using Scada.Web.TreeView;
using Scada.Web.Users;
namespace Scada.Web.Plugins.PlgAbc
{
public class PlgAbcLogic : PluginLogic
{
public PlgAbcLogic(IWebContext webContext)
: base(webContext)
{
Info = new PluginInfo();
}
public override List<MenuItem> GetUserMenuItems(User user, UserRights userRights)
{
return
[
new() { Text = "ABC", Url = "~/Abc/MyPage", SortOrder = MenuItemSortOrder.First }
];
}
}
}
Создайте пустую страницу Razor Page с именем MyPage.cshtml
, расположенную в области Abc. Структура проекта показана на следующем рисунке.
Содержимое модели страницы MyPage.cshtml.cs
показано ниже. Чтобы лучше понять исходный код страницы, рекомендуется изучить интерфейсы сервисов, которые доступны в веб-приложении через механизм dependency injection.
using Microsoft.AspNetCore.Mvc.RazorPages;
using Scada.Web.Services;
namespace Scada.Web.Plugins.PlgAbc.Areas.Abc.Pages
{
public class MyPageModel(IWebContext webContext, IUserContext userContext) : PageModel
{
public int ChannelCount => webContext.ConfigDatabase.CnlTable.ItemCount;
public string UserName => userContext.UserEntity.Name;
}
}
Файл вёрстки страницы MyPage.cshtml
имеет следующее содержимое:
@page
@model Scada.Web.Plugins.PlgAbc.Areas.Abc.Pages.MyPageModel
@{
Layout = "_MainLayout";
ViewBag.Title = "Моя страница";
}
<h1>Моя страница</h1>
<p>Количество каналов: @Model.ChannelCount</p>
<p>Текущий пользователь: @Model.UserName</p>
Пример веб-интерфейса плагина готов. Выполните сборку проекта и скопируйте PlgAbc.dll
в корневую директорию приложения Вебстанция.
Реализация интерфейса для настройки
Создайте новый проект на основе шаблона Class Library. Введите наименование проекта PlgAbc.View
, выберите фреймворк .NET 8.0.
Добавьте зависимости на библиотеки ScadaCommon.dll
и ScadaWebCommon.Subset.dll
.
По двойному щелчку в Solution Explorer откройте файл проекта PlgAbc.View.csproj
и отредактируйте его свойства, как показано ниже.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
<RootNamespace>Scada.Web.Plugins.PlgAbc.View</RootNamespace>
</PropertyGroup>
Добавьте ранее созданный файл PluginInfo.cs
в проект как ссылку. Обратите внимание, что значок файла изображает ссылку.
Создайте класс PlgAbcView
и скопируйте код, который приведён ниже. Этот класс реализует пользовательский интерфейс плагина для приложения Администратор. Обратите внимание, что пространство имён и имя класса должны содержать код плагина PlgAbc
. В нашем примере пользовательский интерфейс плагина фактически отсутствует, тем не менее необходима минимальная реализация интерфейса, чтобы плагин можно было использовать в приложении Администратор. Изучите исходный код базового класса PluginView, чтобы узнать о доступных возможностях.
namespace Scada.Web.Plugins.PlgAbc.View
{
public class PlgAbcView : PluginView
{
public PlgAbcView()
{
Info = new PluginInfo();
}
}
}
Выполните сборку проекта и скопируйте PlgAbc.View.dll
в директорию библиотек Администратора ScadaAdmin\Lib
Запуск плагина
Запустите приложение Администратор или перезапустите его, если оно было открыто. Создайте и откройте копию проекта HelloWorld
, затем в разделе Вебстанция > Плагины найдите разработанный плагин. Убедитесь, что при выборе плагина его описание корректно отображается. Если при отображении описания плагина возникла ошибка, скорее всего, допущена неточность в пространстве имён или имени класса интерфейса для настройки плагина.
Включите плагин PlgAbc и передайте проект на выполнение. В приложении Вебстанция перейдите на Главное меню > ABC, чтобы открыть веб-страницу, которую предоставляет разработанный плагин.