搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
秋刀鱼在做梦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
一款高仿 Eyepetizer | 开眼短视频的 MVVM 开源项目
2
【论文阅读】联邦学习DLG攻击_NeurIPS2019_Deep Leakage from Gradients_深度梯度泄露,模型逆向攻击_联邦学习dgl攻击
3
一次性可以导入多少首歌曲到NoteBurner Spotify Music Converter中?
4
mysql utf8mb4 java_更改MySQL数据库的编码为utf8mb4
5
Python什么是闭包、闭包特征、定义闭包传入一个数求和并输出,定义一个装饰器:打印函数运行花费的时间,定义一个类:要求:包含一个对象属性,且用_(单下划线)命名的定义一个类方法(装饰器)_python闭包和类
6
简单存 Bean 对象 -- 五大类注解以及 Bean 方法注解_java bean注解
7
数据可视化之matplotlib实战:plt.xlim() ylim()函数 设置x轴y轴范围坐标
8
spring boot实现短信验证码功能_springboot 短信验证码 测试环境
9
YOLOv8全面分析_yolov8模型介绍
10
vscode+gitee+picgo实现稳定图床_vscode picgo
当前位置:
article
> 正文
Appweb+ESP学习笔记
作者:秋刀鱼在做梦 | 2024-07-15 18:23:07
赞
踩
appweb
Appweb+ESP学习笔记
1.Appweb简介
Appweb HTTP Web服务器是最快的小型Web服务器。这是一个高性能,紧凑的嵌入式网络服务器,具有模块化,安全的核心。它支持广泛的功能集合,包括:HTTP/1.1,TLS/SSL,CGI, PHP,ESP,虚拟主机,摘要式身份验证等。Appweb支持动态web应用程序框架,如ESP和PHP。它也支持像CGI这样的旧网页制作策略。主要包含的一些组件如下:
● HTTP web server程序和库
● HTTP client程序和库
● 管理和监视进程
● ESP web框架
● 可选的CGI、Ejscript、ESP和PHP模块
● SSL/TLS支持包
● 文档和源码
特性:
● 快速开发。Appweb 提供最简单、最低消耗的开发 web 应用方法,它包含了嵌入式 web 应用开发所需的全部特性,极大的缩短了开发时间。
● 最小的资源需求。Appweb 非常简洁和快速,只需要极小的系统资源,最小只需 2MB 的存储空间,运行时最少只需 1MB 内存。
● 可定制的开发环境。Appweb 高度模块化,你可以只选择所需的特性,并且支持运行时模块加载和编译时控制。
● 安全可靠。支持 SSL/TLS,提供最基本的验证,沙盒限制,访问和错误日志。
● 性能。事件驱动的多线程核心提供了最快的响应。
●
标准化。Appweb 支持 HTTP/1.0 、HTTP/1.1 、CGI/1.1 、SSL RFC 2246 、HTTP RFC 2617 。
●
可移植。Appweb 支持 Linux 、Windows 、Mac OSX ,支持 ARM 、MIPS 、i386/X86/X86_64 、PowerPC 等。
地址:
Appweb的Document:
https://www.embedthis.com/appweb/doc/
ESP的Document:
https://www.embedthis.com/esp/doc/
Appweb官方下载地址:
https://www.embedthis.com/appweb/download.html
Appweb的Github下载地址:
https://github.com/embedthis/esp/releases
ESP官方下载地址:
https://www.embedthis.com/esp/download.html
ESP的Github下载地址:
https://github.com/embedthis/esp/releases
为了了解更多Appweb信息,可以查看下列链接
Appweb Design Goals
Appweb Target Uses
Appweb Internals
Appweb Architecture
Appweb Web Site
Appweb Download
Embedthis Web Site
2.ESP简介
ESP是一个Web框架,可以使创建快速,动态的Web应用程序和Web站点变得更加简单。 ESP应用程序使用C语言进行服务器端编程,从而可以轻松访问系统或硬件数据。 结果是快速和响应的Web应用程序。
ESP不是传统的低级环境。 这是一个微不足道的MVC框架。 ESP具有您通常从企业Web框架期望的所有功能。 ESP也是很好的发展。 如果网页或控制器被修改,则代码被透明地重新编译并重新加载。 这为Web应用程序提供了“脚本式”灵活性的无与伦比的性能。
ESP Web 框架提供了一套完整的组件,包括:
● HTTP Web服务器
● 模块-试图-控制器框架
● C控制器的动态加载器
● 在Web页面中使用嵌入的C代码模板化
● 应用程序和支架生成器
● web sockets
● 嵌入式数据库
● 数据库迁移
● 广泛的程序api
● 库的扩展包
● 完整部署web应用程序的工具
1)ESP 模式
ESP支持几种设计模式:
● Stand-alone ESP web pages (独立的ESP web页面)
●
Web Services via ESP Controllers (通过ESP控制器的web服务)
● ESP Model-View-Controller applications (
MVC
) (ESP的模型-视图-控制器应用程序)
● Single Page Applications (
SPA
) (单页应用程序)
Ⅰ.
Stand-alone ESP web pages(独立的ESP Web页面)
ESP页面是一个标准的HTML网页,带有嵌入式C代码,可在运行时执行以创建动态客户端响应。 页面通常具有“.esp”扩展名,并可以使用ESP布局页面在一个地方定义应用程序的外观和风格。
C代码嵌入在<%内容%>标记之间。 例如:
Ⅱ.
Web Services
via ESP Controllers
( 通过ESP控制器的Web服务)
ESP特别适合高性能的Web服务。 ESP允许将URL直接绑定到C函数。 当请求URL时,执行相应的C函数(通常称为动作)来动态地产生响应。 这些操作通常分组为一个可加载的ESP控制器文件。 一个简单的上传控制文件upload.c,例如:
分析其中的关键字段
int esp_controller_espapp_upload();
由
esp+controller+app名字+控制器名字
组成,另外一个关键
espDefineAction(route, "upload/doUpload", doUpload);
其中"upload/doUpload"比较关键,由
控制器名字+URI
组成,URI为html 表单action字段自己定义的请求路由,如
<form method="post" action="/upload/doUpload" enctype="multipart/form-data">
表单中的action URI就是doUpload,那么当表单请求的时候,会自动加载控制器(
/controllers/upload.c
)文件,执行doUpload函数。
renderView("upload/upload");重定向到upload文件夹下的upload.esp页面。
Ⅲ.
ESP Model-View-Controller applications(
ESP的模型-视图-控制器应用程序
)
模型 - 视图控制器应用程序(也称为MVC应用程序)是组织大型Web应用程序的成熟范例。 在这种模式中,它是管理包括数据库在内的应用程序状态的“模型”。 “控制器”响应输入,然后调用相关的“视图”来生成用户界面。 它最初是在70年代开发的,最近更适合于Web应用程序,并被Ruby on Rails等框架所普及。 ESP使用与嵌入式旋转相同的范例。
ESP支持MVC应用程序,并提供esp应用程序生成器来创建MVC应用程序和框架。 ESP支持两种类型的MVC应用程序:
●
Server-side MVC Applications (
服务器端MVC应用程序)
ESP通过提供使用Expansive网站生成器(
Expansive
)来实现服务器端MVC应用程序。 Expansive提供开发时间脚本,布局页面和部分页面,以支持在将动态数据传递到客户端之前轻松地将动态数据插入到网页中。 通过使用主布局页面来实现共同的外观。
●
Single Page Applications (单页面应用程序)
单页应用程序将整个Web应用程序作为一个页面提供,然后根据需要在后台逐步下载资源和数据。 通过这种模式,客户端通过客户端的JavaScript框架(如
Aurelia
)来定义整个用户界面。 服务器提供初始页面加载和正在进行的数据。 这种方法可以提供更加灵敏和流畅的用户体验,而不会由于页面重新加载而导致延迟。 ESP非常适合SPA应用程序,可以为这些应用程序提供所有必需的资源和数据。
2)ESP Web框架
ESP Web框架主要的部分如下:
●
HTTP Web Server
●
ESP Pages
●
ESP Controllers
●
ESP Models
● ESP Compilation
● ESP Generator
●
ESP API
3)HTTP Web 服务器
ESP包括在Appweb中使用了多年的Embedthis HTTP引擎。 这是一个高性能,基于事件的多线程HTTP引擎。 它完全支持HTTP / 1.1扩展WebSockets,会话,SSL,安全限制和防御性对策。
ESP页面提供MVC框架的“视图”部分,负责生成用户界面。 他们提供:
● 嵌入式c语言代码用于HTML响应
●
便利例程的ESP API库,用于管理Web请求,会话状态和呈现输出
4)ESP 页面指令
ESP支持以下特殊的序列用于Web页面
更多详细信息指令,查看
ESP Page Directives
。
5)ESP Controllers (ESP控制器)
ESP控制器是为了管理资源或资源组而绑定到特定URL的C函数的集合。 通常,控制器将使用RESTful路由将URL映射到特定的操作。
一个控制器通常编码在一个源文件中,尽管它可以引用任何外部库。 当接收到控制器中的任何操作请求时,控制器将被动态编译,保存和加载。 如果源代码被修改,则控制器将被重新编译并重新加载。 或者,可以使用esp命令预编译控制器(esp compile或者appweb-esp -r compile),以便在生产中的目标系统上不需要编译器。 编译的控制器作为共享库保存在缓存目录中。
●
Actions
当ESP接收到服务请求时,请求被解析,然后分派给控制器中的一个特定的功能,称为一个action。 action功能的工作是
① 响应请求
② 将响应视图回送给客户端
action如何响应请求取决于请求参数,查询信息,表单参数以及其他HTTP和应用程序状态信息。
下面是一个示例动作函数,它根据用户提交的表单数据更新数据库表格中的“params”。(
目前官网给的renderView()为renderView("post-edit"),在appweb-6.1.1版本中并不通用,下面为appweb-6.1.1示例代码
)。
一个action函数可以通过调用render()方法(
render
methods
)来显示数据,它可以通过重定向方法(
redirect
method
)将客户端重定向到新的URI。
如果操作方法没有明确地render任何数据,则ESP将呈现与操作功能同名的ESP网页。 该网页可以完全访问控制器和请求状态。 这是控制器响应请求的常见模式,ESP视图页面将响应格式化到客户端。
6)ESP Models and Databases(ESP模式和数据库)
●
Embedded Database Interface (嵌入式数据库接口)
ESP支持用户可选数据库之上的嵌入式数据库接口(EDI),例如:SQLite或MDB。 MDB数据库是一个很小的内存数据库,非常适合嵌入式应用程序。 SQLite是嵌入式应用程序的完整SQL实现。 MDB是最小和最快的,但功能最少。
●
Migrations(迁移)
ESP生成器程序可以创建数据库migration模块。 这些是创建和修改数据库表的小程序。 迁移对创建数据库和测试数据非常有用。
7)ESP API
ESP Web框架有一套广泛的API来涵盖所有可能的设计需求。 它还定义了一个表达简洁的简短API,使常见任务变得简单。 有关更多详细信息,请参阅
ESP API Referenc
。
ESP使用垃圾收集器,因此您永远不需要释放在网页或控制器中分配的ESP内存。 这导致更安全,可靠的Web应用程序。
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop】
推荐阅读
article
MybatisPlus
多表
联查
-
分页
关联
查询
+根据id获取多表
联查
后的单行数据_mybatisplu...
首先在mapper接口中再定义
分页
的
关联
查询
方法,复用
分页
类page,querywrapper组装where条件@Map...
赞
踩
article
Spring
GateWay
:
网关的
转发
细节_
springgateway
转发
原理...
// Step 7
:
真正发起请求 return nettyOutbound.options(NettyPipelin...
赞
踩
article
c++
多态
详解...
综上:如果满足
多态
,看指向对象的类型,调用这个类型的成员函数如果不满足
多态
, 看调用者类型,调用这个类型的成员函数解释:...
赞
踩
article
mysql
+
canal
+RabbitMQ监控
数据库
变化_
canal
rabbitmq
mysql
...
对
canal
主要修改两个配置文件
canal
.properties,instance.properties。--->NO...
赞
踩
article
数业
智能
荣登「
全球
应用
算法
模型
大赛
50强」...
近日,由上海市经济和信息化委员会、上海市普陀区人民政府,上海市人工
智能
行业协会主办,上海人工
智能
研究院等单位联合承办的《...
赞
踩
article
网格
上的
最
短
路径
动态规划法(C++实现)_
网格
最
短
路径
算法...
给定一个包含正整数的m x n
网格
,每次只能向下或向右移动一步,定义
路径
长度是
路径
上经过的整数之和。请找出一条从左上角到...
赞
踩
article
如视
“VR+
AI
”实力闪耀
2024
世界
人工智能
大会
...
此外,
如视
生成的数字孪生工厂,还是工厂员工培训的绝佳场地,员工可在沉浸式的空间互动中,对操作流程、应急路线等建立直观认识...
赞
踩
article
阿里
面试官
内部题库:2022年
Java
社招岗(正式版)
面试题
_
阿里
云
java
社招题
...
这不马上就是金三银四的面试跳槽季了嘛,我也是通过一些小手段为大家拿到了一份
阿里
巴巴2022年
Java
架构师岗
面试题
(正式...
赞
踩
article
Linux
高级编程 -
信号量
semaphore
_
semaphore
arrays
...
信号量
semaphore
信号量
(
semaphore
)与之前介绍的管道,消息队列的等 IPC 的思想不同,
信号量
是一个计...
赞
踩
article
Python
- 深夜
数据结构
与
算法
之
Stack
&
Queue
_
python
栈
队列
...
Python
Stack
栈与
Queue
队列
简介与
算法
练习。_
python
栈
队列
python
栈
队列
...
赞
踩
article
MyBatis
-
Plus
不写任何resultMap和SQL执行
一对
一、
一对
多、多对多
关联
查询
_myb...
多对多表结构:course: (course_id, name) child: (child_id, name) stu...
赞
踩
article
Ubuntu
npm
切换淘宝镜像源_
unbuntu
npm
taobao
...
npm
切换到淘宝源默认的
npm
下载地址:http://www.
npm
js.org/淘宝
npm
镜像的地址:https:/...
赞
踩
article
android
dumpsys
分析,
Android
内存分析工具-
dumpsys
meminfo
...
首先来看怎么使用 执行如下shelladb shell
dumpsys
meminfo
[包名]假如我们要跟踪的应用包名...
赞
踩
article
栈
--
python
篇_
python
如何
创建
栈
...
栈
--
python
篇,本篇文章使用
python
实现
栈
的增、删、改、查、插入、删除_
python
如何
创建
栈
python
如何...
赞
踩
article
Master
Startup_
task
:
master
startup
...
big table的架构是一个和GFS mapreduce非常类似的结构,它有一个中心的
master
server,管理...
赞
踩
article
Ubuntu18.04 编译
安装
Realtek
8852 无线网卡
驱动
_小新
ubuntu
wifi
...
先是一步一步按照做的,到make的时候发现编译报错。_小新
ubuntu
wifi
驱动
安装
rtw89
小新
ubuntu
wi...
赞
踩
article
高级
前端
工程师
面试题...
原型链是JavaScript对象之间基于原型的继承链。每个对象都有一个内部属性[[Prototype]],指向它的原型,...
赞
踩
article
解决
Cipher
Suites
导致的“未能创建
SSL
/
TLS
安全通道”异常问题_
tls
encr...
故障描述昨天晚上在生产环境的某台计算机遇到了访问第三方应用报“未能创建
SSL
/
TLS
安全通道”的异常。开发的同事重新...
赞
踩
article
MyBatis
-
Plus
级联
查询
(多表
联查
)
_
mpjbasemapper
...
本文介绍了如何使用Mybatis-
Plus
插件Mybatis-
Plus
-Join(mpj)进行左连接和右连接
查询
,通过M...
赞
踩
article
2022年
注册
会计
师
(
CPA
)
会计
考试
模拟试题卷及答案_注会模拟卷...
题库来源:优题宝公众号2022年
注册
会计
师
(
CPA
)
会计
考试
模拟试题卷及答案,由优题宝公众号根据最新
注册
会计
师
(
CPA
)...
赞
踩
相关标签
vue.js
mybatis
mysql
java
spring
gateway
python
c++
开发语言
java-rabbitmq
分布式
大数据
数据库开发
人工智能
机器学习
动态规划
算法
vr
面试
jvm
程序人生
职场和发展
semaphore
linux
系统编程