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 Servicesvia 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()方法( rendermethods)来显示数据,它可以通过重定向方法(redirectmethod)将客户端重定向到新的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应用程序。

Appweb+ESP学习笔记相关推荐

  1. 游戏数据的捕捉(郁金香学习笔记)

    目录: 1.得到角色对象属性 2.得到吃药的CALL 3.得到快捷键CALL 4.得到选中怪物的ID地址 5.得到怪物列表 6.得到怪物属性 7.得到显示血条CALL 8.得到普通攻击CALL 9.得 ...

  2. 天草脱壳视频学习笔记(逆向 OD)

    天草壳世界学习笔记: 1.OD的查找支持模糊查找 ?? 比如 要查找 E82091FBFFA1B8  可模糊查找:E8??91FBFF??B8 2.OD的插件idaficator 可以支持回滚 就是记 ...

  3. 天草脱壳视频学习笔记

    天草壳世界学习笔记: 1.OD的查找支持模糊查找 ?? 比如 要查找 E82091FBFFA1B8  可模糊查找:E8??91FBFF??B8 2.OD的插件idaficator 可以支持回滚 就是记 ...

  4. Intel VT学习笔记(七)—— EPT物理地址转换

    Intel VT学习笔记(七)-- EPT物理地址转换 要点回顾 EPT 支持检测 9-9-9-9-12分页 实验:EPT物理地址转换 参考资料 要点回顾 在上一篇中,已经初步实现了最小VT框架,但实 ...

  5. Intel VT学习笔记(六)—— VM-Exit Handler

    Intel VT学习笔记(六)-- VM-Exit Handler Reutrn To DriverEntry VM-Exit Handler External interrupt I/O instr ...

  6. Intel VT学习笔记(五)—— 调试技巧

    Intel VT学习笔记(五)-- 调试技巧 要点回顾 INT 3失效 调试技巧 参考资料 要点回顾 在上一篇中,我们主要学习了如何填写Guest state fields的各项字段,以及如何对错误码 ...

  7. Intel VT学习笔记(四)—— VMCS(下)

    Intel VT学习笔记(四)-- VMCS(下) 要点回顾 VM-Exit Information Guest state fields 代码实现 参考资料 要点回顾 在上一篇中,我们了解了如何设置 ...

  8. 硬编码学习笔记(二)—— 经典变长指令

    硬编码学习笔记(二)-- 经典变长指令 前言 指令结构 符号说明 寻址符号 操作数符号 上标符号 One-Byte Opcode Map 变长指令 ModR/M 例:0x88 例:0x89 例:0x8 ...

  9. 硬编码学习笔记(一)—— 经典定长指令

    硬编码学习笔记(一)-- 经典定长指令 前言 指令结构 符号说明 寻址符号 操作数符号 上标符号 One-Byte Opcode Map 经典定长指令:修改寄存器 0x40~0x47 0x48~0x4 ...

最新文章

  1. android java服务端_Android/Java从服务器端下载图片
  2. java数据库易错程序题_JAVA程序改错 (易错题)(示例代码)
  3. windows下面的文件拷贝到linux下面出现乱码
  4. oracle中如何设置主键并且让其自动增长
  5. HTTP 相应头相关
  6. python画k线图_Python绘制K线图
  7. python检查超过两个条件_python-基于多个条件检查,将值从另一个数据...
  8. visio画图(保存为pdf,不留空白)
  9. 完全免费!6个不可错过的图片、视频等资源网站分享,个个都是精品!
  10. ToStringBuilder.reflectionToString用法
  11. 从日本动漫看项目管理
  12. 搭建vue开发环境的步骤
  13. ms17010漏洞利用(主机漏洞利用)
  14. C++ | 通讯录管理系统
  15. 超详细|一篇搞定操作系统——设备管理
  16. 各大网站JQuery的CDN库
  17. Android 拍照 图片 颠倒90度
  18. 删除hdfs上的内容报错:rm: Cannot delete /wxcm/ Name node is in safe mode.
  19. 那些年看过的电影之《绿皮书》
  20. java 1m几个字节_1m等于多少kb - 巍巍的个人页面 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. vscode 下载慢解决方法
  2. redis之可视化工具
  3. 被Win10自带杀毒软件自动误删除的exe从这里找
  4. SQL SERVER2000 如何打开.MDF、.LDF文件
  5. 五花八门的\异地恋\大结局
  6. 企业发放的奖金根据利润提成问题
  7. 计算机二级请假条,请假条的范文标准版
  8. MySQL 精选 60 道笔试题
  9. Android FMRadio上层调试
  10. Python软件编程等级考试二级——20220618