一起谈.NET技术,云计算和数据

简介: 这篇博客对在云计算解决方案中操作数据进行总览性的介绍。概览对于绝大多数解决方案而言,数据都是至关重要的一部分。在云计算里面,绝大多数现成的建议都可以直接拿来用。但是云计算也有其独特之处。这篇博客将讨论以下两个用例:将你存放在云中的数据发布至全世界 在云端的项目中使用你本地的数据。

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

概览

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

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

通用的建议

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

选择一个拓扑

在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,真正的在云端进行测试。

目录
相关文章
|
5月前
|
边缘计算 人工智能 自动驾驶
云计算的加速引擎——5G技术如何改变未来
云计算的加速引擎——5G技术如何改变未来
152 7
云计算的加速引擎——5G技术如何改变未来
|
6月前
|
安全 大数据 虚拟化
随着云计算和大数据技术的发展,Hyper-V在虚拟化领域的地位日益凸显
随着云计算和大数据技术的发展,Hyper-V在虚拟化领域的地位日益凸显。作为Windows Server的核心组件,Hyper-V具备卓越的技术性能,支持高可用性、动态迁移等功能,确保虚拟机稳定高效运行。它与Windows深度集成,管理便捷,支持远程管理和自动化部署,降低管理成本。内置防火墙、RBAC等安全功能,提供全方位安全保障。作为内置组件,Hyper-V无需额外购买软件,降低成本。其广泛的生态系统支持和持续增长的市场需求,使其成为企业虚拟化解决方案的首选。
|
5月前
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
814 0
|
5月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
183 0
|
7月前
|
存储 分布式计算 大数据
大数据与云计算:无缝结合,开启数据新纪元
大数据与云计算:无缝结合,开启数据新纪元
555 11
|
6月前
|
存储 监控 数据可视化
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
117 0
|
7月前
|
人工智能 机器人 量子技术
D1net阅闻 | 李飞飞团队训练出媲美DeepSeek R1的推理模型 云计算费用不到50美元
D1net阅闻 | 李飞飞团队训练出媲美DeepSeek R1的推理模型 云计算费用不到50美元
|
7月前
|
人工智能 机器人 云计算
D1net阅闻 | 亚马逊云计算部门拟投110亿美元扩大佐治亚州AI基础设施
D1net阅闻 | 亚马逊云计算部门拟投110亿美元扩大佐治亚州AI基础设施
|
9月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
127 6
|
9月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
122 6