Xitrum学习笔记01

目前百度上没找到和Xitrum相关的技术博客,只能自己看它的Guide和Demo一点点研究了。

xitrum-en.pdf 3.28.2的分享 链接: https://pan.baidu.com/s/1ccpnI2 密码: n56k

Xitrum简介:

+--------------------+
| Clients |
+--------------------+
|
+--------------------+
| Netty |
+--------------------+
| Xitrum |
| +----------------+ |
| | HTTP(S) Server | |
| |----------------| |
| | Web framework | | <- Akka, Hazelcast -> Other instances
| +----------------+ |
+--------------------+
| Your app |
+--------------------+

注释:

1.Akka是一个开发库和运行环境,可以用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用。使构建高并发的分布式应用更加容易。

2.Hazelcast作为一个高度可扩展的数据分发和集群平台,提供了高效的、可扩展的分布式数据存储、数据缓存。

Xitrum是基于Netty和Akka的异步、集群的scala web框架和HTTP服务器。

Xitrum是一个令人印象深刻的作品,大概是最完整易用的scala框架了吧(Guide上说比Lift框架更容易)。

它是一个真正的满堆栈web框架,包含了很多基础,

例如像ETags的wtf-am-I-on-the-moon,静态文件缓存标识,和自动解压缩程序,内嵌入JSON转换,拦截机制(before/around/after),

request/session/cookie/flash范围,完整的校验机制,内嵌缓存层(Hazelcast),i18n a la GNU gettext,Netty (with Nginx, hello blazing fast)等等。

特色(Feature):
    类型安全。在scala的思想中,所有的API都试图实现类型安全。
    异步。在NETTY的思想中,你的请求操作并不会立即响应,他支持轮询,分块响应,WebSocket,SockJS。
    基于Netty的内嵌HTTP和HTTPS网页服务器。Xitrum的静态文件可以提供像Nginx一样快的服务。
    大量的客户端和服务端缓存可以提供快速的响应。在web服务器层,小文件是被缓存在内存中,大文件是用NIO的零拷贝。在web层,你可以自己以Rails形式中声明page,action,和对象缓存,所有谷歌的最好的方法像GET都可以在客户端缓存中应用。可以通过强制浏览器一直向server发送请求以达到在使用前重复验证缓存的目的。

    支持静态文件的范围请求,为手机提供视频文件服务需要这项需求,可以暂停、回复文件下载。

    支持CORS。
    根据JAX-RS和Rails引擎,Xitrum也可以自动生成路由。我们不必声明所有的路由,这样我们就可以把一个app A插到另一个app B里了,appB就自动有了appA的功能
    Classes 和 routes 在开发模式中可以被自动重新加载。
    可以把视图写在单独的Scalate模板文件或者Scala内联XML中,他们都是类型安全的。
    Sessions可以被保存在cookies(更可扩展)或Hazelcast(更安全)中。Hazelcast提供了进程内分布式缓存,和Akka提供的pubsub功能相同。
    JQuery校验被应用于浏览器端和服务器端。
    还支持i18n.


    Xitrum想要比Scalatra功能更强大,且要比Lift更易用。你可以更容易地创建 RESTful API和回发。Xitrum像Scalatra一样是控制器优先,而不是像Lift那样视图优先。

原文地址:https://www.cnblogs.com/sunspeedzy/p/6834582.html