题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/。在线留言。


试用EF开发WEB应用程序(15): EF Servlet, or EFSP?

经过之前的一系列理论和实践,用EFCGI开发普通的网络程序应该说是完全胜任了,这是毫无疑问的。即便有些工作暂时没有做(比如文件上传、验证码生成),也都属于细节方面的问题,与整个框架无碍。

CGI/FastCGI/EFCGI 好是好,虚拟主机提供商却高兴不起来。

你想啊,一个普通的网络应用,通常由N个CGI程序组成,每个CGI程序要启动N个进程(FastCGI),而虚拟主机提供商要同时为N个站点提供服务,由此可以推论,服务器上同时运行的进程个数超过三位数应该是很轻松的,这对服务器来说是一个巨大的负担。如果虚拟主机提供商不能很好的控制或限制CGI/FastCGI/EFCGI应用,他们宁愿不提供该服务。事实证明,此类虚拟主机服务确实不多。

虚拟主机提供商不高兴,我们开发者也好不哪里去,自己有服务器的毕竟是少数嘛。

有必要进行改进(或者叫妥协?)。

PHP中有一个 php-cgi 程序,它作为总代理,专门用于处理服务器上所有的(来自PHP的)CGI/FastCGI 请求。这样一来,整个网络应用中就不再需要其它 CGI/FastCGI 程序,服务器上只需启动有限个数的 php-cgi 进程即可,有效降低了服务器负担。

那么,我们一样可以搞个 ef-cgi 程序,作为总代理,专门处理服务器上所有的 CGI/FastCGI 请求。这个程序非常容易用“易语言.飞扬”实现,它本身就是一个普通的 CGI/FastCGI/EFCGI 程序嘛,只不过通过环境变量 SCRIPT_NAME 获取用户的实际请求,做一些额外的转发处理而已。(当然实际应用中还要有优化、缓存、安全等多方面考虑。)目前主流WEB服务器都支持这种模式,只需做些简单的配置即可。

有了 ef-cgi 这个总代理,又取消了所有其它 CGI/FastCGI/EFCGI 程序,那么真正处理请求的为何方高人?JAVA有JSP(JAVA Server Pages),微软有ASP(Active Server Pages),我们一样可以有 EFSP(EF Server Pages)啊。这当然是可行的。当然目前不可行,因为:1、成了解释执行的脚本,丢了EF高效执行的优势,与JSP/ASP/PHP/PERL/RUBY等先辈相比没有明显竞争力;2、EF目前必须编译执行(虽然吴涛很早就计划开发EF脚本,还不知何时动手)。

既要保留 ef-cgi 这个总代理,又不要脚本,看样子要参考 JAVA Servlet 了。对了,我们就搞 EF Servlet。“初步”想法是,一个“易语言.飞扬”类库(*.efl)对应一个Servlet,其中的某个类(Class)对应一个页面。“易语言.飞扬”类库(*.efl)已被编译为本地机器码,执行效率固然高效,加载过程也可忽略不计,将来配合类库的动态加载和动态卸载,还有望达到“热升级”的效果。这个方案目前来说“应该”是可行的,我(liigo)已进行过初步验证。

以上内容是与 bywayboy 那小子共同探讨的结果。想法不是很成熟,请批评指正。

转载于:https://www.cnblogs.com/fortest/archive/2008/05/03/2057002.html

试用EF开发WEB应用程序(15): EF Servlet, or EFSP?相关推荐

  1. 如何开发Web应用程序(非网站)

    看到这篇原文说,web应用程序和网站的开发不一样,收藏学习一下 这是一个经常被问到的问题,问的理所当然.作为一个程序员,为什么我就非要被认为知道如何开发Web应用程序呢?这个问题没有一个简单的答案,甚 ...

  2. 如何使用Ajax技术开发Web应用程序(2)

    在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并 ...

  3. java web底层原理_详解Java开发Web应用程序的底层原理

    前言 前面一篇文章,我从整个应用程序的整体以及跟运行环境的关系简单聊了一下我们现在常用的Spring框架的设计基础和准则,其中主要是控制反转和依赖注入,以及容器化编程等概念. 这里我不想去复述这些概念 ...

  4. Spring Boot Web应用程序中注册 Servlet 的方法实例

    Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...

  5. 解决web应用程序[]中的Servlet[dispatcherServlet]引发了load()异常

    今天在学习springMVC入门程序的时候,遇到了如下问题: ```java 24-Nov-2021 11:57:27.506 信息 [RMI TCP Connection(3)-127.0.0.1] ...

  6. 转载:用 Tomcat 和 Eclipse 开发 Web 应用程序

    原文地址:http://www.ibm.com/developerworks/cn/opensource/os-eclipse-tomcat/ 所需的组件 Eclipse V3.2 Callisto ...

  7. ASP.NET Core 1.0开发Web API程序

    .NET Core版本:1.0.0-rc2 Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2 开发及运行平台:Window ...

  8. 一个具有Spring Boot,Spring Security和Stormpath的简单Web应用程序-15分钟

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! 更新 ...

  9. 使用Axis开发Web Service程序

    今天是感恩节,差点又要在公司加班了.好在Web Service程序并不是特别难搞,下午终于在eclipse下调通过了,正确产生了服务器端和客户端的Java代码,apache的东西的确很不错. 说道We ...

最新文章

  1. 爬虫之requests模块发送post请求
  2. WindowsPE 第五章 导出表
  3. 启动Tomcat出现乱码--淇℃伅
  4. 阿里云 docker php mysql_PHP开发环境02 - 阿里云Ubuntu使用Docker配置PHP环境(只限于学习)...
  5. jenkins的groovy脚本没权限
  6. 一个文科妹子的前端悲欢编程之路
  7. 如何去读Binder的源码
  8. realmex7pro能用鸿蒙系统吗,realmex7pro有nfc吗-realmex7pro支持红外遥控功能吗
  9. qt实现类似everything搜索功能,速度没有everything那么快
  10. eclipse如何设置成保护眼的背景色
  11. 引导页如何在pc端实现
  12. mysql压缩修复数据库_压缩修复Access数据库
  13. oracle+dba+网课,[Oracle] 蓬动Oracle教程 DBA培训视频实战精品课及开发转Oracle 共52课...
  14. 手机短信验证码的实现
  15. 水木-如何解压.iso文件
  16. 安装最新版本zlib
  17. Anaconda点开一直处于loading application状态
  18. c8815 android os,华为C8815刷机乐蛙OS 0827 4.1.2ROM93期
  19. change charset of existed MySQL db
  20. 电影「哪吒之魔童降世」免 费 高 清 完 整 版 在 线 观 看

热门文章

  1. 数据分析基本思路及手法
  2. c语言static知识点,C语言知识点集锦
  3. 人脸对齐(十四)--LPFA
  4. json.loads解码字符串时出错:JSONDecodeError: Invalid \escape: line 1 column 2687 (char 2686)
  5. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
  6. 计算机关闭的时候自动更新,win7自动更新关闭有什么影响_win7系统关闭自动更新的步骤-win7之家...
  7. cookie分号后面没有值_Cookie的属性(cookie的设置、获取和删除)
  8. Spring 框架蕴含的设计思想
  9. MySQL 主键入门到精通
  10. Zephyr下使用TFLite进行语音识别