C# 与低代码平台的融合:以活字格为例的 Web API 开发实践
引言
在当今软件开发领域,低代码平台凭借其高效、便捷的特性逐渐成为开发的主流趋势。而 C# 作为一种功能强大的编程语言,在服务端开发中有着广泛的应用。将 C# 与低代码平台相结合,能够充分发挥两者的优势,快速开发出高质量的应用程序。本文将以葡萄城公司的企业级低代码平台 —— 活字格为例,详细介绍如何使用 C# 进行接口扩展,创建服务端 Web API。
正文
C# Web API 概述
C# Web API 是基于 .NET 平台(包括 .NET Framework 和 .NET Core)构建 HTTP 服务的框架,用于创建 RESTful Web 服务。REST 是一种软件架构风格,利用 HTTP 协议的特性(如 GET、POST、PUT、DELETE 等方法)来操作资源。在 C# 中,ASP.NET Web API 提供了模式和工具集,使开发者能方便地设计和实现对外暴露的 API 接口,供各种客户端应用程序(如 Web 浏览器、移动应用、桌面应用或其他服务器端应用)通过 HTTP 请求调用,以获取或修改数据。
使用 ASP.NET Web API 具有诸多特点和优势:
- 模块化与分离关注点:控制器负责处理 HTTP 请求,模型代表业务对象,视图模型可适配不同客户端的数据需求,路由机制将 URL 映射到特定操作。
- RESTful 架构支持:鼓励遵循 REST 设计原则,提供资源导向的服务,允许客户端通过标准 HTTP 方法访问资源。
- 跨平台兼容性:在 .NET Core 上,Web API 可运行于 Windows、Linux 和 macOS 等多种操作系统。
- 内容协商与格式化器:自动处理不同客户端要求的数据格式,如 JSON、XML 或其他自定义格式。
- 安全性与认证授权:内置对 OAuth、JWT 等多种安全策略的支持,实施灵活且安全的 API 访问控制。
- 测试友好:基于 HTTP,容易进行单元测试和集成测试,可配合 Postman、Swagger 等工具进行接口文档生成和测试。
- 扩展性:具有高度可扩展性,可通过中间件、过滤器等增强功能,适应复杂的企业级应用需求。
活字格中使用 C# 创建服务端 Web API 的步骤
环境准备
- 编译器:可选择 Visual Studio、Visual Studio Code、IntelliJ IDEA Rider 等。
- 依赖环境:系统需安装 Dot Net 6.0 运行环境。
- 使用语言:C# 或 VB.Net。
- 其他:具备 C# 基础知识及编程能力。
创建服务端 Web API
- 创建类库项目:打开编译器(以 IntelliJ IDEA Rider 为例),选择 Class Library (类库),Framework 选择 net6.0,点击 “Create” 创建类库项目。
- 添加活字格类库引用:在新建项目中选择 “Dependencies”,右键选择 “Reference” 添加引用,从活字格的安装路径下引用 “GrapeCity.Forguncy.ServerApi.dll” 文件。若安装目录为默认目录,文件路径为 “C:\Program Files\ForguncyServer\Website\bin”;若为自定义路径,则为 “自定义路径 \ForguncyServer\Website\bin”。
- 编辑 csproj 文件:右键项目,选择 “Edit”——“Edit xxx.csproj”,在打开的文件中添加如下代码并保存:
xml
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
编写服务端 Web API
为接收标准化 JSON 数据,示例代码如下:
csharp
using System.Text;
using System.Text.Json;
using GrapeCity.Forguncy.ServerApi;
namespace MyApiTest;
public class RequestBodyHandler : ForguncyApi
{
[Post]
public async Task ReceiveApiRequest()
{
var request = Context.Request;
var serverCommandName = request.Query["serverCommandName"]; // 从 URL 中取参数
if (request.ContentType != null && request.ContentType.Equals("application/json"))
{
var sr = new StreamReader(request.Body);
string content = await sr.ReadToEndAsync();
var obj = new { data = content };
string newContent = JsonSerializer.Serialize(obj).Replace("/r/n", "");
using HttpClient httpClient = new HttpClient();
var baseAddress = $"{request.Scheme}://{request.Host}{request.PathBase}/ServerCommand/{serverCommandName}";
HttpContent httpContent = new StringContent(newContent, Encoding.UTF8, "application/json");
HttpResponseMessage responseMessage = await httpClient.PostAsync(baseAddress, httpContent);
if (responseMessage.IsSuccessStatusCode)
{
await responseMessage.Content.ReadAsStringAsync();
}
else
{
throw new Exception($"Error: {responseMessage.StatusCode}");
}
}
else
{
throw new HttpRequestException("ContentType error, please check request content!");
}
}
}
编写完成后,右键项目点击 “Build Selected Projects” 进行项目 Build 打包。在新建类库项目的目录下找到生成的 dll 文件,打开活字格设计器,上传该 dll 文件到活字格工程中,此时 API 列表会显示 Web API 的请求地址。
活字格中使用 Web API
回到活字格设计器工程,新建一个服务端命令,命名为 “RedirectCommand”,设置参数值为 “data”,用返回命令将接收的数据保存到表里,注意服务端命令需设置为任何人可调用。借助 API 调试工具向创建的 Web API 发送请求,运行本地服务,使用 localhost 进行测试。发送请求后,活字格会将产生的数据接收到并保存到数据表中。
调试服务端 Web API
- 运行上传了打包完成的 Web API dll 文件的活字格工程。
- 在编译器中选择 “Run”——“Attach to Process” 附加到进程,搜索活字格本地服务的端口号,点击附加。
- 在代码左侧打断点,触发 Web API 调用后即可进行调试。
修改代码后再次调试
若修改代码,需执行以下步骤:
- 修改代码。
- 编译工程。
- 在活字格设计器中删除之前的 dll 文件。
- 上传新的 dll 文件。
- 运行活字格应用程序。
- 通过编译器的 “调试 -> 附加到进程” 重新附加到 ForguncyServerConsole.exe 进程上。
- 打断点调试。
- 若还需修改代码,回到第一步,直至修正所有问题。
C# 与低代码平台结合的优势
将 C# 与低代码平台(如活字格)结合,能够充分发挥两者的优势。低代码平台提供了可视化界面和拖拽功能,减少了手动编码的工作量,提高了开发效率。而 C# 作为一种强大的编程语言,为开发者提供了更多的灵活性和扩展性。通过使用 C# 进行接口扩展,开发者可以实现复杂的业务逻辑和功能,满足不同项目的需求。同时,C# Web API 的安全性、跨平台兼容性等特点,也为应用程序的开发和部署提供了保障。
结论
本文详细介绍了如何使用 C# 在活字格低代码平台上创建服务端 Web API。通过结合 C# 的强大功能和活字格低代码平台的高效性,开发者可以快速开发出高质量的应用程序。从环境准备、项目创建、代码编写到调试和修改,每个步骤都进行了详细的阐述。这种将 C# 与低代码平台相结合的开发方式,不仅提高了开发效率,还能充分满足不同业务场景的需求。希望本文能为开发者在使用 C# 进行低代码开发时提供有益的参考,帮助他们更好地利用这两种技术,开发出优秀的应用程序。完整的代码工程文件可参考:https://gitee.com/GrapeCity/my-api-test 。
C# 与低代码平台的融合:以活字格为例的 Web API 开发实践的更多相关文章
- 基于低代码平台(Low Code Platform)开发中小企业信息化项目
前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题. 最近几年来,随着全球经济 ...
- 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码
摘要:Forrester指出,中国企业数字化转型过程中,有58%的决策者正在采用低代码工具进行软件构建,另有16%的决策者计划采用低代码. 华为消息,知名研究与分析机构Forrester Resear ...
- 低代码平台--基于surging开发微服务编排流程引擎构思
前言 微服务对于各位并不陌生,在互联网浪潮下不是在学习微服务的路上,就是在使用改造的路上,每个人对于微服务都有自己理解,有用k8s 就说自己是微服务,有用一些第三方框架spring cloud, du ...
- 干货!可以使用低代码平台代替Excel吗?
低代码开发平台可以代替Excel?不用惊讶,答案是肯定的,而且,低代码开发平台可以完全代替Excel.例如Zoho Creator低代码平台,可以围绕数据存储.管理和创建工作流程.期间不需要IT人员介 ...
- 2021年哪个低代码平台更值得关注?T媒体盘点国内主流低代码厂商
2020年圣诞前夜,国内知名创投科技媒体T媒体旗下的T研究发布了2020中国低代码平台指数测评报告.报告除了对国内低代码行业现状进行总结外,还对主流低代码厂商的市场渗透和曝光进行测评. 报告认为,低代 ...
- 使用WtmPlus低代码平台提高生产力
低代码平台的概念很火爆,产品也是鱼龙混杂. 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒.一旦我的需求平台满足不了,那就是无解. ...
- OpenDataV低代码平台增加自定义属性编辑
上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明.我们先来看一下OpenDataV中的属性编辑功能. 当我们拖动一 ...
- vivo 低代码平台【后羿】的探索与实践
作者:vivo 互联网前端团队- Wang Ning 本文根据王宁老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术分会场议题 ...
- vivo 游戏中心低代码平台的提效秘诀
作者:vivo 互联网服务器团队- Chen Wenyang 本文根据陈文洋老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术 ...
- 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端
前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...
随机推荐
- kubelet.service: Failed with result 'exit-code'.
检查kubelet服务状态 systemctl status kubelet 检查journal日志 journalctl 的 -u 参数可以指定服务进行过滤,这样可以屏蔽 ...
- unigui的程序编译后自动运行傻傻的手动【7】
我们每次修改unigui程序后,一般需要编译后执行,查看效果.可是每次都要关闭杀掉服务程序,再刷新浏览器才能实现. EMB应该知道这个反人类的做法吧.实际上提供了参数配置:自动kill服务程序,自动打 ...
- Windows体验-注册表
打开方式中关闭在应用商店查找关联应用 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer NoUseStoreOpenWit ...
- Jmeter参数化总结
参数化步骤: 1.连接数据库 2.获取account表手机号数据 3.获取手机号个数 4.增加For Each控制器 5.将请求添加至循环控制器里面 脚本:循环登录.jmx 页面如下: 下面主要说明F ...
- AbstractAutoProxyCreator#postProcessBeforeInstantiation
一.定义 postProcessBeforeInstantiation 是 Spring AOP 动态代理的核心扩展点,通过提前创建代理对象优化性能,并支持丰富的自定义逻辑(如事务.安全) 二.代码分 ...
- 看了他,妈妈再也不用担心我被问到Mybatis缓存了
Mybatis缓存 一.一级缓存 1. 概念 sqlsession级别的缓存,即缓存的是SQL语句 同一个sqlsession中执行多次查询条件相同的SQL,mybatis会提供一级缓存进行优化 2. ...
- 如果 MySQL 中没有 MVCC,会有什么影响?
如果 MySQL 中没有 MVCC,会有什么影响? MVCC(Multi-Version Concurrency Control) 是 MySQL(尤其是 InnoDB 存储引擎)中一个至关重要的并发 ...
- 大模型参数组成计算QwQ-32B为例
计算大模型参数量主要依赖于模型的架构和各层配置,我们把常用大模型分为三层:输入层.transformer层.输出层. 输入层 参数组成是Embedding的词表总和 transformer层 参数组成 ...
- 做个小实验,帮你理解 Git 工作区与暂存区
做个小实验,帮你理解 Git 工作区与暂存区 Git 很重要,本文将通过实验的方式,带你理解 Git 的工作区.暂存区以及相关命令的使用. 1. 什么是工作区和暂存区? 在 Git 中,工作区和暂存区 ...
- wordpress插件开发时如何通过js调用图库/媒体选择器的问题
效果: 原文地址: wordpress插件开发通过js调用图库/媒体选择器的问题 - 搜栈网 (seekstack.cn)