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. Ubuntu系统Root用户无法登录解决办法

    默认 系统 root 登录 图形界面,出现 登录失败.解决方法如下: 1,登录普通用户, 打开终端执行命令, 使用su root或sudo -i切换到root用户(必须) su root 按照提示输入 ...

  2. Kubernetes(k8s)pod详解

    一.简介 在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合.这些容器共享存储.网络和命名空间,以及如何运行的规范.在Pod中,所有容器都被 ...

  3. 将spring boot项目打包成jar包

    在spring boot项目的pom文件中加入 <packaging>jar</packaging> 生成jar包 文件右键Open In Explorer找到文件所在位置 可 ...

  4. 转发:基于Lerna打造多包管理最佳实践之道

    最近在看vue-cli的源码部分,注意到这一个仓库下维护了多个package,很好奇他是如何在一个repo中管理这些package的. 我们组现在也在使用组件库的方式维护项目间共用的业务代码.有两个组 ...

  5. postgres 表字段修改

    更换字段名 alter table 表名 rename column 字段名 to 新字段名; 更换表名 alter table 表名 rename to 新表名; 更改字段长度 alter tabl ...

  6. jenkins脚本

    1.统计代码 pipeline { agent any parameters { choice( description: '你需要选择当前哪个分支进行统计 ?', name: 'branchNow' ...

  7. 使用Chloe 连接MySql服务器

    1.需要安装的依赖 Chloe Chloe.MySql MySql.Data(6.9.12) 这个版本对framework没有具体的版本要求 对于 MySql 数据库,需要安装 Install-Pac ...

  8. Python项目案例开发从入门到实战 - 书籍信息

    Python项目案例开发从入门到实战 - 爬虫.游戏和机器学习(微课版) 作者:郑秋生 夏敏捷 清华大学出版社 ISBN:978-7-302-45970-5

  9. 9. 实现包括前端后台的预约洗狗功能 - 使用Power App处理预约信息 - 创建Power Canvas App并实现基础功能

    ​ Power Canvas App可以通过画布设计和构建业务应用,无需通过传统编写代码的形式来构建,通过将元素拖动到画布上来设计我们的Power Canvas APP,可以与Miceosoft和第三 ...

  10. 关于EasyExcel的数据导入和单sheet和多sheet导出

    读写Excel基本代码 直接复制不一定能用 实体类 @ExcelIgnore 在导出操作中不会被导出 @ExcelProperty 在导入过程中 可以根据导入模板自动匹配字段, 在导出过程中可用于设置 ...