Eden.Sun 发表于 2024-7-18 18:11:32

【Wyn 8.0 】支持自定义数据源,快速打通数据

本帖最后由 KarenGao 于 2024-7-24 11:06 编辑

    当前市面上的数据库琳琅满目多种多样,虽然 Wyn 也在不断地增加更多的数据源类型,但是总有一些类型的数据源是当前版本兼顾不到的。为了保证客户的正常使用,Wyn 8.0 中增加了一种新的数据源类型——自定义数据源。我们只需要下载对应的数据源的驱动包,就可以进行连接。
    下面我们就介绍自定义数据源的使用方式。


    1. 环境需要
    生成自定义数据源时,需要保证环境中安装了.Net8.0 环境(安装 Wyn8.0 之后环境中会自动安装)。
   


    2. 获取自定义数据源
    下载附件中的 NativeJdbcProvider.zip 文件,解压之后文件如下:
   
   使用管理员权限打开 dos 命令框,进入解压后的目录下执行命令:dotnetpublish
   
    命令执行完毕之后会生成两个目录:
   
    进入其中的bin目录:bin\Release\net8.0,将整个 publish 目录保存到wyn的安装目录下的 DatasourceService 目录中。
   
   
    3. 配置文件
    在刚才的 publish 目录下有一个 NativeJdbcProvider.dll 文件,这个就是自定义数据源生成的文件,记录文件的路径。在 wyn 的配置文件中添加如下配置:
<DataProviders>
    <CustomNativeQueryDataProviderAssemblies>                  <sys:string>D:\GrapeCity\Wyn\DatasourceService\publish\NativeJdbcProvider.dll</sys:string>
    </CustomNativeQueryDataProviderAssemblies>
</DataProviders>
   
    PS:如果修改之后服务启动不了,或者不生效,可以看一下日志是否是不识别 <sys:string> 标签,如果是这个错误的话,就检查一下配置文件是否引入了 xmlns:sys="https://extendedxmlserializer.github.io/system"   规则:
   

    4. 下载驱动
    以 MySQL 数据库为例,在官网上下载 MySQL 的驱动包:Connector/J 9.0.0 ,然后将驱动包放在 NativeJdbcProvider.dll 的同级目录下:
   

    5. 创建数据源
    所有配置都完成之后,然后重启Wyn服务,在创建数据源界面就可以看到"自定义数据源",然后填写连接信息:
DriverPath:使用的驱动包所在的位置(支持相对路径,相对于NativeJdbcProvider.dll文件的路径);
DriverClass:驱动文件全路径类名称;
JdbcUrl:数据库连接字符串。
DriverPath = "mysql-connector-j-9.0.0.jar";
DriverClass = "com.mysql.cj.jdbc.Driver";
JdbcUrl = "jdbc:mysql://localhost:3306/my_database?user=root&password=root";

   

    6. 自定义数据源的使用
    创建的自定义数据源,不能直接看到数据库中的表信息,所以只能使用自定义SQL表来查询数据。
   

    7. JavaScript 数据源
    我们还提供了基于 JavaScript 的自定义数据源,使用方式和之前的自定义的JDBC数据源的使用方式类似,只是不是需要数据驱动。
    下载、解压附件中的 javascript_source.zip 文件,并复制到Wyn安装目录下:
   
    修改配置文件,配置的是 JavascriptProvider.dll 文件

   
    重启服务之后,可以看到 JavaScript 数据源,我们创建一个测试数据源:
Engine = Jint;
LimitMemory = 100;
TimeoutInterval = 30;
MaxStatements = 2000;

var response = helper.fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json'
    }
      });
   

    8. 使用选择
    JDBC 数据源常用语连接各种数据库数据源,需要下载对应的数据库驱动程序,连接之后使用数据库SQL语句进行数据的查询获取。Javascript 数据源是通过前端请求数据,不需要驱动,一般常用于json类型的接口数据。

    9. 接口开发说明
    自定义数据源是为了快速连接一些当前版本不支持的数据源类型,可以使用附件中的 NativeJdbcProvider.zip 与 javascript_source.zip 按照上面的步骤生成使用。而附件中的逻辑是我们写得固定的内容,如果有客户自己的需求,可以在代码中进行自定义开发。
    自定义开发流程如下:
    ① 使用 IDE 创建项目,并引入 Gcef.CustomProvider.Native.dll 库(见附件),
    ② 创建一个实现接口的类:Gcef.CustomProvider.Native.INativeQueryDataProvider
   
    ③ 修改程序代码,最后生成对应的项目。
    ④ 接口说明:
<font size="3">public interface INativeQueryDataProvider
{
    //
    // Summary:
    //   The name of the provider. Should be unique globally.
    static abstract string ProviderName { get; }

    //
    // Summary:
    //   Creates an instance of the native-query data provider statically.
    static abstract INativeQueryDataProvider CreateInstance();

    //
    // Summary:
    //   Configures the features of the provider.
    //
    // Parameters:
    //   features:
    static abstract void Configure(IFeatureCollection features);

    //
    // Summary:
    //   Executes a native query and returns the result as a data reader.
    //
    //   Each time this method is being called, a new instance of the current class will
    //   be created.
    //
    //   When implementing this method, you should make sure that all unmanaged resources
    //   are properly closed after the readerConsumer finished works.
    //
    // Parameters:
    //   nativeQuery:
    //
    //   readerConsumer:
    Task ExecuteAsync(INativeQuery nativeQuery, Action<IDataReader> readerConsumer);

    //
    // Summary:
    //   Tests the connection string. The implementation can just check the connection
    //   string or actually connect to the database.
    //
    //   As a converntion, this method should throw exceptions if the test failed.
    //
    // Parameters:
    //   connectionString:
    Task TestConnectionAsync(string connectionString);
}</font>
    具体的可以参考附件中的两个自定义数据源的写法。


星海末 发表于 2024-8-13 08:53:05

什么时候支持下火鸟的数据库

Eden.Sun 发表于 2024-8-13 09:00:59

星海末 发表于 2024-8-13 08:53
什么时候支持下火鸟的数据库

这个您可以在需求板块发帖建议的哦,产品经理会每天查看的。
https://gcdn.grapecity.com.cn/showforum-249-1.html

如果比较着急,可以使用本帖中的自定义数据源,只要这个数据库支持jdbc的连接方式,就可以连接的。

lucas.Yan 发表于 2024-8-13 09:03:14

星海末 发表于 2024-8-13 08:53
什么时候支持下火鸟的数据库

您好,8.0的这个新特性可以通过JDBC驱动来连接不同的数据库,只需要实现对应接口即可接入Wyn。
FirebirdJ DBC下载:https://firebirdsql.org/en/jdbc-driver/
页: [1]
查看完整版本: 【Wyn 8.0 】支持自定义数据源,快速打通数据