250 likes | 449 Views
Indigo 简介. Cong Ling MCS Microsoft Corporation congling@microsoft.com. 快速建立安全、可靠、面向服务应用的统一编程模型. 统一当前的分布式技术 基于 Attribute 的编程 和 Visual Studio 2005 集成. 生产能力. 广泛支持 WS-* 系列协议 和现存的微软分布式应用兼容. 可交互性. 面向松耦合的服务的开发 基于配置的通讯. 面向服务的开发. 高效生产能力. 统一编程模型. .NET Remoting. ASMX. 和其他系统交互. 高度扩展 位置透明.
E N D
Indigo简介 Cong Ling MCS Microsoft Corporation congling@microsoft.com
快速建立安全、可靠、面向服务应用的统一编程模型快速建立安全、可靠、面向服务应用的统一编程模型
统一当前的分布式技术 基于Attribute的编程 和Visual Studio 2005集成 生产能力 广泛支持WS-*系列协议 和现存的微软分布式应用兼容 可交互性 面向松耦合的服务的开发 基于配置的通讯 面向服务的开发
统一编程模型 .NET Remoting ASMX 和其他系统交互 高度扩展 位置透明 基于Attribute的编程 面向消息的编程 WS-* 系列协议的支持 Enterprise Services System.Messaging WSE
class HelloService { • [WebMethod] • public String Hello(String Greeting) { • X509CertificateCollection collection = new X509CertificateCollection(); • IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); • IntPtr data = (IntPtr)((int)blob + • Marshal.SizeOf(typeof(CRYPTOAPI_BLOB))); • … • SeqAckRange range = new SeqAcknRange(id, low, high ); • SeqAckRange[] ranges = { range }; • ReliableQueue.ProcessAcks( ranges ); • … • return Greeting; • } • } 20,379 linessecurity 5,988 lines reliable messaging 4,442 lines infrastructure Total lines 30,809 生产能力 使用 Visual Studio .NET 2003
class HelloService { [WebMethod] public String Hello(String Greeting) { foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecToken } … SeqAckRange range = new SeqAcknRange(id,low,high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … return Greeting; } } 10 lines security 1,804 lines reliable messaging Total lines 1,814 生产能力 使用 Visual Studio .NET 2003 + WSE
1 line security [ServiceContract(SecureChannel, SecurityMode =“Windows")] [Reliability(Guarantees.ExactlyOnce | Guarantees.InOrder)] [ServiceContract] class HelloService { [ServiceOperation(TransactionFlowAllowed = true)] String Hello(String Greeting) { return Greeting; } } 1 line reliable messaging 1 linetransactions Total lines 3 生产能力 使用 Visual Studio 2005 + Indigo
和现有分布式系统共存 无缝的和现有的分布式应用通信 平滑的从现有代码迁移到Indigo ASMX ASMX ES WSE3 ASMX 如何保护现有投资
从对象到服务 面向对象 多态 封装 子类 1980s 面向组件 以接口为基础的 动态加载 运行态元数据 1990s 面向服务 基于消息 架构+合约 通过策略绑定 2000s
SO的四个原则 边界是清晰的 开发人员可以选择性的使用、输出、定义公共服务层 基于Attribute的编程让开发人员方便的定义服务合约 服务和使用者在版本、部署、操作、安全上都是相互独立的 服务是自治的 数据不含有行为 带数据和行为的对象是本地镜像 共享框架和合约 而不是类 基于策略的兼容性 能力和要求使用一个唯一的公共名称表述 用于建立服务之间的匹配性
Class MyService { int MyMethod(string arg) { } } Indigo 和 SO 原则对应 对外发布的接口 服务程序 架构 + 合约(WSDL + XSD) 要求请求消息体使用<arg> string <arg> 服务返回消息体<return> int <return> [Discoverable] [TcpTransport] [ServiceContract] 不输出任何东西! 没有定义边界 策略 (WS-Policy) 要求使用基于TCP的SOAP绑定 [ServiceOperation] 自治 (WS-Discovery) 启动时自动声明服务的存在,并可以让其在目录服务中发布 暴露端点以相应查找请求
安全通道 TCP 传输 安全通道 TCP 传输 CLR类型集成 CLR 类型集成 事务行为 事务行为 实例行为 消息层 服务模型层 根据输入消息来影响编程模型 消息在通道间移动并对其加工 (channels) 可适配的体系结构 服务代码
安全通道 安全通道 Throttling Behavior 队列传输 TCP传输 HTTP 传输 TCP 传输 HTTP传输 自定义通道 命名通道 自定义通道 CLR 类型集成 CLR类型集成 并发行为 自定义行为 事务行为 事务行为 异常处理行为 实例行为 实例行为 元数据行为 可靠消息 可靠消息 MSMQ 集成 可适配的体系结构 服务模型层 消息层 行为 通道
BizTalk Server Indigo, BTS, and SSB SQL-to-SQL 通信使用优化的二进制协议 使用WS-*协议进行无代理服务间的通信 使用orchestration, 转换, 适配器等代理的方式B2B集成
基本 WS-I 1.0 支持 基于ASP.NET WSE 2.0适配器 SQL-to-SQL数据消息 二进制协议 Indigo适配器 Indigo传输通道 服务代理使用Indigo作为WS-*系列协议的互操作 直接建立在Indigo上 Indigo, BTS, and SSB
Indigo时间表 Indigo Beta 1 RC May 2005 WindowsVista Beta 1 Summer 2005 Indigo 发布! 2006
试用Visual Studio 2005 立即行动吧! 下载WinFX SDK,开发Indigo应用程序 http://www.microsoft.com/downloads/details.aspx?FamilyId=CE888B4C-CCBD-452F-9D90-F4B7190CCA24&displaylang=en http://winfx.msdn.microsoft.com/library/en-us/indigo_con/html/fd327ade-0260-4c40-adbe-b74645ba3277.asp?frame=true 欢迎给我们反馈 Cong Ling congling@microsoft.com