色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

云計算和數(shù)據(jù)

這篇博客對在云計算解決方案中操作數(shù)據(jù)進行總覽性的介紹。

概覽

對于絕大多數(shù)解決方案而言,數(shù)據(jù)都是至關(guān)重要的一部分。在云計算里面,絕大多數(shù)現(xiàn)成的建議都可以直接拿來用。但是云計算也有其獨特之處。這篇博客將討論以下兩個用例:

  • 將你存放在云中的數(shù)據(jù)發(fā)布至全世界
  • 在云端的項目中使用你本地的數(shù)據(jù)。

通用的建議

無論是哪種用例,這些建議都是通用的。

選擇一個拓?fù)?/h3>

在SOA的世界中,最重要的一個概念就是契約(contract)。在云計算的世界中,有關(guān)通信的最重要的概念也是契約。當(dāng)一個契約被很多云計算解決方案使用之時,我們就可以把它稱作一個拓?fù)淞恕?/p>

現(xiàn)在我們只討論數(shù)據(jù)通信。如果你選擇了微軟的解決方案,我們推薦你使用Open Data Protocol (OData)。OData是基于諸如HTTP和AtomPub的國際標(biāo)準(zhǔn)創(chuàng)建的,它提供了一個跨平臺的數(shù)據(jù)通信的方案。如果你云端的程序使用OData來發(fā)布數(shù)據(jù),這個世界上的任何一個程序,只要是支持OData標(biāo)準(zhǔn),就都能享用你的數(shù)據(jù)。同理,你云端的程序也能使用OData來訪問你本機的數(shù)據(jù)。

很多目前的微軟產(chǎn)品已經(jīng)在應(yīng)用OData了。例如:windows Azure Table Storage,Dallas,SharePoint 2010,SQL Server 2008 R2,等等。

如果你打算使用其他的拓?fù)?,有必要仔?xì)思考它們的可伸縮性,有多少人在使用它們,等等。

選擇一門技術(shù)

既然拓?fù)湟堰x定,下一步就是選擇一門技術(shù)來實現(xiàn)這個拓?fù)淞恕?/p>

如果你選擇了微軟的解決方案,我們推薦你使用WCF來處理所有程序間的通信。針對數(shù)據(jù)通信,WCF Data Services自然是最好的選擇。

首先,WCF Data Services是WCF服務(wù),所以你可以使用所有現(xiàn)有的WCF知識。其次,WCF Data Services已經(jīng)實現(xiàn)了OData拓?fù)?,于是你可以致力于你的?shù)據(jù)格式在你的程序中的表示,而不是AtomPub/JSON這些真正在網(wǎng)絡(luò)上傳遞的數(shù)據(jù)格式。再有,WCF Data Services致力于數(shù)據(jù)傳輸,而不是數(shù)據(jù)存儲。你的數(shù)據(jù)可以存放在任何位置:本地的數(shù)據(jù)庫,云端的數(shù)據(jù)庫,外部的web services,xml文件,等等。無論數(shù)據(jù)是怎么來的,你都可以用同樣的方式來發(fā)布/使用它們。

如果你選擇了其他技術(shù),有必要仔細(xì)考慮使用該技術(shù)的需要花費多少精力來完成你的解決方案,該技術(shù)能否提供將來的解決方案擴展,等等。

接下來我們來看看微軟的產(chǎn)品如何幫助你們完成上述兩個用例。

將你存放在云中的數(shù)據(jù)發(fā)布至全世界

許多云計算解決方案都不是孤立的,它們需要和外部世界交互。說到數(shù)據(jù),你很可能直接了當(dāng)?shù)姆磻?yīng)出來DaaS (Data as a Service,數(shù)據(jù)即服務(wù))。

云計算的數(shù)據(jù)可以存放在許多地方,而且數(shù)據(jù)本身也是非常多樣化的。本文將致力于討論結(jié)構(gòu)化的數(shù)據(jù)(例如xml),以及關(guān)系型數(shù)據(jù)(例如關(guān)系數(shù)據(jù)庫)。當(dāng)前微軟提供了兩大產(chǎn)品用于在云中存放數(shù)據(jù)。

  • Windows Azure Table Storage:用于存儲結(jié)構(gòu)化數(shù)據(jù)。使用動態(tài)架構(gòu) (dynamic schema)。
  • SQL Azure:用于存儲關(guān)系型數(shù)據(jù)。使用靜態(tài)架構(gòu)(fixed schema)。

下面這張表格比較了靜態(tài)架構(gòu)和動態(tài)架構(gòu)各自的優(yōu)勢。

靜態(tài)架構(gòu)

動態(tài)架構(gòu)

關(guān)系型數(shù)據(jù)庫,例如SQL Azure

Windows Azure Table Storage

經(jīng)過了幾十年驗證的可靠架構(gòu)

高度可擴展性(統(tǒng)一的存儲,但是不同的程序可以使用不同的數(shù)據(jù)結(jié)構(gòu))

可以使用許多現(xiàn)成的工具

基于OData Web 協(xié)議

可以使用O/R Mapping方便的在OO編程語言中操作數(shù)據(jù)

體現(xiàn)出了動態(tài)語言(dynamic languages)的優(yōu)勢

針對你具體的場景,請選擇一個合適的數(shù)據(jù)存儲方式。通常來說,如果你的服務(wù)對外部世界開放了寫的權(quán)限(允許外部世界更新數(shù)據(jù)),動態(tài)架構(gòu)是一個比較好的選擇,因為第三方的程序很有可能需要適當(dāng)?shù)男薷哪闾峁┑臄?shù)據(jù)結(jié)構(gòu)。然而目前Windows Azure Table Storage還有一些局限性,它并未實現(xiàn)OData所有的功能,再加上關(guān)系模型已經(jīng)有了好幾十年的經(jīng)驗,你的開發(fā)人員也很可能非常熟悉關(guān)系模型,所以如果對你而言使用動態(tài)架構(gòu)成本太高,請選擇靜態(tài)架構(gòu)。

無論你選擇了何種架構(gòu),OData和WCF Data Services都能起到非常大的作用。

剛才已經(jīng)說過,WCF Data Services可以使用任意的數(shù)據(jù)源。它默認(rèn)就提供了兩種數(shù)據(jù)提供者:ADO.NET Entity Framework (EDM)和LINQ to SQL (L2S)。如果你使用的是這兩種數(shù)據(jù)源,通常只需要寫一小部分代碼即可完成一個項目。如果你選擇SQL Azure存放數(shù)據(jù),你就可以使用EDM和L2S做數(shù)據(jù)源。

如果你使用了其它數(shù)據(jù)源,(例如Windows Azure Table Storage),你需要將你的數(shù)據(jù)模型轉(zhuǎn)換成WCF Data Services理解的模型。如果你的數(shù)據(jù)是只讀的,這個過程就很簡單,因為你只需要寫一個很普通的類來表示你的數(shù)據(jù)結(jié)構(gòu)。如果你需要完整的CRUD功能,就必須實現(xiàn)IUpdatable這個接口。這被稱作“Reflection provider for WCF Data Services”。在更高級的場合中,你還可以使用“Custom Data Service Providers”。詳細(xì)信息可以參考http://msdn.microsoft.com/en-us/library/dd672591(VS.100).ASPx。

Windows Azure Table Storage本身也是使用OData拓?fù)?,所以你可能會試圖讓你的客戶直接訪問你的數(shù)據(jù)源。但是在絕大多數(shù)的場合下,請不要這樣做。你必須竭盡全力保護你的storage賬號的key(把它想象成你的密碼)。如果你將自己的密碼給與一個受你信任的用戶使他/她能直接訪問你的Table Storage,而他/她濫用了這份權(quán)限,到最后,使你必須支付你的storage賬號的費用。我們推薦用戶將數(shù)據(jù)和業(yè)務(wù)邏輯封裝成服務(wù),使用WCF Data Services就是完成這一任務(wù)的很好選擇。

你可以從All-In-One Code Framework (Azure).zip 中下載一個示例,它演示了如何使用WCF Data Services將存放在Windows Azure Table Storage中的數(shù)據(jù)發(fā)布至全世界。示例的名稱是:CSAzureTableStorageWCFDS/VBAzureTableStorageWCFDS該示例也提供了一個Silverlight客戶端用于測試服務(wù)。

在云端的項目中使用你本地的數(shù)據(jù)

另一個常見的場景就是在云端的項目中使用你本地的數(shù)據(jù)了。絕大多數(shù)場合下,這些數(shù)據(jù)都使用了靜態(tài)架構(gòu)存儲于關(guān)系型數(shù)據(jù)庫中(例如SQL Server),所以你通常不會考慮如何存儲數(shù)據(jù)。在這個場景中,你更關(guān)心的是可連接性以及安全性。

很多公司都有防火墻和NAT。很難找到一臺機體,既可以自interNET訪問,又擁有一個固定的IP地址,所以要在云端的程序直接連本地數(shù)據(jù)庫也就很難了。權(quán)限控制也是一個問題。云端的程序并不在你的公司的局域網(wǎng)中,和數(shù)據(jù)庫不在同一個域里,要使用集成Windows驗證是不可能的,而federated驗證目前還沒有針對數(shù)據(jù)庫提供很好的解決方案。

為了解決第一個問題,微軟提供了Windows Azure platform AppFabric Service Bus。Service Bus就好比你本機服務(wù)和云端程序之間的橋梁,本地服務(wù)對于Service Bus而言其實是一個客戶端,所以即使本地服務(wù)器位于NAT之后,它還是可以和Service Bus交流。Service Bus會把你云端程序發(fā)送的消息傳達(dá)給你本地的服務(wù)。

Service Bus同時支持TCP和HTTP。大多數(shù)防火墻至少是允許outbounding連接通過80/443端口的,而這也正是Service Bus的最低需求。這樣一來,Service Bus便可以穿越NAT和防火墻。

安全是一個很復(fù)雜的話題,本文不準(zhǔn)備詳細(xì)探討。但是有必要指出,Windows Azure platform AppFabric Access Control在很多場合下都是很有幫助的,而且它默認(rèn)就和Service Bus集成。

當(dāng)然,OData和WCF Data Services在這個用例中也很有幫助。

你可以從All-In-One Code Framework (Azure).zip 中下載一個示例,它演示了如何使用Service Bus和WCF Data Services在云端程序訪問本地的SQL Server數(shù)據(jù)。項目名稱是:CSAzureServiceBusWCFDS/VBAzureServiceBusWCFDS。這個項目也提供了一個ASP.NET客戶端用于測試服務(wù)。你可以很輕松的將這個客戶段轉(zhuǎn)換成一個Windows Azure的Web Role,真正的在云端進行測試。

NET技術(shù)云計算和數(shù)據(jù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 昔阳县| 濉溪县| 亚东县| 长岭县| 岚皋县| 布拖县| 华宁县| 梁山县| 闽清县| 手游| 淮南市| 共和县| 承德市| 康定县| 新沂市| 昭苏县| 吴江市| 临朐县| 宁南县| 遵义县| 惠来县| 乌拉特前旗| 泉州市| 阿拉善盟| 张家界市| 资中县| 三门县| 丰县| 安国市| 沐川县| 武乡县| 邵东县| 林西县| 马鞍山市| 七台河市| 仁布县| 宜宾县| 定西市| 清水河县| 黎川县| 茌平县|