NCindy

.net平台上的高性能网络程序开发框架

DSS简介

原文链接 

去中心化软件服务(DSS)是一个基于CCR的轻量级.net运行时环境。DSS提供了一个轻量级的,状态导向的服务模型,它将REST概念和构造高性能高扩展性应用的系统级方法结合在一起。在DSS中服务被暴露为一种可以被程序和UI操作界面访问的资源。通过集成:状态隔离、结构化状态操作、事件通知和常规服务组合,DSS解决了编写运行在一个节点或者跨网络的高性能、可观察、松耦合的应用程序的需求。

DSS的主要设计目标是将性能、简单性和强壮性结合在一起。这使得DSS非常适合于创建由服务聚合而成的应用,无论服务是运行在同一个节点还是跨越网络。这个目标使得DSS成为一个灵活且简单的可以用于编写多种应用的平台。DSS使用去中心化服务协议(  Decentralized Software Services Protocol (DSSP))和HTTP协议作为服务间交互的基础。DSSP是一种轻量级的基于SOAP的协议,它提供了一个清晰、对称(symmetric)支持状态操作的状态转移应用程序模型和一个由状态变化驱动的事件模型。
DSS运行时提供了一个宿主环境(hosting environment),这个环境提供了内建的在同一个节点和跨越网络的对服务组合、发布/订阅、生命周期管理、安全、监控、日志等的支持。服务可以使用Visual Studio编写,也可以使用Microsoft Visual Programming Language(VPL)来编写。VPL可以通过简单的托拽服务到画布上,然后根据数据依赖关系把服务连接到一起来创建简单的服务组合应用。另外,DSS清单编辑器(DSS manifest editor)提供了一个图形化环境来连接(wiring up)、配置、部署和在一个节点或跨越网络运行DSS应用程序。

DSS覆盖的问题领域

下面我们讨论三个常见的应用程序设计的问题领域,以及DSS如何来解决它们:

壮性

在任何负责的系统中,系统一个部分的失败都有导致整个系统瘫痪的可能。这是因为部分失败如果不能被正确的隔离、检测和处理,将会导致灾难性的失败。松耦合是一种常见的用于限制部分失败影响的设计模式。然而,为了构造松耦合的系统,每个组件必须与其他组件隔离,并且与底层运行环境隔离。在系统失败中两种常见的隔离方法是数据隔离和运行隔离。缺少数据隔离会导致服务的内部状态被破坏,而缺少运行隔离则会导致组建失去响应。DSS同时在数据和运行上隔离服务。数据隔离是通过完整克隆所有服务(包括系统服务)间交换的消息来实现的。克隆代码作为编译的一部分来生成,它比完整序列化的速度快很多。

可组合性

强壮性的需求强制要求程序成为一批松耦合组件的组合。这引发了另外一个问题:如何识别、定位以及把这些组件组合到一个正在运行的应用程序中。大多数传统的系统把一个应用定义为一个单一的进程而不是一组共同工作的松耦合服务的组合,这就把组合的任务留给了应用的设计者。DSS提供了协议和运行时来支持创建、管理、部署和运行由松耦合服务组合而成的应用。服务在运行时被创建,并且为了功能的正确,根据它需要组合的其他服务的描述进行连接。这个模型允许应用程序在运行时配置每个服务的实力在哪里运行。而且,由于每个服务实例与其他服务实例的关系都可以通过DSSP暴露出来,这使得看到任意指定的服务实例所依赖的服务实例成为可能。

可观察性 

所有应用程序的一个重要的方面是:可以知道它正在做什么,它处于什么状态,以及它如何到达这个状态。简单的说:一个没有办法观测的系统就不可能知道它是否功能正常。通过将一个服务定义为一个由URI表达的资源标识以及暴露这个资源的状态(可能被服务内部行为或者通过与其他服务交互改变),DSS将可观察性概念放置于它应用程序模型的核心。然而,可观察性概念超越了只是通过侦测服务的状态来监控应用程序。通过根据服务的状态统一的暴露服务,DSS为处理管理、安全和基于状态操作的服务组合提供了简单且一致的解决方案。DSS还使得每个DSS服务都可以通过浏览器UI进行访问,以及非常容易的与各种常用的工具和平台集成。

起步

作为DSS的一部分,我们提供了大量不同的例子和指导,它们演示的范围涵盖了从开始编写“Hello world”之类的简单应用到可以平滑的运行在同一个节点或者跨越网络的复杂应用。 

posted on 2009-10-18 00:51  iceboundrock  阅读(3546)  评论(2编辑  收藏  举报

导航