← 返回文档中心

网页插件开发

使用网络插件您可以创建:

开发商适用版本V6.4更新时间2026-04-28负责人ScadaDoc

网页插件开发

使用网络插件您可以创建:

  • 新类型的视图。
  • 模拟图的组件。
  • 报告。
  • 用于数据操作的网页。

让我们看一下Web界面和配置界面的开发,一个简单的插件,它将被命名为血小板Abc。要开发复杂的插件,请学习并使用源代码GitHub 上的现有插件作为示例。

Web界面的实现

根据以下内容创建一个新项目剃刀类库模板。输入项目名称PlgAbc,选择.NET 8.0框架并设置支持页面和视图复选框。

添加依赖项ScadaCommon.dll,ScadaCommon.Log.dllScadaWebCommon.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地区。项目结构如下图所示。

PlgAbc project structure

的内容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.dllScadaWebCommon.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文件到项目中作为参考。请注意,文件图标看起来像一个链接。

PlgAbc.View project structure

创建一个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打开开发插件提供的网页。