【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
什么时候支持下火鸟的数据库
这个您可以在需求板块发帖建议的哦,产品经理会每天查看的。
https://gcdn.grapecity.com.cn/showforum-249-1.html
如果比较着急,可以使用本帖中的自定义数据源,只要这个数据库支持jdbc的连接方式,就可以连接的。 星海末 发表于 2024-8-13 08:53
什么时候支持下火鸟的数据库
您好,8.0的这个新特性可以通过JDBC驱动来连接不同的数据库,只需要实现对应接口即可接入Wyn。
FirebirdJ DBC下载:https://firebirdsql.org/en/jdbc-driver/
页:
[1]