网页插件开发
使用网络插件您可以创建:
- 新类型的视图。
- 模拟图的组件。
- 报告。
- 用于数据操作的网页。
让我们看一下Web界面和配置界面的开发,一个简单的插件,它将被命名为血小板Abc。要开发复杂的插件,请学习并使用源代码GitHub 上的现有插件作为示例。
Web界面的实现
根据以下内容创建一个新项目剃刀类库模板。输入项目名称PlgAbc,选择.NET 8.0框架并设置支持页面和视图复选框。
添加依赖项ScadaCommon.dll,ScadaCommon.Log.dll和ScadaWebCommon.dll图书馆。库的二进制文件可以在RapidSCADA 安装目录中找到,或者从源代码编译。
双击项目节点解决方案浏览器打开项目文件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 Plugin";
public override string Descr => "Simple plugin example";
}
}
创建一个PlgAbcLogic其代码如下所示的类。该类实现了插件的基本逻辑。请注意,命名空间和类名必须包含PlgAbc插件代码。探索源代码插件逻辑基类来了解实现插件逻辑时可用的功能。
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 页面MyPage.cshtml位于Abc地区。项目结构如下图所示。
的内容MyPage.cshtml.cs页面模型如下所示。为了更好地理解页面源代码,建议查看服务接口通过依赖注入在 Web 应用程序中可用。
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有以下内容:
@model Scada.Web.Plugins.PlgAbc.Areas.Abc.Pages.MyPageModel
<h1>My Page</h1>
<p>Number of channels: @Model.ChannelCount</p>
<p>Current user: @Model.UserName</p>
插件的 Web 界面示例已准备就绪。构建项目并复制PlgAbc.dll到 Webstation 应用程序的根目录。
配置接口的实现
根据以下内容创建一个新项目类库模板。输入项目名称PlgAbc.View,然后选择 .NET 8.0 框架。
添加依赖项ScadaCommon.dll和ScadaWebCommon.Subset.dll图书馆。
双击项目节点解决方案浏览器打开项目文件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插件代码。在示例中,实际上插件没有用户界面,但是,需要对界面进行最小实现,以便可以在管理员应用程序中使用插件。查看源代码插件视图基类来了解可用的功能。
namespace Scada.Web.Plugins.PlgAbc.View
{
public class PlgAbcView : PluginView
{
public PlgAbcView()
{
Info = new PluginInfo();
}
}
}
构建项目并复制PlgAbc.View.dll到管理员库目录ScadaAdmin\Lib
运行插件
启动管理员应用程序或重新启动它(如果它已打开)。创建并打开该文件的副本HelloWorld项目中,然后找到开发的插件网站 > 插件部分。选择插件并确保其描述正确显示。如果显示插件描述时发生错误,则很可能是插件用户界面的命名空间或类名称不准确。
激活血小板Abc插件并上传项目以供执行。在 Webstation 应用程序中,导航至主菜单 > ABC打开开发插件提供的网页。