题记:用“易语言.飞扬”(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 那小子共同探讨的结果。想法不是很成熟,请批评指正。
分享到:
相关推荐
它广泛用于Web开发、数据分析、机器学习、人工智能等多个领域。理解Python的基础语法、数据结构(如列表、元组、字典)、控制流(if、for、while)、函数、类和模块是必要的。 2. **Git版本控制**:Git是一个分布式...
该机CPU为M37161EFSP,小信号处理块为TA1360ANG.开机后图声正常,有时几分钟,有时一二十分钟才出现无规律自动关机。关机前,图声无异常现象,关机后指示灯闪烁。 在未出现故障时,测得主电压为稳定的125V,总线...
该电视的中央处理器(CPU)是M37161EFSP,而小信号处理单元则是TA1360ANG。正常开机后,电视能够显示图像并播放声音,但在一段时间内可能出现无规律的自动关机现象,关闭前无明显异常,关机后指示灯会闪烁。 在进行...
基于springboot个人公务员考试管理系统源码数据库文档.zip
bimdata_api_client-4.2.1-py3-none-any.whl
numpy-1.20.2-cp39-cp39-linux_armv7l.whl
matplotlib-3.3.2-cp39-cp39-linux_armv7l.whl
bimdata_api_client-4.0.0-py3-none-any.whl
ta_lib-0.5.1-cp312-cp312-win32.whl
基于springboot的非学勿扰学习交流平台源码数据库文档.zip
基于springboot云平台的信息安全攻防实训平台源码数据库文档.zip
pillow-10.4.0-cp311-cp311-linux_armv7l.whl
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
基于springboot+web的学生作业管理系统源码数据库文档.zip
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
基于springboot网上书店源码数据库文档.zip
numpy-2.1.3-cp311-cp311-linux_armv7l.whl
基于springboot的校园消费点评系统源码数据库文档.zip
ta_lib-0.5.1-cp37-cp37m-win32.whl
Java高校学生信息管理系统源码 一、源码介绍 高校学生信息管理系统设计主要应用JAVA语言编程和mysql数据库连接等相关知识,需要熟练掌握Struts2、Spring、Hibernate基础 二、主要功能 高校学生信息管理系统设计主要应用JAVA语言编程和mysql数据库连接等相关知识,需要熟练掌握Struts2、Spring、Hibernate基础,将所 学知识在生活中灵活运用,高校学生信息管理系统的主要设计功能如下: (1)学生信息管理模块:包括所有学生信息的查询(用分页列表显示)、查看某个学生的详细信息、删除某学生信息、修改某学生信息以及学生信息的录入等子功能 (2)学生成绩管理模块:包括成绩信息录入、学生成绩查询、查看某个学生的成绩表以及删除学生