这篇博客对在云计算解决方案中操作数据进行总览性的介绍。

概览

对于绝大多数解决方案而言,数据都是至关重要的一部分。在云计算里面,绝大多数现成的建议都可以直接拿来用。但是云计算也有其独特之处。这篇博客将讨论以下两个用例:

  • 将你存放在云中的数据发布至全世界
  • 在云端的项目中使用你本地的数据。

通用的建议

无论是哪种用例,这些建议都是通用的。

选择一个拓扑

在SOA的世界中,最重要的一个概念就是契约(contract)。在云计算的世界中,有关通信的最重要的概念也是契约。当一个契约被很多云计算解决方案使用之时,我们就可以把它称作一个拓扑了。

现在我们只讨论数据通信。如果你选择了微软的解决方案,我们推荐你使用Open Data Protocol (OData)。OData是基于诸如HTTP和AtomPub的国际标准创建的,它提供了一个跨平台的数据通信的方案。如果你云端的程序使用OData来发布数据,这个世界上的任何一个程序,只要是支持OData标准,就都能享用你的数据。同理,你云端的程序也能使用OData来访问你本机的数据。

很多目前的微软产品已经在应用OData了。例如:windows Azure Table Storage,Dallas,SharePoint 2010,SQL Server 2008 R2,等等。

如果你打算使用其他的拓扑,有必要仔细思考它们的可伸缩性,有多少人在使用它们,等等。

选择一门技术

既然拓扑已选定,下一步就是选择一门技术来实现这个拓扑了。

如果你选择了微软的解决方案,我们推荐你使用WCF来处理所有程序间的通信。针对数据通信,WCF Data Services自然是最好的选择。

首先,WCF Data Services是WCF服务,所以你可以使用所有现有的WCF知识。其次,WCF Data Services已经实现了OData拓扑,于是你可以致力于你的数据格式在你的程序中的表示,而不是AtomPub/JSON这些真正在网络上传递的数据格式。再有,WCF Data Services致力于数据传输,而不是数据存储。你的数据可以存放在任何位置:本地的数据库,云端的数据库,外部的web services,xml文件,等等。无论数据是怎么来的,你都可以用同样的方式来发布/使用它们。

如果你选择了其他技术,有必要仔细考虑使用该技术的需要花费多少精力来完成你的解决方案,该技术能否提供将来的解决方案扩展,等等。

接下来我们来看看微软的产品如何帮助你们完成上述两个用例。

将你存放在云中的数据发布至全世界

许多云计算解决方案都不是孤立的,它们需要和外部世界交互。说到数据,你很可能直接了当的反应出来DaaS (Data as a Service,数据即服务)。

云计算的数据可以存放在许多地方,而且数据本身也是非常多样化的。本文将致力于讨论结构化的数据(例如xml),以及关系型数据(例如关系数据库)。当前微软提供了两大产品用于在云中存放数据。

  • Windows Azure Table Storage:用于存储结构化数据。使用动态架构 (dynamic schema)。
  • SQL Azure:用于存储关系型数据。使用静态架构(fixed schema)。

下面这张表格比较了静态架构和动态架构各自的优势。

静态架构

动态架构

关系型数据库,例如SQL Azure

Windows Azure Table Storage

经过了几十年验证的可靠架构

高度可扩展性(统一的存储,但是不同的程序可以使用不同的数据结构)

可以使用许多现成的工具

基于OData Web 协议

可以使用O/R Mapping方便的在OO编程语言中操作数据

体现出了动态语言(dynamic languages)的优势

针对你具体的场景,请选择一个合适的数据存储方式。通常来说,如果你的服务对外部世界开放了写的权限(允许外部世界更新数据),动态架构是一个比较好的选择,因为第三方的程序很有可能需要适当的修改你提供的数据结构。然而目前Windows Azure Table Storage还有一些局限性,它并未实现OData所有的功能,再加上关系模型已经有了好几十年的经验,你的开发人员也很可能非常熟悉关系模型,所以如果对你而言使用动态架构成本太高,请选择静态架构。

无论你选择了何种架构,OData和WCF Data Services都能起到非常大的作用。

刚才已经说过,WCF Data Services可以使用任意的数据源。它默认就提供了两种数据提供者:ADO.NET Entity Framework (EDM)和LINQ to SQL (L2S)。如果你使用的是这两种数据源,通常只需要写一小部分代码即可完成一个项目。如果你选择SQL Azure存放数据,你就可以使用EDM和L2S做数据源。

如果你使用了其它数据源,(例如Windows Azure Table Storage),你需要将你的数据模型转换成WCF Data Services理解的模型。如果你的数据是只读的,这个过程就很简单,因为你只需要写一个很普通的类来表示你的数据结构。如果你需要完整的CRUD功能,就必须实现IUpdatable这个接口。这被称作“Reflection provider for WCF Data Services”。在更高级的场合中,你还可以使用“Custom Data Service Providers”。详细信息可以参考http://msdn.microsoft.com/en-us/library/dd672591(VS.100).aspx。

Windows Azure Table Storage本身也是使用OData拓扑,所以你可能会试图让你的客户直接访问你的数据源。但是在绝大多数的场合下,请不要这样做。你必须竭尽全力保护你的storage账号的key(把它想象成你的密码)。如果你将自己的密码给与一个受你信任的用户使他/她能直接访问你的Table Storage,而他/她滥用了这份权限,到最后,使你必须支付你的storage账号的费用。我们推荐用户将数据和业务逻辑封装成服务,使用WCF Data Services就是完成这一任务的很好选择。

你可以从All-In-One Code Framework (Azure).zip 中下载一个示例,它演示了如何使用WCF Data Services将存放在Windows Azure Table Storage中的数据发布至全世界。示例的名称是:CSAzureTableStorageWCFDS/VBAzureTableStorageWCFDS该示例也提供了一个Silverlight客户端用于测试服务。

在云端的项目中使用你本地的数据

另一个常见的场景就是在云端的项目中使用你本地的数据了。绝大多数场合下,这些数据都使用了静态架构存储于关系型数据库中(例如SQL Server),所以你通常不会考虑如何存储数据。在这个场景中,你更关心的是可连接性以及安全性。

很多公司都有防火墙和NAT。很难找到一台机体,既可以自internet访问,又拥有一个固定的IP地址,所以要在云端的程序直接连本地数据库也就很难了。权限控制也是一个问题。云端的程序并不在你的公司的局域网中,和数据库不在同一个域里,要使用集成Windows验证是不可能的,而federated验证目前还没有针对数据库提供很好的解决方案。

为了解决第一个问题,微软提供了Windows Azure platform AppFabric Service Bus。Service Bus就好比你本机服务和云端程序之间的桥梁,本地服务对于Service Bus而言其实是一个客户端,所以即使本地服务器位于NAT之后,它还是可以和Service Bus交流。Service Bus会把你云端程序发送的消息传达给你本地的服务。

Service Bus同时支持TCP和HTTP。大多数防火墙至少是允许outbounding连接通过80/443端口的,而这也正是Service Bus的最低需求。这样一来,Service Bus便可以穿越NAT和防火墙。

安全是一个很复杂的话题,本文不准备详细探讨。但是有必要指出,Windows Azure platform AppFabric Access Control在很多场合下都是很有帮助的,而且它默认就和Service Bus集成。

当然,OData和WCF Data Services在这个用例中也很有帮助。

你可以从All-In-One Code Framework (Azure).zip 中下载一个示例,它演示了如何使用Service Bus和WCF Data Services在云端程序访问本地的SQL Server数据。项目名称是:CSAzureServiceBusWCFDS/VBAzureServiceBusWCFDS。这个项目也提供了一个ASP.NET客户端用于测试服务。你可以很轻松的将这个客户段转换成一个Windows Azure的Web Role,真正的在云端进行测试。

转载于:https://www.cnblogs.com/waw/archive/2011/08/29/2158754.html

一起谈.NET技术,云计算和数据相关推荐

  1. 科技推动时代发展,浅谈IT技术如何改善数据中心运维管理

    伴随现代化社会不断发展,众多企业逐渐扩大规模,业务剧增,数据中心的重要性由此可见,同时数据中心设施.规模都逐渐丰富起来,企业核心数据也更加集中.此时,对于数据中心的管理者职责和压力更是加剧,这也就要求 ...

  2. 浅谈云计算与数据中心计算

    文/林仕鼎 云计算概念发端于Google和Amazon等超大规模的互联网公司,随着这些公司业务的成功,作为其支撑技术的云计算也得到了业界的高度认可和广泛传播.时至今日,云计算已被普遍认为是IT产业发展 ...

  3. 盘点人气云计算大数据开源技术变迁

    从2010年开始,CSDN连续参与举办了六年中国云计算大会.在这6年时间,我们看到过被人质疑的云计算,也看到了现在云计算成为各种创业公司的基础,甚至走入各种互联网之外的传统企业,见证了其在中国的发展的 ...

  4. 南邮-云计算技术与大数据期末考试(知识点总结二)

    文章目录 三.虚拟化技术 3.1 虚拟化技术概述 3.2 虚拟化关键技术 3.2.1服务器虚拟化 3.2.2 存储虚拟化 3.2.3 网络虚拟化 3.2.4 桌面虚拟化 3.3 虚拟机迁移技术 3.4 ...

  5. 华为网络技术学习打卡8(云计算大数据,openstack,docker)

    云计算 产生背景(云计算的驱动力) 技术驱动( 需求驱动(海量的数据信息给现阶段设备带来巨大的压力,云计算技术可以降低成本 商业模式转变( 其他方面,海量的数据及信息.各种各样的终端设备也促使着现阶段 ...

  6. 如何用python抓取文献_浅谈Python爬虫技术的网页数据抓取与分析

    浅谈 Python 爬虫技术的网页数据抓取与分析 吴永聪 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2019(000)008 [摘要] 近年来 , 随着互联网的发展 , 如何 ...

  7. 云计算大数据:ELK技术栈介绍

    一. ELK工作栈简介 1. 简介 ELK Stack 是 Elasticsearch.Logstash.Kibana 三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归 ...

  8. 【云计算与大数据技术】大数据概念和发展背景讲解(图文解释 超详细)

    一.什么是大数据 大数据是一个不断发展的概念,可以指任何体量或负载下那个超出常规数据处理方法和处理能力的数据,数据本身可以是结构化,半结构化甚至是非结构化的,随着物联网技术与可穿戴设备的飞速发展,数据 ...

  9. 浅谈虚拟化技术下的云安全如何处置

    浅谈虚拟化技术下的云安全如何处置 近年来,云计算是目前非常热门的一个研究领域,其实它并不是一种全新的技术,而是许多技术的融合体,包括分布式计算.动态和拓展等各种各样的技术算法,而虚拟化技术是云计算里最 ...

最新文章

  1. Android发布项目到外部仓库
  2. python以及MATLAB终止循环的快捷键
  3. 被捞起的“海底数据中心”,故障率仅为陆地1/8,微软新型数据存储模式又有新进展...
  4. 趣说API HTTP 状态码的使用
  5. java try finally connectoin close_Java I/O流详解
  6. 让开发自动化: 利用 Ivy 管理依赖项
  7. hdu4533 威威猫系列故事——晒被子
  8. GPU Shader 编程基础
  9. golang 泛型_Golang 1.x版本泛型编程
  10. Struts1和Struts2的区别和对比(完整版)(转)
  11. Bootstrap系列 -- 23. 图片
  12. JS、javascript计算两个时间差
  13. xamarin.android 图片高斯模糊效果
  14. 文件夹内失效 .htaccess_辽宁本溪内支撑盲管实业
  15. 软件工程第二篇博客(“相等”)
  16. 芯片代理商哪家专业 品质是否有保障
  17. WY-2000B空气质量检测系统
  18. PHPAdmin数据类型
  19. HEVC解码器解码出现failed to open bitstream file ‘str.bin‘ for reading的问题解决方法记录
  20. 201305143D眼镜种类及原理

热门文章

  1. SQLite中的内连接简化技巧
  2. 分享Kali Linux 2016.2第50周镜像文件
  3. 苹果运行内存比较_决定手机流畅度到底是看CPU还是运行内存,你知道么?
  4. 得力人脸识别考勤机密码设置_百度大脑人脸识别公有云日均调用量过亿 成为业内第一...
  5. .net ticks 转java_《C#并发编程经典实例》—— 转换.NET事件
  6. 电力系统继电保护第二版张保会_《继电保护》复习笔记
  7. 脑电分析系列 | MNE-Python汇总
  8. eeglab教程系列(7)-数据叠加平均{1}(Data averaging)
  9. 脑源(brainsourcing)技术可以自动识别人类的偏好
  10. 2021人工智能年度评选报名即将截止,3大类别6大奖项等你申报