InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 Hartmut Wilms 译者 朱永光 发布于 2007年10月16日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
REST ,
.NET ,
Web服务
标签
开源项目发布

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

译者 朱永光 是IT自由人和环境保护者,微软最有价值专家(MVP)和MCSD。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。