InfoQ

新闻

MindTouch Dream:一个REST SDK和轻量单机服务器

作者 Hartmut Wilms 译者 朱永光 发布于 2007年10月16日 下午8时37分

社区
.NET
主题
Web服务,
REST
标签
开源项目发布

MindTouch提供了一个编程库和单机运行的服务器,用于开发和发布RESTful Web Service。Dream "Denim" 1.4.1也在上个星期已经发布。

MindTouch Dream是一个基于LGPL的开源项目。完全用C#编写,运行于Microsoft .NET 2.0以及Novell Mono 1.2.5之下。根据Steve Bjorg——MindTouch的共同创立者的说法,“描述它的最好方法是提这样一个问题:随着面向服务世界的不断增长而建立起来的以Web为中心的编程环境会是什么样子?”

Dream区别于.NET的其他框架(如Windows Communication Foundation)的几个重要特性是:
  • 它是轻量级的
  • 它是跨平台的
  • 它是遵从业界标准的
  • 它是开源的
  • 且它没有使用SOAP

Dream的核心概念是Web Serivce。一个Web Service被运行时实例化,并提供一些为名“features”的入口点。Features是藉由HTTP请求来调用,由服务名称和一个URI模式(类似GET,PUT,POST,DELETE这样的HTTP动词)扩展得到的 Dream Host 基本地址构成。一个Feature通过Dream Attribute映射到一个CLR方法上,其定义了动词和URI模式。

[DreamFeature("GET:addresses", "Get all addresses")]
public Yield GetAddresses(DreamContext context, DreamMessage request, TaskYield response) {
}

DreamFeature属性的第一个参数通过冒号分隔定义了动词和模式。Dream服务和消费端以XML或二进制数据流的格式来交换数据。通常Dream服务使用XML文档方式。这些文档被DreamMesseage实例包装着。

Dream SDK通过XDoc类(包装了.NET XML类的功能)提供了一种简易的方式来生成XML文档,这样减轻了XML文档的创建和使用程度:

XDoc是一个处理XML的所有事情的瑞士军刀。它是对XmlDocument、XmlElement、XmlText和XmlNodeList类轻量级的封装,以让它们更容易地被创建、查询和编辑XML文档。有了XDoc,你不需要知道任何.NET XML类,因为XDoc把所有操作都包含其中了,它真的让所有事情变得简单!

Dream提供了一系列通用的Features ,可用于所有的服务和一个核心服务库 “在编写任何有意思的Web service和Web应用程序的时候来处理常规问题”。

Dream服务能被托管于一个控制台宿主应用程序中或一个自定义环境里,比如NT服务。控制台宿主应用程序提供了一个命令行接口来创建新的Dream托管环境。Dream托管环境则通过Dream Host来实现。运行时也能被托管在IIS6中 。HTTP请求则被包含其中的Dream HTTPHandler说处理。Dream运行时:

负责着所有交互的协调。它利用HttpListener 类来构建,因此在目标设备上无需预先安装web-server。它也负责着服务的实例化、消息的路由和缩短服务到服务(service-to-service)的通讯(当两者都一起被定位的时候,意思就是说它们被加载到同一个AppDomain中)。

Plugs是一个很方便的功能,当服务被一起加载到同一个AppDomain的时候,它能够把HTTP通讯转换到内存中的通讯。

Plugs能非常简单地和Web资源进行交互。而且,当服务需要通过定位(例如托管于同一个AppDomian中)的时候,Plugs还能检测并替换WebRequest。在这种情况下,Plugs使用直接的内存通讯,而不是使用昂贵的序列化/反序列化操作。Plugs也能轻易地通过调整目标服务的URI,指向特定的想用的Feature或可选的处理过程上。

MindTouch Wiki提供了一个Dream概念的报告幻灯片,介绍了面向服务分布式构架(Service-Oriented Distributed Architecture,SODA ),描述了由MindTouch Dream推广的一种应用程序编程模型,以及REST web services的总体介绍。

查看英文原文:MindTouch Dream: REST SDK & Lightweight Standalone Server

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。