217 Star 1.8K Fork 408

GVPdotNET China / NanUI

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
概述.md 4.68 KB
一键复制 编辑 原始数据 按行查看 历史
林选臣 提交于 2023-10-22 02:41 . 📖 WinFormium 文档 v1.0

资源

概述

WinFormium 框架提供了一系列的资源控制器,您可以使用这些资源控制器来管理您的资源文件以方便浏览器加载。WinFormium 的资源控制器基于 CEF 的 CefSchemeHandlerFactoryCefResourceHandler 接口实现,并对其进行了封装,使其更易于使用。

资源控制器的原理是为一系列的资源文件源映射一个 Url 地址,这个 Url 地址可以是 http://https:// 协议,也可以是任意自定义的协议。当浏览器加载这个 Url 地址时,资源控制器会根据文件来源加载相应的资源文件。

但需要注意的是,资源控制器其本质是通过拦截浏览器的请求并返回资源文件流来实现的,因此资源控制器提供的资源只能用于当前 WinFormium 应用程序进程,在进程外是无法访问的,这跟在本地运行一个 Web Server (例如:IIS、Nginx 等)有本质区别。比如您注册了 https://my.resource.local 这样一个地址,你可以在当前 WinFormium 应用程序中访问这个地址,但是在其他应用程序中是无法访问的,即使是在同一台电脑上。

目前 WinFormium 框架提供了以下资源控制器:

  • 嵌入式文件资源

    使用 .NET 的程序集作为资源文件的来源,可以将各种 HTML、CSS、JavaScript、图片等文件嵌入到您的 .NET 程序集中,然后使用嵌入式文件资源控制器来加载这些文件。

  • 本地文件资源

    使用本地某个文件夹内的文件作为资源文件的来源,可以将各种 HTML、CSS、JavaScript、图片等文件放置到任意文件夹中,然后使用文件资源控制器来加载这些文件。

  • 数据资源

    使用最接近 ASP.Net WebApi 的编码方式为前端提供数据类型的资源,您可以根据需求编写数据服务,并在数据服务中定义行为方法,并为数据服务或行为方法定义路由,这样前端就可以通过路由来访问这些数据接口了。

  • 代理映射资源

    使用代理映射资源控制器可以将一个 Url 地址映射到另一个 Url 地址,您可以简单的将其理解为一个 Url 的重定向,在实际开发中,使用代理映射资源可以解决如跨域访问、API 接口映射等问题。

注册资源控制器

您可以在 WinFormium 应用程序创建阶段使用 AppBuilder 来注册资源控制器,也可以在 WinFormium 应用程序配置阶段使用 WinFormiumStartup 类的 ConfigureServices 以配置服务的方式来注册资源控制器。

AppBuilder

class Program
{
    [STAThread]
    static void Main(){
        var builder = WinFormiumApp.CreateBuilder();

        var app = builder
        //...
        .UseLocalFileResource(new LocalFileResourceOptions
        {
            Scheme = "http",
            DomainName = "files.app.local",
            PhysicalFilePath = "<RESOURCE_FILES_DIR>"
        })
        .build();

        app.Run();

    }
}

WinFormiumStartup

class MyApp : WinFormiumStartup
{
    //...

    public override void ConfigureServices(IServiceCollection services)
    {
        //...
        services.AddLocalFileResource(new LocalFileResourceOptions
        {
            Scheme = "http",
            DomainName = "files.app.local",
            PhysicalFilePath = "<RESOURCE_FILES_DIR>"
        });
        //...
    }

}

使用资源

在上一节的示例中,我们注册了一个本地文件资源控制器(以两种不同方式),这个资源控制器的 Url 地址为 http://files.app.local,它的资源文件来源于本地的 <RESOURCE_FILES_DIR> 文件夹。

在 WinFormium 窗体中,您可以使用该 Url 访问到指定文件夹中的资源文件。例如访问:http://files.app.local/index.html,本地文件资源控制器将把该地址映射到本地文件 <RESOURCE_FILES_DIR>\index.html。如果有多级目录,例如:http://files.app.local/subdir/index.html,则本地文件资源控制器将把该地址映射到本地文件 <RESOURCE_FILES_DIR>\subdir\index.html

class MyWindow : Formium
{
    public MyWindow()
    {
        Url = "http://files.app.local/";  // 此处不用特意指定 index.html,因为资源控制器会自动映射到 index.html,
                                          // 这是通过 ResourceSchemeHandlerOptions 的 DefaultFileName 属性实现的。
    }
}

另请参阅

C#
1
https://gitee.com/dotnetchina/NanUI.git
git@gitee.com:dotnetchina/NanUI.git
dotnetchina
NanUI
NanUI
master

搜索帮助