【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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:37809
用户头像

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

关注

评论

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

转转用例平台系列 - 脑图组件2.0

转转技术团队

测试开发 测试用例平台开发

复盘:如何更好的进行技术面试

老张

面试

云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析

阿里巴巴云原生

阿里云 RocketMQ 云原生

虚位以待!一大波 Web3 公司开发岗位来袭

TinTinLand

区块链 软件开发 招聘

史上最全的Java并发系列之Java中的13个原子操作类

自然

多线程 并发 Java core 8月月更

史上最全的Java并发系列之Java中的并发工具类

自然

多线程 并发 8月月更

SRv6在5G移动网络中的部署方式

穿过生命散发芬芳

8月月更 SRv6

Spring Cloud Sleuth简述

阿泽🧸

8月月更 Spring Cloud Sleuth

Spring 全家桶之 Spring Data JPA(二)

小白

8月月更

开源一夏 | 拥抱新技术?你需要考虑的方面

微枫Micromaple

开源 经验总结 技术栈 技术分享 8月月更

基于AQS实现自己的同步工具

自然

多线程 并发 8月月更

浅谈营销型企业站文案应该如何写

石头IT视角

RocketMQ顺序消息

急需上岸的小谢

8月月更

vue高频面试题合集(四)附答案

helloworld1024fd

Vue

参与openEuler社区不到1年,我成为了社区Maintainer……

openEuler

openEuler 开源社区 社区运营 #开源

真会玩!用手机吹气球你见过不?

岛上码农

flutter ios 前端 安卓开发 8月月更

开源一夏 | 你不能错过的 Go 强大图形化测试工具

宇宙之一粟

开源 测试框架 testing Go 语言 8月月更

估价器测试工具的实现

转转技术团队

测试工具

slb与nat及eip的相关联

肖飞码字

负载均衡 NAT 弹性公网IP

知识管理的成熟,需要具备什么条件?

Baklib

“以太坊杀手” Polkadot 何以在一众公链中脱颖而出

One Block Community

区块链 去中心化 跨链技术 波卡生态

vue高频面试题合集(三)附答案

helloworld1024fd

编译调试插件功能总结

乌龟哥哥

8月月更

第一个spark应用开发详解(java版)

程序员欣宸

Java spark 8月月更

每日一R「04」常用的智能指针

Samson

8月月更 ​Rust

架构实战营模块四作业

zhihai.tu

数据结构——栈

工程师日月

8月月更

软件架构治理 之 如何度量软件架构

码猿外

架构设计 软件架构治理

shell脚本之格式化输出

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

开发者时薪高达1200美元?一文带你走近Move语言的编程魅力!

TinTinLand

区块链 开发者 开发语言 Move

L2必读 | 走进 AnyTrust 技术底层,数据可用性和最小信任假设如何实现

TinTinLand

区块链 以太坊 扩容 技术文章

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