xitrum 是一个 Scala 的 Web 框架,基于 Netty 开发。结构如下图所示:
+-----------------+
| Your app |
+-----------------+
| Xitrum | <-- Hazelcast --> Other instances
| +-------------+ |
| | Action/View | |
| +-------------+ |
+-----------------+
| Netty |
| +-------------+ |
| | HTTP Server | |
| +-------------+ |
+-----------------+
主要特性:
Xitrum为快速响应提供了大量的客户端和服务器端缓存。 在web服务层,小文件被缓存在内存中,大文件通过NIO零拷贝被发送。关于零拷贝可参照https://my.oschina.net/plucury/blog/192577 Xitrum的静态文件响应速度类似于Nginx。 在Web框架层,可以以Rails的方式声明page、action和对象缓存。 Google所有的最好的经验例如 条件Get
介绍: +--------------------+ | Clients | ->客户端 +--------------------+ | +--------------------+ | Netty | ->NIO框架 +--------------------+ | Xitrum | ->Sc
xitrum工程搭建 1、建议用idea工具,eclipse我是没下载完。 2、sbt一定要更换,不然慢的无法完成。 不管在Windows还是linux要在当前用户的根目录.sbt下新建repositories文件 内容:阿里的地址库 [repositories] #local public: http://maven.aliyun.com/nexus/content/groups/public/
可以直接运行 Xitrum Browser ------ Xitrum instance 或者在在负载均衡器如HAProxy, 或反向代理如Apache或Nginx之后: Browser ------ Load balancer/Reverse proxy -+---- Xitrum instance1 +--
目前百度上没找到和Xitrum相关的技术博客,只能自己看它的Guide和Demo一点点研究了。 xitrum-en.pdf 3.28.2的分享 链接: https://pan.baidu.com/s/1ccpnI2 密码: n56k Xitrum简介: +--------------------+ | Clients | +--------------------+ | +------------
一、Request 参数种类 1. 文本参数:名为textParams,类型为 scala.collection.mutable.Map[Sting, Seq[String]] 1)queryParams:URL中 ? 后面的参数,例:http://example.com/blah?x=1&y=2 2)bodyTextParams:在POST请求体里的参数 3)pathParams:嵌入到URL的
Xitrum包含 jQuery Validation plugin用来在客户端做验证在服务器端提供验证辅助。 关于jQuery Validation plugin,参考http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 默认验证器 Xitrum提供的验证器在 xitrum.validator包中,有以下方法: check(v
在文件上传的form中,要设置 enctype="multipart/form-data" MyUpload.scalate: form(method="post" action={url[MyUpload]} enctype="multipart/form-data") != antiCsrfInput label Please select a file: input(type="
配置好的模板引擎在调用renderView, renderFragment, respondView时被调用。 配置模板引擎 在config/xitrum.conf中,模板引擎可以通过两种方式进行配置。默认为 xitrum-scalate template = my.template.EngineClassName ## 或者 template { "my.template.EngineC
Xitrum被设计成在生产环境下以多实例运行在代理服务器或负载均衡器之后的系统。 / Xitrum instance 1 Load balancer/proxy server ---- Xitrum instance 2 \
RESTful API: 符合RESTful架构的API称为RESTful API,不同的前端设备与后端进行通信的一种统一机制 什么是RESTful架构: (1)每一个URI代表一种资源; (2)客户端和服务器之间,传递这种资源的某种表现层; (3)客户端通过HTTP动词(GET用来获取资源,POST用来新建、更新资源,PUT用来更新资源,DELETE用来删除资源),对服务器端资源进行
Action: Xitrum 提供了3种Action:普通Action, FutureAction 和 ActorAction 它们都是Trait,而不是 Class 1. 普通Action: 当请求到来时,Action实现类直接在Netty的 IO线程上运行,不能用普通Action来执行 消耗很长时间的处理,否则Netty就不能接收新的连接或发出响应到客户端 import xitrum.Acti
模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎是把页面的静态部分和动态部分糅合在一起实现技术。 Jade是模板引擎中的一种,而Xitrum中默认使用Scalate。Scalate是一个基于Scala的模板引擎,它支持Jade形式的语言。 这个分类的随笔,主要介绍了Scalate-Jade在Xitrum中
Xitrum不会自动发送默认响应,必须调用respondXXX方法发送响应。如果没有调用respondXXX,Xitrum会保持HTTP连接,可以过后调用respondXXX。 调用 channel.isOpen 来检查 HTTP连接 是否还处于打开状态。还可以使用addConnectionClosedListener方法,定义连接关闭之后的动作。 addConnectionClosedListe
在磁盘上的静态文件(Static Files) Xitrum项目路径结构 config public favicon.ico robots.txt 404.html 500.html img myimage.png css mystyle.css js myscript.js src build.sbt Xitrum会自动注册 public/ 下
Xitrum提供了Ajax表单回发功能以支持 创建交互式的web页面 Xitrum的回发机制受了Nitrogen Web Framework的启发。 //AppAction.scala import xitrum.Action import xitrum.view.DocType trait postbackTest extends Action { override def layout
直接使用xitrum.Log对象 任何地方都可以直接使用xitrum.Log xitrum.Log.debug("My debug msg") xitrum.Log.info("My info msg") ... 使用xitrum.Log特质 如果想获得log在哪里创建的信息,应该继承xitrum.Log特质 package my_package import xitrum.Log objec
本章重点介绍Web框架及其部署。 PyCharm具有部署代码和文件的简单功能。 要使用PyCharm部署代码,我们需要添加一个带有菜单选项Settings -》 Build, Execution-》 Deployment的Web服务器。 现在,包括部署项目所需的各种配置的所有设置。 在Mappings选项卡中,用户可以指定本地代码的位置以及远程复制到何处。 可以使用Tools -》 Deploym
tornado.web — RequestHandler and Application classes Thread-safety notes Request handlers Entry points Input Output Cookies Other Application configuration Decorators Everything else tornado.template
本章重点介绍Web框架及其部署。 PyCharm具有部署代码和文件的简单功能。 要使用PyCharm部署代码,我们需要添加一个带有菜单选项:Settings -> Build, Execution -> Deployment 来部署Web服务器。 现在,包含部署项目所需的各种配置的所有设置。 在Mappings 选项卡中,用户可以指定本地代码的位置以及它应该远程复制到的位置。 代码可以使用工具菜单
22. Web MVC框架
第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发Web的工具进行介绍,第一小节介绍如何处理静态文件,如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点,第二小节介绍如何利用前面介绍的session来进行用户登录处理,第三小
了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。 但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。 每一个URL可以对应GET和POST请求,当然还有PUT、DELETE等请求,但是我们通常只考虑最常见的GET和POST请求。 一个最简单的想法是从environ变量里取出HTTP请求的信息,然后逐个判断: de
了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。 但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL。 每一个URL可以对应GET和POST请求,当然还有PUT、DELETE等请求,但是我们通常只考虑最常见的GET和POST请求。 一个最简单的想法是从environ变量里取出HTTP请求的信息,然后逐个判断: de
Python 作为一门强大的脚本语言,能够适应快速原型和较大项目的制作,它被广泛用于 web 应用程序的开发中。 Context WSGI Web 服务网关接口 (简称为 "WSGI" ) 是一种在 Web 服务器和 Python Web 应用程序框架之间的标准接口。 通过标准化 Web 服务器和Python web 应用程序框架之间的行为和通信,WSGI 使得编写可移植的的 Python web