写点什么

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

  • 2007-10-16
  • 本文字数:1473 字

    阅读完需:约 5 分钟

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

2007-10-16 20:371121
用户头像

发布了 254 篇内容, 共 63.2 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

基于 Qt Quick Plugin 快速构建桌面端跨平台组件

网易云信

音视频 qt

iOS 面试策略之系统框架-并发编程

iOSer

ios 并发编程 系统框架

支付中心设计

try catch

支付 支付中心

iOS开发底层原理技术~RAC深度解析

ios cocoa 程序员 移动开发

Flume的负载均衡load balancer

大数据技术指南

flume 5月日更

3、深潜KafkaProducer核心架构

杨四正

kafka 消息队列 kafka架构 kafka源码分析

采用DevOps的7个主要障碍,你一定不知道!

禅道项目管理

DevOps

测试开发专题-开篇

禅道项目管理

软件测试 自动化测试 测试开发

阿里内部百亿级高并发系统(全彩版小册开源):基础篇、数据库篇、缓存篇、消息队列篇、分布式服务篇、维护篇、实战篇;带你从基础到实战

Java 程序员 架构 高并发

520 表白,因一个分号被拒

悟空聊架构

520单身福利

520 单身福利|获奖名单公布~

InfoQ写作社区官方

520单身福利 热门活动

HIVE跑个insert into select xxx 为什么CPU飙高

InfoQ_Springup

hadoop

多线程 VS 多进程(一)

若尘

多线程 多进程 Python编程 5月日更

普通代码块 静态代码块 构造代码块......傻傻分不清

麦洛

Java

膜拜!Github访问量破百万,阿里内部首次公布的Java10W字面经有多强?

Java 程序员 架构 面试

SparkStreaming知识点总结

五分钟学大数据

大数据 5月日更

千万级学生管理系统考试试卷存储方案设计

Hesher

架构 Architecture 架构实战营 存储系统

JavaScript+TensorFlow.js让你在视频中瞬间消失

不脱发的程序猿

JavaScript 人工智能 开源 TensorFlow.js

测试开发网络篇-网络协议简介

禅道项目管理

软件测试 自动化测试 测试开发

Why WebRTC|前世今生

声网

WebRTC RTC

架构实战营模块3课后作业-基于“自研集群+MySQL存储”的消息队列架构设计方案

吴建中

架构实战营

阿里分布式大神亲码“redis核心技术笔记”,没有废话,全是干货!

Java架构追梦

Java redis 阿里巴巴 架构 架构分布式

BitMap 转置算法:不一样的 Count 求解方式

GrowingIO技术专栏

BitMap

聊聊那些小而美的开源搜索引擎

代码先生

搜索引擎 elasticsearch meilisearch

CompusBulider (模模搭)学习笔记7:3D场景中第一人称行走

ThingJS数字孪生引擎

3D可视化 数字孪生

2、kafka 2.8.0 源码环境搭建

杨四正

大数据 kafka 消息队列 kafka2.8

java性能分析与问题定位 实战

try catch

Java 性能分析

基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器

郭旭东

基础设施即代码 IaC

Serverless:这真的是未来吗?(二)

Serverless Devs

Serverless 运维 云原生 后端 无服务器

看完了京东年薪150万的大佬扔给我的“阿里内部Java 成长笔记”,差距不止一点点

Java 程序员 架构 面试 计算机

UCloud一站式智能大数据平台USDP免费版正式发布!

UCloud技术

hadoop CDH

MindTouch Dream:一个REST SDK和轻量单机服务器_.NET_Hartmut Wilms_InfoQ精选文章