GeneXus开发平台
GeneXus是一个敏捷的开发平台,使您的公司轻松应对技术的发展。GeneXus极大的简化了软件程序的开发过程,能自动生成从数据库到代码、前端到后端、服务器端到客户端服务的所有内容。是第一个真正实现100%自动生产的企业级低代码开发平台。
GeneXus会自动生成具有多种体验的应用程序:用于移动和智能设备的本地应用程序,Watch,Apple TV,响应式和渐进式Web应用程序,甚至包括聊天机器人和虚拟助手。GeneXus允许您将应用程序与现有和外部系统集成,开发新功能或创建全新系统。它还简化了来自众多平台的信息访问和处理,而无需修改当前系统。
GeneXus基于简单的应用场景快速配置非核心的流程应用,简单辅助应用的快速定制流程+表单驱动,大量的流程片段。针对企业复杂核心业务系统开发,支持软件全生命周期(Dev&Ops),基于“知识库”积累的增量开发,客户真正拥有的企业级应用。
private byte[] _data;
[GlobalSetup]
public void Setup()
{
_data = new byte[64];
RandomNumberGenerator.Fill(_data);
}
[Benchmark]
public string ToHexString() => Convert.ToHexString(_data);
JNPF
JNPF快速开发平台是传统软件开发逐步优化和演变的产物,以其高效灵活稳定等特点逐步应用至企业各业务场景。传统的开发方法过于昂贵和僵化,无法为企业提供所需的高效和敏捷的开发流程,且交付周期长定制能力弱,难以应对不断变化的市场和客户期望。为提高软件开发效率,对代码进行模块化封装的低代码产品进入开发者视野。http://www.jnpfsoft.com/?from=CSDNm
private char[] _array = new char[128];
private char _c = 'c';
[Benchmark]
public void SpanFill() => _array.AsSpan().Fill(_c);
[Benchmark]
public void ArrayFill() => Array.Fill(_array, _c);
- 采用前后端分离的模式:前端基于
vue-element-admin
框架定制开发; - 统一授权、认证:基于
Spring Security
、Spring OAuth2
、JWT 实现的统一认证服务中心,登录基于Spring Security
的标准登录流程。客户端授权支持Oauth2.0
的四种授权模式:授权码模式
、简化模式
、密码模式
、客户端模式
,授权流程跟标准的Oauth2
流程一致。web 端采用简化模式登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于Spring Social
的三方账号登录方式,如微信/QQ
、微博
等,并提供拓展模式,支持更多三方渠道。 - 灵活的权限控制:基于
RBAC
权限管理,该功能模块下的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信
)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中。 - 支持多租户:简单配置即可转变多租户模式,实现数据隔离;
- 支持多种数据库:支持
MySQL
、SQL Server
、Oracle
、PostgreSQL
、达梦数据库
、人大金仓数据库
等,您无需关心不同类型数据库间的语法区别; - 统一接口管理:基于
Swagger
拓展的API文档服务,主要提供在平台开发阶段的API文档管理和API调试等功能。
private string _str;
[GlobalSetup]
public async Task Setup()
{
using var hc = new HttpClient();
_str = await hc.GetStringAsync("https://www.gutenberg.org/cache/epub/3200/pg3200.txt"); // The Entire Project Gutenberg Works of Mark Twain
}
[Benchmark]
public string Yell() => _str.Replace(".", "!");
[Benchmark]
public string ConcatLines() => _str.Replace("\n", "");
[Benchmark]
public string NormalizeEndings() => _str.Replace("\r\n", "\n");
using System.Text.Json;
namespace SerializeToFile
{
public class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureCelsius { get; set; }
public string? Summary { get; set; }
} public class Program
{
public static void Main()
{
var weatherForecast = new WeatherForecast
{
Date = DateTime.Parse("2019-08-01"),
TemperatureCelsius = 25,
Summary = "Hot"
}; string fileName = "WeatherForecast.json";
string jsonString = JsonSerializer.Serialize(weatherForecast);
File.WriteAllText(fileName, jsonString); Console.WriteLine(File.ReadAllText(fileName));
}
}
}
// output:
//{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}
private string _text;
[Params("HTML", "URL", "JSON")]
public string Encoder { get; set; }
private TextEncoder _encoder;
[GlobalSetup]
public async Task Setup()
{
using (var hc = new HttpClient())
_text = await hc.GetStringAsync("https://www.gutenberg.org/cache/epub/3200/pg3200.txt");
_encoder = Encoder switch
{
"HTML" => HtmlEncoder.Default,
"URL" => UrlEncoder.Default,
_ => JavaScriptEncoder.Default,
};
}
[Benchmark]
public string Encode() => _encoder.Encode(_text);