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信息,可以查看下列链接
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应用程序。

Appweb+ESP学习笔记的更多相关文章

  1. KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 《寒江独钓》内核学习笔记(5)

    目录 . 相关阅读材料 . <加密与解密3> . [经典文章翻译]A_Crash_Course_on_the_Depths_of_Win32_Structured_Exception_Ha ...

  2. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  3. Linux内核学习笔记-2.进程管理

    原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  4. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  5. 《Linux内核分析》第八周学习笔记

    <Linux内核分析>第八周学习笔记 进程的切换和系统的一般执行过程 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163 ...

  6. 20135202闫佳歆--week2 操作系统是如何工作的--学习笔记

    此为个人学习笔记存档 week 2 操作系统是怎么工作的 一.计算机是如何工作的?--三个法宝 (一)三个法宝 1.存储程序计算机 所有计算机的基础性的逻辑框架. 2.函数调用堆栈 在低级语言中并不很 ...

  7. 《Linux内核分析》第一周学习笔记

    <Linux内核分析>第一周学习笔记 计算机是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/c ...

  8. 《Linux内核分析》第二周学习笔记

    <Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  9. 《Linux内核分析》第四周学习笔记

    <Linux内核分析>第四周学习笔记 扒开系统调用的三层皮(上) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.c ...

  10. 20135316王剑桥Linux内核学习笔记

    王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...

随机推荐

  1. CSS选择艺术以及CSS文本样式

    CSS选择的艺术1.css规则由两部分构成:选择器,声明(声明由属性和值构成且末尾跟一个分号)2.css注释:/*--*/3.CSS样式的引用(1)行内样式(内联样式)例如:<p style=& ...

  2. python全局变量和局部变量的关系

    今天看了一个全局变量,有点懵不知道全局变量是什么.然后就开始查找相关的资料 总结就一句话:你到哪里都是大爷,就是这么吊 有全局变量那么也有局部变量,同时也用一句话概括:外面怂成孙子,家里横成老子 接下 ...

  3. 按正斜线输出M*N的矩阵

    public static void outMatrix(int[][] array) { for(int row=0;row<array.length;row++) { int scolumn ...

  4. Jmeter——性能测试的认知以及思考bug(一)

    前言 性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据. 测试流程: 需求分析→环境搭建→测试 ...

  5. GPT-4 来了!这些开源的 GPT 应用又要变强了

    近日,在 GPT-3.5 发布的半年后,OpenAI 正式推出了大版本的 GPT-4,不同于 GPT-3 到 GPT-3.5 耗时两年,这次版本升级只用了半年.如果你对 OpenAI 不熟悉,答应我读 ...

  6. 屎上最全vue-pdf+Springboot与aspose-words整合,开箱即用

    前言 ⏲️本文阅读时长:约10分钟 主要目标: 1.实现Springboot与aspose-words整合,填充word模板并转化PDF; 2.前端vue整合vue-pdf实现PDF预览及下载 wor ...

  7. Spring 注解整理

    更多内容,前往IT-BLOG 一.核心容器 [1]@Configuration:告诉 Spring 这是一个配置类(配置类=配置文件)[2]@Bean:给容器中注册一个 Bean :类型为返回值类型, ...

  8. 剑指 offer 第 21 天

    第 21 天 位运算(简单) 剑指 Offer 15. 二进制中1的个数 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量). ...

  9. sqlmap的基本使用

    sqlmap的基本使用 一.注入 1.查询是否存在注入点 sqlmap -u "http://www.xx.com?id=x" --dbs 检测有哪些数据库 --current-d ...

  10. Kotlin 与 JAVA 不同之处

    添加kotlin混编支持 要在Android项目中添加Kotlin混编支持,需要进行以下步骤: 在项目的 build.gradle 文件中添加以下代码: kotlin android { ... // ...