jjzjj

xml - 带有集成 XML 解析器的嵌入式 Web 服务器

coder 2024-06-25 原文

我需要将网络服务器集成到运行 Linux嵌入式设备中,并且正在评估 OSS 和商业产品。

系统要求不是特别严格:- 内存运行集高达 10MB,- 可以节省 20% 以上的 300MHz ARM 和更多突发,- UI 将在 jQuery 和 JSON 中,所以想要提供数百个KB 页面在不到一秒的时间内链接了十几个 CSS 和 JS 文件。

功能要求:- HTTPS 支持,- 10+ 个并发连接,- 针对 DOS 攻击进行了良好测试。

非常感谢一个基于 SOAP 实现的集成 XML 解析器。

不喜欢 PHP,但对服务器端 Javascript 也不是很了解,也不熟悉 Lua。因此,寻找模板解决方案的建议,也许是基于 Python 的堆栈。

已评论discussions on SOlists on Wikipedia .我知道 thttpd , Mongoose , Cherokee , Appweb .

在这一点上,我邀请详细的技术建议和实现选择的讨论,基于生产质量部署的第一手经验。

最佳答案

当谈到简单的 Python 服务器堆栈时,我从社区中听到的最常用于轻量级实现的组合是 CherryPy (以提供线程池 WSGI 服务器)Werkzeug (创建应用程序的基本结构)两者在 WSGI 上略有不同,大大加快了开发时间。

有一些非常好的笔记概述了基本的 python 框架比较(虽然不是在嵌入式环境中,但重点是轻量级部署。)at this question, in which Alex "the Machine" Martelli weighed in for these two.

如果您能负担得起 python 解释器的开销(我认为这没问题,因为您将其包含在符合条件的列表中),werkzeug 是设置包含简单端点的应用程序的绝佳方式。响应可以内嵌 mimetyped 以帮助输出您的 UI 库(Jquery 等)。 Werkzeug 文档中有很棒的示例。

我在比较 WSGI 服务器(以满足您对高并发连接和 DOS 生存能力的需求)方面能够找到的最佳资源之一可以在 Nicholas Piel's blog post on the subject 找到。 ,其中 CherryPy 被列为速度明智的最佳“物超所值”资源之一。 Cherry 中的 WSGI 服务器已准备好部署,这可以用作为您的 Werkzeug 应用程序提供环境的服务器进程,因此您不需要使用 mod_wsgi 实现更重的东西,例如 Apache。在中等负载下,Cherry 的平均速度很容易达到 2000 r/ps 左右,响应时间远低于一秒。

由于我不知道你将在哪种设备上部署它,我当然应该提到这两个平台都会定期更新,所以如果出于任何原因分配网络资源来更新设备不切实际。

通过将 python 的 minidom 模块 (v2.6+) 与 Werkzeug 中的端点路由相结合,您应该还会受益于非常快的开发速度。使用 Werkzeug 的 Map 功能构建复杂的 url 模式很简单,他们的文档页面上的教程对此进行了精彩的概述。在这两者之间,启动和运行 Web 服务应该不会太困难。

关于xml - 带有集成 XML 解析器的嵌入式 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964424/

有关xml - 带有集成 XML 解析器的嵌入式 Web 服务器的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  6. ruby-on-rails - 我如何将 Hoptoad 与 DelayedJob 和 DaemonSpawn 集成? - 2

    我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W

  7. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  8. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  9. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  10. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

随机推荐