Clear Cloud HomeWhat is 4KGrooVe IPCloud TopologyPinterest ArchitectureWhat-is-a-Wi-Fi-PhoneBe an Android DeveloperPost PC EraMobile Device LiquidationsMobile RevolutionEnrollment-ApplicationFacebook ArchitectureTHIS WEEK'S TOP FREE TRAINING_MODS:Wuala Cloud Storage peer-to-peerContact UsWhat is Wireless Video ConferencingFAQsTablet_PCsPC Broker GuideCloud Computing ArchitectureWhat's a Set-Top TV Internet Box?3D PrintersLaptop Categories for the Mobile BrokerWhy Mobile Device Brokers Are NeededMobile Device Brokers and Pocket CloudMobile Device Brokers and Mobile PaymentsHow Mobile Device Brokers Make Revenuebroker_mechanics_2Job Oppys for Mobile Device BrokersHigh End Netbooks for Mobile Device BrokersMobile Brokers top SmartphonesMobile Device Brokers go Mobile BroadbandCloud_RevolutionWhat is Mobile Cloud ComputingMobile Cloud Computing TrendsMobile Device Broker BasicsNotebook_MarketingMobile Cloud & Brokers New DevelopmentsCloud RevolutionYour Opportunity as a Mobile Device BrokerWhy Mobile Device Brokers are WantedTraining_ModulesVIDEO LEARNING CENTERAbout UsLTE 4G for Mobile BrokersBroker_B2B_MechanicsWhat's WIMAX Wireless 4G Connect?Lets follow a successful mobile device brokerSee Ted & his Swap Meet Profit SessionsTed in Action at the Swap Meet - WORKINGDelight in Ted's Mobile Momentum to PROFITSTed's Post Sale Activities & Cloud FunASK CLEAR CLOUD NETWORKMarket OpportunityHow it Worksnew_broker_channelsWhat is Social TVEnterprise MobilityWhat is Micro CloudLTE TabletsBlu Ray Player with SkypeSkype on my TVIntel SSDFacebook CloudFree Storage CloudGoogle CloudGoogle StorageWiMax WiFiLTE Verizon AdvancedLTE Dish NetworkWhat is an SSD DriveLTE AdvancedVideo Game CloudVideo Cloud EncodingWhat is an IP TV playerBlu ray TabletsExploring the LTE NetworkAndroid TetheringExploring-4g-tabletsUltra High Speed InternetWhat is Desktop VirtualizationCloud ApplicationsUnderstanding Mobile VideoQWERTY PhonesIntel UltrabookTablet EvolutionIn Demand Cloud Computing JobsEnterprise Optimized TabletsCloud Services BrokeragesPolice Mobile Data TerminalsExploring Wireless Computing ConceptsWhat is an Intelligent NetworkExamining Augmented Reality AppsEmergence of the Personal CloudWhat is Ultra Fast Internet ConnectionExplaining Mobile Payment SystemsWhat is a VOIP Business Phone SystemPrivate Cloud Storage ServicesExploring Today's IT Data CentersWhat is Network VirtualizationWhat is Cloud Multi-TenancyWhat is Hosted CloudCloud Artificial IntelligenceFacebook MobileIndia CloudPrivate Cloud Storage SolutionsWhat is Private Cloud ComputingIP Video Surveillance4G Service ProvidersExplaining What is a Cloud APICloud Management4G AndroidWhat is a Mobile PaymentWhat is Samsung Cloud PlatformWhat's Google App EngineDescribing What's a Private CloudWhat's Google Compute EngineWhat is Cloud StackWhat is OpenstackWhat is Amazon Cloud Computing ServicesWhat is Android LTEWhat is Windows 8 TabletWhat is the HP CloudMobile Web Apps Against Native AppsIs it True the Desktop PC is Dead?What is Data VisualizationWhat is an InfographicWhat is Hadoop and Big DataBYOD OptimizationWhat is a Private CloudWhat are Cloud AppsWhat is a Google App AccntWhat is Enterprise Resource PlanningCloud Storage 2012What is a Cloud APIWhat is PinterestWhat is an Internet Enabled TVSMB and the CloudMobile Cloud ServicesWhat is WAPMobile Social NetworkWhat is Free WiFiWhat is Cloud CommunicationsWhat's the Mobile CloudWhat is Cloud CRMWhat is the Social CloudWhat is a Cloud ServerCloud Computing Glossary 2012What is a Virtual MachineExplaining Facebook ArchitectureWhat is WiDiWhat's High Performance ComputingIP-TV-BasicsWhat is a Hybrid CloudWhat is SkyDriveWhat is Google DriveWhat is FlexPod Cloud ArchitectureVideo Apps in the CloudElastic CloudAmazon Cloud SevicesWhat is Cloud Data MiningLTE 4G and TabletsWhy WiMax FailedBig Data Computing in the CloudOne brain your brain & my brain is the CloudThick Clients and Cloud ComputingThin Clients and Cloud ComputingLTE Trends 2012Cloud Computing in IndiaCloud Trends 2012new-developments-in-the-cloudWuala-vs-Dropbox-and-othersWhat is Wuala Social Grid StorageOccupy Wall Street and Cloud ComputingExploring What is Sony Internet TVCorporate TabletWhat-is-Amazon-Cloud-ServicesWhat are LTE 4G Cloud ServicesCloud Services for Tablets and Mobile4G LTE new developmentsWhat is Mobile Cloud ServicesSSD in the Data CenterHow Does Facebook Architecture Work?SSD and Cloud Computingwhat is CPU GPU computingWhat is Augmented-Realitywhat is HPC in the cloudWhat 's 4G LTE and WiMaxwhat is a Cloud ClusterWhat is a M2M NetworkWhat is M2M Communicationswhat is Grid ComputingExploring what is NFCChrome Vs. AndroidWhat is a HypervisorTablets for Enterprisewhat is cloud based virtualizationFacebook and the Cloud PlatformWhat is Cloud Based Video StorageIs HSPA+ same as 4GWhat is a Massively Scaled Data CenterWhat is an Internet Enabled TVwhat is a Mobile OSTablets and 4Gwhat is Google Cloud Printwhat is a Cloud Based Video EditorWhat is Cloud SOAExplaining Augmented Reality Layerswhat is Video Chatis a Router a SwitchExploring IPTVwhat are Corporate Cloud ServicesLTE Vs WiMaxCloud Computing Platformswhat's a high bandwidth 4G NetworkExplaining Amazon Instant Videowhat-is-a-SaaS-Home-Security-systemWhat is a 3D Smartphonewhat is Mobile TVwhat is Smart TVwhat is AOL In2TVwhat is ATT Project Lightspeedwhat is cloud-in-a-boxwhat is SONETwhat is Verizon FiOSwhat exactly is Autostereoscopic 3DVideo and Cloud ComputingWhat is DropboxCloud Video Delivery PlatformsLTE Verizon 3G to 4GWhat is Android Rootingwhat-is-WebOSInternet TV GuideWhat's Ivy Bridge 3D TransistorWhat's SaaSFacebook Oregon Data CenterWhat is an Apache Web Serverwhat-is-Buffalo-CloudStorwhat-is-a-Dual-Core SmartphoneWhat is Google NFC Walletwhat-is-a-Quad-Core Smartphonewhat-is-IPTVWhat-is-Mobile-Device-HapticsWhat is a Pocket RouterCLOUD COMPUTING GLOSSARYWhat is Office 365What is Amazon Cloud Playercloud computing top trendswhat-is-no-glasses-3Dwhat-is-a-powerline networkwhat-is-MIMO Technologyfree_kindle2What-is-Boxeewhat-is-Internet-TVwhat-is-AMD-Llanowhat-is-a-multiscreen displaywhat-is-Lytro-Technologywhat-is-a-LAN-partywhat-is-NFC-Near-Field CommunicationWhat is a SFF PCwhat-is-an-eyefinity-displayWhat is an AIO PCWhat is HKMGVIDEO LEARNING CENTERHow Internet Traffic Moves Over PlanetCloud Computing and Cloud ArchitectureDynamic Cloud ServerWhat is the Internet BackboneTwitters Internet Infrastructure64bit-vs-32bitsClient-Server Vs Cloud Computingwhat-is-arm-processorWhat's cloud computing architectureWhat is Web Services Architecturewhat's a Tablet eReaderTablet Cloud ServicesWhat is iCloudwhat-is-a-hex-coreTop Tablet AppsWhat's a KindleFree SupportVerizon 4G LTE Modem is Speed Demonwhat is a Tablet OS4G Network Deployment & Evolution-LTEWiMax Battles LTE for Wireless King-MakerWhat is a Cloud Data CenterWireless M2M Communicationswhat is Intel ThunderboltClearWire and Clear Cloud NetworkWiMax vs LTEconnect laptop to tvwhat is a Video Conferencing Callwhat is Data Center Virtualizationwhat is a HTPCwhat is a Chromebooktablet-as-a-hotspotwhat is SilverlightWhat is mVOIPwhat-is-Amazon Cloud PlayerSkype and Videos and iPhone Appwhat-is-HP Wireless TV Connectwhat is HTC Senseciscos-new-data-centerWIRELESS COMMUNICATIONSLaptops_and_Cellularwhat-is-RevoluTVWhat is Wi-Fi Direct4G Networks and WiMaxEnterprise Mobility and Wireless 4GWiFi Facts and Laptop Cloud ExperienceWhat's SkypeMobile Internet has arrivedLearn_Wi-Fiwhat is Amazon Cloud DriveWhat's the Mobile Web?Laptop's_Wi-Fi_RadioCisco_Tabletwhat-is-a-4G-mobile-hotspotCorp Workers Getting Lots of TabletsGalaxy Tab Tabletwhat-is-BoxeeTablets Coming on BigIP Internet TV Platform Mobile BrokersThe SMB and the CloudeReaders are Tabletswhat-is-new-USB-3.0Verizon 4G Networkwhat is a P2P Networkwhat-is-a-4G-Tabletwhat is ARMwhat-is-Adobe-AIRwhat-is-Amazon-Instant-Videowhat-is-google-navigationwhat-is-an-Amazon-data-center32 bit Vs. 64 Bit3D Laptop and Sandy Bridgewhat-is-ubuntu-netbook-editionTablet Explosion New Post 8-20-10!what-is-a-google-data-centerwhat is Atrix 4GDoes Touch on a Screen Matter?About UMPCsA $35 Tablet?Millions of ChannelsWhat's a Hybrid Tablet-Smartphone?Tegra_TabletWhat's Google Places in the CloudHitachi Virtual Storage PlatformWhat is peer to peer online storagedial2domobile enterprise applicationsAcer 2-screen TabletWhat is Mobile BankingWhat's a VIDEO CALL?Mobile_Cloud_TalkCloud Computing ArchitecturesThin Clients & Web 2.0 for BrokersThin Client Computing ExplainedWhat is Ubuntu ServerWhat is Chrome OSGoogle Fiber NetworkWhat is Augmented Reality for Mobile?what-is-Amazon-instant-videoeReader_basicsCloud SecretsWhat is a HypervisorEmerging Cloud OS'sLight Peak is 100 gigabits per secondExploring Augmented RealityWhat is Display PortRouters now are home supercomputersHTC ThunderBoltWhat is Light PeakWhat's M2M?3D Smartphone with 4G and Touch and Wi-FiWhat is iOS 5Cloud StorageHandheld_HeavenWhat is MS SkydriveBlackberry_TorchMobile DevicesWhat is a Data BrokerAndroid_ExplosionMobile Devices AdvancedWhat is USB 3.0what is dropboxPalm PreWhat is IE9What is Firefox 4Amazon APP StoreFREE CLOUD APPSMORE FREE CLOUD APPSPrint from the Cloud with ePrintWhat is a PicoCellOnline Backup Service CARBONITEWhat is P2P NetworkingWhat is ZohoAmazon Web Services-Mobile Device ProsHP WebOSCloud Computing in India is HugeGroup Texting is evolving and expandingAmazon Web Services for BrokersCLOUD_ANALYSISNetflix Video Streaming and FacebookIndia is Growing Data CentersWhats_on_line_storage?What is WebOSAndroid 3.0 Honeycomb TabletWhat's a 1GHZ SmartphoneMainframe in PocketHTC Incredible for Mobile BrokersCloud Based Storage PlatformsVideo Over CloudWhat is HTML5What_is_a_SmartphoneGoogle's Giant SmartphoneAndroid 2.2 Mobile & CloudBehind_the_CloudWhat is Mozy Cloud StorageWhat is a Content Delivery NetworkFujitsu Cloud ServicesSony Cloud ServicesAndroid Smartphone Becomes a HotspotWhat's 4G?What is WIDIExplaining IaaSVideo CallingVideo Over LTEWhat is Cloud SecurityIntels Sandy Bridge Core ProcessorsCloud Gaming Distribution's RiseAndroid in the CloudAll About Smartphones and BlackberrysNew Cloud DevelopmentsTablet Explosion in GrowthWireless Network PlatformsDedicated Vs Cloud ServersTop Android Apps using Mobile CloudMASTER_LINK_PAGEExplaining Streaming VideoWhat is 4G CellularWhat's a HSPA+ Network...is it 4G?What's a Blu-ray LaptopHere's IPv6 Networking for the CuriousCloud StorageWhat is Windows Phone 7 and how it worksBluray NetbooksFacebook & the CloudCluster GPUChina Supercomputer is better than oursNew_Notebook_TrendsCloud Storagewhat_is_IaaSChrome OSgoogle ebookstoremobile apps for the cloudCruel Cloud RealityWhat_is_PaaSNook Color eReaderIP-TV for Mobile Device BrokersAbout Rugged LaptopsLearn about SSDCorporate iPad is now a RealityMobile Devices Erasing the Enterprise DesktopCloud Delivered Hi-Def VIDEO & Mobile DevicesCloud Download or StreamedMobile Cloud Computing Glossary-WITH VIDEOS!Mobile_Cloud_ProsWhat does Streaming Video MeanCloud Streams 100 Million ChannelsComputing Moving Back to the CloudWhite_House_CrashCloud_Server_FarmsMobile_Cloud_FutureWhat exactly is a Mobile_HotspotMobile Hotspot in your PocketAndroid_MonsterCloud_Q_ACellular and LaptopsWave_FailureUltraportable LaptopsWindows7_Awesomesave_it_pleaseFrash_is_FlashRugged_LaptopsIndia_$35_LaptopBluRay LaptopsHow to Upgrade a NetbookTrying eREADERSenrollee_mods_1Google TV Explored and ExaminedBluray Drive with Web AccessWhy Cloud Computing Reduces Jobsenrollee_2_modsLaptop ConnectorsGaming LaptopsDesktop_Replacements
SEARCH THIS SITE

cloud-api-infographic
cloud/cloud-api-infographic.jpg

FREE MOBILE CLOUD COMPUTING CONCEPTS - TRAINING_MODULES_WITH_TONS_OF_VIDEOS

Definition of API

API, an abbreviation of application program interface, is a set of routines, protocols, and tools for building software applications. A good API makes it easier to develop a program by providing all the building blocks. A programmer then puts the blocks together.

Most operating environments, such as MS-Windows, provide an API so that programmers can write applications consistent with the operating environment. Although APIs are designed for programmers, they are ultimately good for users because they guarantee that all programs using a common API will have similar interfaces.

This makes it easier for users to learn new programs.

Follow Me on Pinterest

MORE ON WHAT'S API STAND FOR:

Stands for "Application Program Interface," though it is sometimes referred to as an "Application Programming Interface."

 An API is a set of commands, functions, and protocols which programmers can use when building software for a specific operating system.

The API allows programmers to use predefined functions to interact with the operating system, instead of writing them from scratch.

All computer operating systems, such as Windows, Unix, and the Mac OS, provide an application program interface for programmers. APIs are also used by video game consoles and other hardware devices that can run software programs. While the API makes the programmer's job easier, it also benefits the end user, since it ensures all programs using the same API will have a similar user interface.

cloud-api-comparison-cloud-databases
cloud/cloud-api-comparison-cloud-databases.jpg

Making Simple Easy Cloud APIs...it's important!

APIs are critical to cloud computing services, regardless of whether they're public, private, or hybrid. However, most developers don't consider how their APIs should work; as a consequence, many otherwise solid clouds don't provide good programmatic access.

This applies to those creating private, community, and hybrid clouds for the enterprise, as well as full-blown public cloud providers.

All clouds and cloud APIs are very different, and the lack of standards and common approaches has led to confusion around the use of APIs. The results are unproductive cloud deployments and APIs that are changing faster to correct bad past designs than cloud managers can keep up with.

API design should focus on purpose and simplicity. Damian Conway offers good advice on cloud API design:

  1. Do one thing really well.
  2. Design by coding.
  3. Evolve by subtraction.
  4. Declarative trumps imperative.
  5. Preserve the metadata.
  6. Leverage the familiar.
  7. The best code is no code at all.

I boil all of this down into three key approaches.

First, simplicity leads the day. Many APIs are built to do everything, but with such high demands placed on them, the APIs become much less useful for practical applications. My simple rule: When in doubt, break them out. Consider a finer-grained approach.

Second, consider performance. Often created as an afterthought, poorly performing APIs seem to be an epidemic.

Make sure to code as efficiently as you can and test, test, test.

Finally, design holistically. APIs have to work and play well together, so they need common data structures and usage patterns. APIs support systems -- they are not systems unto themselves. They need to adhere to common design patterns and supporting infrastructure, including governance, security, and data.

Cloud APIs - they're BIG Time nowadays, with Web 2.0, for these "things called Cloud Application Interfaces"......

Netflix beat Blockbuster using a smart API strategy--and more companies can now do the same to undermine rivals, said cloud experts at Structure 2011 conference.

created at TagCrowd.com

cloud-api-standards-evolution
cloud/cloud-api-standards-evolution.jpg
/cloud-api-key-sign-in
cloud/cloud-api-key-sign-in.jpg
cloud-api-netflix
cloud/cloud-api-netflix.jpg

++++++++++++++++++++++++
What is a Cloud API
In 1997 we attended, the first Perl Conference, which two years later evolved into the  OpenSource Convention. For us the most memorable part of the conference was a keynote given by Albert Balimoore, titled The Web is the API. At one point Andrew showed a slide with nothing on it but a UPS tracking URL. "This is amazing," Andrew said, "every UPS package has its own homepage on the web!"

As Andrew and I both discussed in our respective talks, that homepage wasn’t just a document that interested people could view. It was also a chunk of data that interested machines could process.

In 1997 it was often possible, but never easy, to disentangle that data from its surrounding HTML markup.

Fifteen years later we’ve made a lot of progress. Many cloud services are now switch-hitters. When a person using a browser asks them to do something, they respond with HTML for humans to read and interact with. When a computer asks — and by computer I mean a smartphone, a desktop PC, or a virtual machine running elsewhere in the cloud — they respond with data for that computer to process.

When services switch-hit on the data side, they are providing and consuming APIs (application programming interfaces). Many services provide APIs for smartphones, PCs, and cloud VMs (virtual machines) to consume. This is a very good thing. But it still isn’t quite what Andrew and I had in mind, nor what Andrew meant by The Web is the API.

Today, APIs are the API. There are APIs for Amazon, Bing, Facebook, Flickr, Google, Netflix, Tripit, Twitter, and most of the other major web services you use. Given that bits and pieces of your personal cloud are stored in various services, a developer may want to create an app that interacts with more than one of them on your behalf. To do that, they must learn how to use each relevant API. Nowadays they tend to share a common set of conventions, but each API is its own protocol.

So while there’s a lot less  data friction
than there used to be, there’s still a lot more than there needs to be.

cloud-api-markerting-three-ways
cloud/cloud-api-markerting-three-ways.jpg
cloud-api-netflix
cloud/cloud-api-netflix.jpg

The data behind all those APIs, of course, is sitting in databases of one kind or another. Can we imagine browsing those databases in the same standard way we browse websites? Tim Berners-Lee did. In the original proposal for the World Wide Web, back in 1990, he listed a number of “future paths” including:

A server automatically providing a hypertext view of a (for example Oracle) database, from a description of the database and a description (for example in SQL) of the view required.

That future is real today in some places. At Netflix.com, for example, you can browse the catalog as a switch-hitter.

Starting with
Genres, for example, you can proceed to B-Horror Movies, one of which is “Curse of the Voodoo”, and then proceed to “Curse of the Voodoo”‘s directors, the only one of which is Lindsay Shonteff. What you see when you click these links will depend on how your browser displays documents written in the Atom feed format. By default most browsers display such documents in a friendly way. When you turn off that friendly display, you’ll see the raw data document instead.

If you drill all the way down to an individual item of data, though, you’ll get the same result either way. Lindsay Shonteff’s name, for example, has “its own homepage” in Netflix’s web of data.

In this case the mechanism for “automatically providing a hypertext view” of the Netflix catalog is the Open Data Protocol (OData).

It’s one way, and I think a very good way, to make The Web is the API a true statement. Since OData is a Microsoft invention, and I work for Microsoft, you are entitled to be skeptical. But if you’ve followed my work and interests for the past 20+ years you’ll know that OData is the sort of technology I’ve always championed: fundamental, non-proprietary, game-changing.

Consider these two “homepages” for “Curse of the Voodoo”:

Netflix: Curse of the Voodoo [ odata.netflix.com/Catalog/Titles('5vSc') ]

eBay: Curse of the Voodoo [ ebayodata.cloudapp.net/Items('190556034358') ]

The first is an item in the Netflix catalog. The second is an item on eBay. These two webs of data are navigable in the same way. So here’s the synopsis from Netflix:

Synopsis: Director Lindsay Shonteff’s campy B-movie thriller centers on big-game hunter Mike Stacey (Bryant Haliday), who finds himself on the wrong side of a tribe of vengeful lion worshippers after he kills a sacred lion during an African hunting expedition. When the effects of the tribe’s curse begin to surface after his return to his London home, Mike realizes that his only recourse is to return to Africa and confront the witch doctor who hexed him.

[ odata.netflix.com/Catalog/Titles('5vSc')/Synopsis/$value ]

And here’s the price of the eBay item:

Price: 1.95.

[ ebayodata.cloudapp.net/Items('190556034358')/CurrentPrice/$value ]

In order to correlate these two pieces of information I’ve had to learn nothing about the Netflix or eBay APIs.

I have simply navigated two webs of data, and done so in a uniform way. Whether by means of OData or some other mechanism, I’ll want the webs of data that constitute my personal cloud to work the same way.

cloud-api-management-tag-cloud
cloud/cloud-api-management-tag-cloud.jpg

cloud-api-infrastructure
cloud/cloud-api-infrastructure.jpg

Some popular Cloud APIs:
API
DESCRIPTIONCATEGORY
8tracksMusic playlist creation serviceMusic2009-12-07
90sec.tvEmbed videos on web sitesVideo2010-11-01
A.nnotatePDF, Word, or Web annotation serviceOffice2008-09-14
AAA Cooper TransportationTrucking and shipping servicesShipping2012-01-13
Aadhaar UIDAI AuthenticationOnline authentication for Indian citizensGovernment2011-06-28
Aalto social interfaceSocial networking support serviceSocial2012-03-13
AbbreviationsAbbreviated words servicesReference2008-08-26
ABBYY Cloud OCROptical character recognition serviceTools2012-05-10
abctext.comSMS text messaging serviceMessaging2010-04-18
AbeBooksOnline books marketplaceSearch2012-03-22
AbleSMSSMS integration serviceMessaging2011-10-14
About.mePersonal website serviceSocial2012-05-24
ABTXTSMS gateway serviceMessaging2012-01-30
Abundant AtomicClockAtomic timekeeping serviceTools
Continued...popular Cloud APIs.........................................................................................................
#blueText messaging storage serviceMessaging2011-04-23
.NET Daily Fact.NET daily fact widgetInternet2012-01-09
.telAccess to .tel DNS Internet2010-04-30
100 Facts About MeFact sharing service Social2011-08-19
10x10Photo and news analysis servicePhotos2010-12-08
199Spanish bookmarking and directory serviceSearch2011-12-09
123 Shop ProOnline shopping cart softwareShopping2010-11-03
12seconds.tv12-second videobloggingVideo2008-08-21
140 ProofTwitter advertising serviceAdvertising2011-01-12
18amailEmail marketing service Email2010-01-18
1DayLaterBusiness expense tracking toolEnterprise2010-02-07
2-WaySMSSMS messaging serviceMessaging2010-12-07
2011 International Computational Billiard ChampionshipsComputational billiards competitionSports2011-06-20
23Photo sharing servicePhotos2006-02-13
2CheckoutEcommerce servicesShopping2010-03-24
2GISRussian Search ServiceSearch2011-10-02
30 BoxesCalendar serviceCalendar2006-02-24
30 Digits Web ExtractorSemantic web extraction toolInternet2010-11-22
360 Business ToolBusiness management serviceEnterprise2012-07-05
360TextSMS text messaging serviceMessaging2012-06-20
360voiceXBox gamer profile dataGames2010-11-11
3DArmoryWorld of Warcraft armory databaseGames2009-08-07
3dCartOnline shopping cart serviceShopping2010-03-25
3defyOnline 3D modelling servicePhotos2011-11-15
3JamReply-all text messaging serviceMessaging2008-09-03
3NGNetworksVoIP services providerTelephony2011-01-14
3Scale Account ManagementAPI management servicesTools2011-10-06
3Scale AnalyticsAPI management servicesTools2011-10-06
3Scale BillingAPI management servicesFinancial2011-10-06
3scale Service ManagementAPI management servicesTools2009-08-21
3tapsRealtime search serviceSearch2010-08-09
3TIERGlobal wind and solar resource dataWeather2009-06-08
411SyncSMS, WAP, and email messagingMessaging2006-02-08
43 PlacesSocial travel goalsSocial2008-07-02
43ThingsSocial goal settingGoal Setting2005-10-30
46elksCloud communication platformTelephony2011-08-22
4:14 XML BibleChristian bible verse serviceReference2012-03-13
4PSA DNS ManagerDNS hosting serviceInternet2011-01-14
4PSA VoipNowIntegrated communications systemTelephony2011-01-14
4SharedFile Sharing ServiceFile Sharing2011-04-07
500pxOnline community for photographersPhotos2011-10-18
51.comSocial Network Data Access ServiceSocial2011-01-10
511 Driving TimesSan Francisco traveler information serviceTransportation2012-01-13
511 Real-time Transit Departures San Francisco traveler information serviceTransportation2012-01-13
5gigConcert listing serviceMusic2009-04-16
5minInstructional video databaseVideo2009-04-16
5Min VideopediaInstructional video collectionVideo2012-01-16
5pmProject and Time Management ToolsProject Management2010-12-29
6roundsSocial entertainment platformSocial2010-07-09
73s Ham RadioHam radio conversation logging serviceSocial2010-12-08
7digitalMusic downloads storeMusic2010-08-13
80legsCommercial web search servicesSearch2009-11-08
88 MilesProject time tracking servicesProject Management2008-08-14
8couponsLocal deals aggregatorShopping2010-12-07
8tracksMusic playlist creation serviceMusic2009-12-07
90sec.tvEmbed videos on web sitesVideo2010-11-01
A.nnotatePDF, Word, or Web annotation serviceOffice2008-09-14
AAA Cooper TransportationTrucking and shipping servicesShipping2012-01-13
Aadhaar UIDAI AuthenticationOnline authentication for Indian citizensGovernment2011-06-28
Aalto social interfaceSocial networking support serviceSocial2012-03-13
AbbreviationsAbbreviated words servicesReference2008-08-26
ABBYY Cloud OCROptical character recognition serviceTools2012-05-10
abctext.comSMS text messaging serviceMessaging2010-04-18
AbeBooksOnline books marketplaceSearch2012-03-22
AbleSMSSMS integration serviceMessaging2011-10-14
About.mePersonal website serviceSocial2012-05-24
ABTXTSMS gateway serviceMessaging2012-01-30
Abundant AtomicClockAtomic timekeeping serviceTools2012-01-16
Abundant Barnes & Noble PriceBook price retrieval serviceShopping2012-01-16
Abundant DeadOrAliveCelebrity mortality status databaseEntertainment2012-01-16
Abundant World PopulationPopulation information servicePolitics2012-01-16
AcapelaVoice as a serviceTools2012-06-13
Access ACSChurch and ministry management serviceEnterprise2012-03-06
AccthubAccount management serviceBackend2012-05-17
AccumulusSubscription billing servicePayment2010-12-14
AccuWeatherWeather forecast serviceWeather2010-02-11
AceProjectProject management enhancement serviceProject Management2011-08-08
ACheckerAccessibility review serviceUtility2012-03-09
ACHWorksOnline transaction servicePayment2012-01-10
AcoustidAudio fingerprinting serviceMedia Management2011-12-13
Acquia CloudCloud based Drupal web site development platformInternet2012-03-16
AcromineAcronym look-up and text mining serviceDictionary2012-02-14
Across CommunicationsInternet-based, inter-device communication serviceTelephony2012-05-10
ActBlueDemocratic fundraising serviceGovernment2011-01-04
Activ FinancialFinancial market data servicesEnterprise2008-10-05
Activa Live ChatLive Chat PlatformChat2011-08-16
ActiveEvents, Activities, Races, Tournaments, ClassesEvents2009-04-13
Active.comActive lifestyle community databaseSports2011-02-15
Active.com CampingAccess campground databaseTravel2010-11-01
ActiveBuildingProperty management platformProject Management2012-05-18
ActiveCampaign Email marketing serviceEmail2010-03-13
ActiveCollabCollaboration & Project Management SystemTools2011-09-26
activeRendererOutline publishing for Radio UserLandOther2005-09-04
Activism Network CommunityOnline activism network and communityEvents2011-08-16
ActPHPWeb development resource portalSecurity2012-05-10
Aculab CloudCloud based telephony servicesTelephony2011-06-14
AdamsNames RegistrationInternet domain registrationInternet2011-07-07
AdaptivePlanningFinancial analysis, planning, and reporting serviceFinancial2012-05-02
adBriteOnline ad management serviceAdvertising2012-01-06
Add to TomTom Route and place sharing serviceMapping2012-06-15
Add To TripSocial trip planning serviceTravel2011-09-13
AddressingHistoryHistorical online mapping serviceTools2010-12-14
AddressTwoSmall business CRM serviceEnterprise2011-02-15
AddShoppers Social ProductSocial eCommerce sharing platformSocial2012-05-18
AddThis Analytics Content sharing analytics data serviceInternet2010-02-05
AddThis MenuAllows integration of AddThis sharing tools to websitesInternet2009-12-17
AddThis ServicesAddThis Integration ServiceInternet2011-01-04
AddThis Sharing EndpointsContent sharing serviceInternet2010-02-05
AddToAny MenuOnline sharing toolSocial2010-04-22
AdeggaSocial Wine Discovery serviceSocial2010-12-01
Aden Forshaw's The CatRandom cat picture servicePhotos2012-03-26
Adeptol CloudConnectOnline document viewer serviceTools2010-03-31
AdfonicMobile advertising serviceAdvertising2012-04-17
AdGoorooKeyword search marketing platformAdvertising2010-01-11
ADI TimeWorkforce optimization and management softwareOffice2012-03-29
Adigami Web AnalyticsDigital media analyticsAdvertising2011-09-16
AdilityLocal coupon serviceShopping2010-08-11
AdJugglerAd management serviceAdvertising2011-08-29
AdknowledgeOnline advertising and marketing serviceAdvertising2011-11-09
ADL 3D Repository (3DR)3D model databaseDatabase2011-09-27
AdmitPadAcademic admissions servicesEnterprise2011-10-26
AdmobMobile advertising serviceAdvertising2011-01-11
Adobe FeedsIntegrate Adobe feedsFeeds2011-01-18
Adobe on AIR Bus TourServices to track Adobe AIR product launchOther2007-07-13
Adobe Project AdthenticateAd validation and optimization serviceAdvertising2012-06-22
Adobe ShareService for publishing and sharing documentsStorage2007-10-07
Adobe SocialSocial network connection platformSocial2010-12-20
Adobe WaveDesktop notification serviceUtility2010-10-14
AdocuSingle word microblogging serviceBlogging2010-12-21
Adriatic.hrCroatian travel accommodations serviceTravel2011-08-30
AdSpeedOnline advertising management servicesAdvertising2008-10-18
AdStackAdvertising optimization serviceAdvertising2012-06-06
AdventureLinkTravel search and booking serviceTravel2011-11-29
AdzerkOnline ad server serviceAdvertising2011-12-11
AeponaMobile cloud hosting servicePayment2011-11-21
AerapayMobile payments servicePayment2012-02-29
AES WebLinkShipment submission and inquiry servicesGovernment2008-09-14
Aetna CarePassHealth and drug information portalMedical2012-06-05
Aevum ObscurumOnline multiplayer strategy gameGames2007-11-28
Affiliate Window MerchantAffiliate and merchant transaction information retrieval serviceShopping2011-07-12
Affiliate Window ProductServeAffiliate and merchant transaction information retrieval serviceShopping2011-07-12
AffilinetEuropean affiliate marketing networkShopping2011-07-05
AffinityLiveProject management, sales, and CRM platform Project Management2012-03-27
After the DeadlineSpelling, style, and grammar checkingBlogging2009-03-14
Aftermarket.plInternet domain marketplaceInternet2012-01-09
Agendize ActionBusiness conversion tools platformEnterprise2011-06-10
Agendize AnalyticsBusiness conversion tools platformEnterprise2011-06-10
Agendize DevelopersBusiness conversion tools platformEnterprise2011-06-30
Agendize PlatformBusiness conversion tools platformEnterprise2011-06-10
Agent StormReal Estate systems connectionReal Estate2010-03-31
AgentFactor TravelTravel booking serviceTravel2007-12-18
AgentRankReal estate agent sales, forecasts, and reviewsReal Estate2008-03-23
Agile BenchAgile project management toolProject Management2010-12-21
AgileTaskTask tracking application for agile projectsPIM2010-11-02
AgileZenWeb based lean project management applicationProject Management2011-01-31
Agree'nSignOnline electronic signature serviceEnterprise2011-11-19
AHDS Identifier ResolverUK electronic research data repositoryReference2011-06-30
AidDataDevelopment finance dataFinancial2011-06-07
aideRSSRSS feed management and filtering serviceFeeds2008-06-11
AIDS.gov Service Provider LocatorHIV/AIDS testing and care information serviceGovernment2012-04-05
AIDSinfoGovernment info on HIV/AIDS treatmentMedical2011-07-26
AIM PhonelineVoice Over IP Internet telephony servicesTelephony2006-09-10
AirbanaAirsoft event, map and pricing databaseOther2010-05-13
Airbrak Application errors tracking and reporting serviceTools2011-10-11
Airbrake DataApplication error reporting serviceTools2012-01-17
Airbreak NotifierApplication error aggregation serviceTools2012-01-17
Airport Stat Airport activity and weather information serviceTransportation2011-12-09
AisleBuyerMobile commerce servicesRetail2012-04-17
AISpeechSpeech recognition serviceUtility2011-04-29
AkismetBlog spam prevention serviceBlogging2006-09-27
AladtecEmployee scheduling and workforce management softwareOffice2012-03-21
Alagad FortuneRandom phrase retrieval serviceEntertainment2012-01-10
Alameda County Service Providerlistings for social services in Alameda County (Oakland), CAGovernment2011-11-08
Alaska Satellite FacilitySatellite data archiveScience2011-11-01
Alau.meReferral tracking platformTools2012-05-09
Albany eVERIFYPayment verification servicePayment2011-09-01
AlchemySemantic text and data dection and extractionTools2009-10-02
AlchemyAPI Keyword and Term Extraction Text analysis and extraction toolUtility2010-01-14
AlchemyAPI Language DetectionLanguage detection and analysis toolTools2009-12-18
AlchemyAPI Text CategorizationText analysis and categorization toolTools2009-12-18
AlertGridMonitoring and alert serviceTelephony2010-09-09
AlertRocketWeb based mobile messagingMessaging2012-04-02
Alexa Site ThumbnailThumbnail images of web site home pagesInternet2006-08-04
Alexa Top SitesWeb site traffic rankingsInternet2006-08-04
Alexa Web Information ServiceWeb site information and traffic dataSearch2006-08-03
Alexa Web SearchWeb Search EngineSearch2006-04-04
AlianzaCloud-based voice communication serviceTelephony2012-03-27
AlibrisMarketplace for books, movies and musicShopping2010-12-03
All for GoodFind and share volunteer opportunities Other2009-06-30
AllAreaCodesArea code lookup serviceReference2011-02-23
AllCDCoversMusic graphics serviceMusic2010-10-21
AllClientsWeb Based CRM and Marketing SystemEnterprise2010-11-02
AllegroOnline auction marketplaceShopping2008-10-03
Allen Brain AtlasNeuroscience information resource directoryMedical2012-04-05
Allociné MovieFrench-language movie and TV information serviceEntertainment2012-01-05
AllogarageFrench car dealership reviews and recommendationsShopping2010-03-31
AllTrustBiometric check processing servicePayment2012-03-29
AllyveSocial media integration serviceSocial2012-06-06
Aloq Mobile content publishing serviceOther2009-11-22
Alpha Micro SystemsGPS tracking serviceTransportation2012-01-09
AlpinautAdventure sport route sharing serviceSports2010-12-21
AlsaMarketingOnline marketing platformEnterprise2011-10-18
AlterGeoLocal recommendation serviceSocial2010-10-21
AlternativeToSoftware application recommendationsRecommendations2010-08-19
AmadeusTravel industry transaction processing serviceTravel2011-07-14
Amadeus CruiseCruise line transaction processing serviceTravel2011-09-15
Amazon A9 OpenSearchSearch servicesSearch2005-09-04
Amazon CloudWatchCloud asset monitoring and management Internet2009-06-18
Amazon DevPay License ServiceAmazon web services licensingFinancial2008-01-01
Amazon DynamoDBNoSQL database serviceDatabase2012-01-18
Amazon EC2Elastic Compute Cloud virtual hostingInternet2006-08-25
Amazon eCommerceOnline retailerShopping2006-04-04
Amazon Elastic MapReduceMapReduce data processing service Tools2009-04-06
Amazon Flexible Payments ServiceeCommerce payments servicePayment2007-08-03
Amazon Fulfillment Web ServiceeCommerce fullfillment serviceShopping2008-03-20
Amazon Gift CardsCorporate gift cards on demandEnterprise2012-04-03
Amazon Historical PricingHistorical product sales dataShopping2006-08-04
Amazon Marketplace Web ServiceProduct marketplace serviceShopping2010-08-04
Amazon Mechanical TurkRequest services of humansOther2006-01-22
Amazon Product AdvertisingeCommerce platformRetail2012-06-22
Amazon Queue ServiceInternet-based queuing serviceOther2006-08-03
Amazon RDS Relational Database ServiceRelational database service in the cloudDatabase2009-10-27
Amazon S3Online storage servicesStorage2006-03-14
Amazon SESEmail sending serviceEmail2011-01-25
Amazon SimpleDBOnline database serviceDatabase2007-12-16
Amazon SNSApplication notification serviceMessaging2011-11-10
Amazon SWFBusiness process serviceEnterprise2012-02-22
AmazoncaOnline barcode databaseReference2011-05-20
AmbassadorSocial Media Referral SoftwareSocial2011-10-25
AMEECarbon and energy calculation serviceScience2007-09-21
American Bible Society BibleSearchBible access and search serviceReference2011-05-25
AmeriCommerceShopping cart softwareShopping2012-02-10
AmeriTradeStock trading and data servicesFinancial2008-09-03
AMEX OPEN ForumAccess small business contentFinancial2011-11-15
Ami-Link HideLink hiding toolInternet2010-11-09
AmiandoEvents organizing and ticketing servicesEvents2008-12-20
Amnesty InternationalDatabase of censored sites and dataOther2006-10-28
AmphetaRateNews aggregatorNews2005-09-18
AmplifyContent analysis serviceInternet2009-05-08
Amsterdam MuseumMuseum collection onlineEducation2011-10-25
Analytical PathApplication data vizualization serviceTools2012-02-20
Analytics SEOSEO optimization serviceSearch2012-03-07
AnatoaFraud protection serviceSecurity2009-06-17
Anchor SMS Customer ManagementSMS customer management serviceMessaging2010-09-27
AnedotDonation and contribution management servicePayment2012-06-21
Angel OutBoundInteractive voice response platformTelephony2011-01-25
AngelListStartup financing communitySocial2011-09-15
AnimotoVideo creation platformVideo2010-03-16
AnkoderVideo transcoding serviceVideo2009-10-21
AnnotQTLGene annotation by chromosomal regionScience2012-03-27
aNobiiBook sharing serviceOther2010-10-25
AnswerbagQuestions and answers serviceAnswers2007-02-15
Anveo PhoneInteractive voice response phone serviceTelephony2012-04-19
AnyClipVideo Clip Sharing ServiceVideo2010-11-30
AnyHubFile sharing serviceStorage2010-12-21
AOL CalendarOnline calendar serviceCalendar2010-12-14
AOL Instant MessengerInstant messaging chat serviceChat2006-03-30
AOL JournalsBlogging platformBlogging2007-10-02
AOL Open AuthAuthentication servicesSecurity2007-08-16
AOL Open MailEmail servicesEmail2008-01-08
AOL PicturesOnline photo managementPhotos2006-10-02
AOL PresenceOnline presence serviceChat2006-03-30
AOL VideoAOL Truveo Video SearchVideo2006-10-18
AOL Video UploadVideo upload and sharing serviceVideo2007-12-15
Aonaware CountCheatServiceSolutions to anagram problemsGames2011-05-17
Aonaware DictionaryDictionary lookup serviceReference2006-11-19
ApertiumTranslation ServiceTools2011-01-06
API.LEIPZIGLeipzig city dataGovernment2011-12-06
ApideoVideo streaming serviceVideo2009-05-10
APIfyCreate APIs from structured web dataInternet2012-06-07
Apigee OAuthOAuth authentication across several APIsSecurity2011-10-07
APInboxIncoming emails to web serviceEmail2010-12-02
APIphanyAPI management and hosting serviceBackend2012-07-02
ApnaCircleBusiness and career networking siteSocial2011-10-17
Appbistr Software marketplace for Facebook appsSocial2010-06-15
AppDirectWeb based software marketplaceInternet2011-05-12
APPELLOEpiDoc encoded document information extraction serviceTools2012-05-22
appFiguresSales Reporting and Analytics for iTunes AppsTools2011-07-28
AppHarbo.NET application deployment serviceInternet2012-03-19
AppinionsOpinion aggregation platformRecommendations2011-02-15
Apple iClouCloud storage serviceStorage2011-08-08
AppleTreeFamily tree serviceOther2011-12-19
appMobiMobile HTML5 application platform serviceInternet2012-04-10
Appointment-PlusOnline reservation softwareCalendar2012-05-04
AppoliciousMobile application discovery serviceSearch2012-04-20
ApproverServices for document approval and reviewOther2006-11-24
AppsGeyserApp creation platformTools2011-05-16
AppShoreSmall business CRM service Enterprise2011-02-15
AppspotImageImage manipulation servicePhotos2009-05-08
ApptentieIn-application feedback serviceTools2012-03-06
appto.usMobile and web application databaseDatabase2012-04-17
Apsalar ApScienceMobile analytics platformEnterprise2011-12-14
ApstrataClient2Cloud application serviceStorage2011-06-07
aqlSMS solutions portalMessaging2007-07-01
aql vCardBusiness card generator servicesEnterprise2008-06-29
AramexGlobal shipping serviceShipping2012-05-25
ArchiDev ValidatorEmail and URL validation toolTools2011-12-06
Archimedes Project DonatusMorphological analysis data serviceScience2011-09-22
ARCSApplication resource control serviceSecurity2011-09-01
ArcWebMapping and GIS servicesMapping2006-02-09
Are My Sites Up?Website uptime monitoring serviceInternet2011-11-03
Are You Watching ThisAlgorithms identify in-progress, exciting sporting eventsSports2007-09-16
Argos Affiliat Affiliate management serviceTools2011-09-01
AriaCRM and other business applicationsEnterprise2008-03-29
ARIN WhoisInterent registry access serviceInternet2011-02-15
Ark.comPeople search directorySearch2012-04-27
Arne Elofsson's EMBRACEMiscellaneous bioinformatics servicesScience2012-04-10
aRodarUsed motorcycle listingsAdvertising2012-02-07
art.yArtwork information discovery serviceSearch2012-04-10
ArtBeatNYC/Tokyo art events informationEvents2008-10-22
Articulate OnlineHosted e-learning serviceEducation2011-12-09
ArtistDataArtist information retrieval serviceMusic2009-12-05
ArtsicleArt discovery and rental serviceOther2011-10-03
arXivAcademic research repositoryReference2008-05-04
AsanaTask management systemProject Management2012-04-25
ASC National Registry SearchSearch service for registered real estate appraisers Government2012-02-24
Ask AMEENatural language query serviceSearch2012-04-30
Ask SciPyCollaborative question and answer softwareAnswers2011-06-30
Ask Sponsored ListingsSearch engine marketing serviceAdvertising2011-02-09
Ask500PeopleCrowdsource polling serviceAnswers2011-12-23
AskGeoTime zone reference serviceMapping2011-11-21
Aspect SearchHosted search servicesSearch2008-08-09
ASPECT Vocabulary Bank for Education Education vocabulary controlled listsReference2010-12-17
AssemblaOnline project collaboration serviceProject Management2008-02-10
AssistlyOnline helpdesk toolEnterprise2010-12-15
Associated PressNews databaseNews2010-05-28
Associated Press MetadataNews content metadata serviceNews2012-05-24
AssureSignWeb-based E-signature serviceEnterprise2010-11-19
AT&T Device CapabilitiesMobile device identification serviceTelephony2012-01-12
AT&T LocationLocation based servicesTelephony2011-02-10
AT&T mHealth PlatformHealth system backendBackend2012-02-15
AT&T MMSMultimedia messaging servicMessaging2012-03-14
AT&T Notary ManagementDigital signature serviceSecurity2012-01-13

++++++++++++++++++++++++++++

The flexibility and economic benefits of cloud computing have generated a tremendous amount of interest. As developers work with this technology, an obvious concern is vendor lock-in. Writing an application that makes the most of cloud computing is great. But what if that application locks you in to a single vendor? The Simple Cloud API is an effort by multiple cloud vendors to create a single API that works with cloud services from multiple providers (see Resources). This article is a high-level overview of the API and its goals.

The state of the art

Cloud computing promises to change IT as dramatically as anything since the rise of the Web. If you're a developer or architect, you should at least be evaluating cloud computing if you're not using it already. These are exciting times, but the usual caveats apply. As with any new technology, you should understand cloud computing's strengths and weaknesses and use it only where it's appropriate.

One of the biggest risks with any new technology is building critical applications that lock you in to a particular vendor. Cloud computing can have significant economic benefits, but if using the cloud puts you at the mercy of a vendor's pricing strategy, that's a major concern. Even if you're perfectly happy with your cloud provider, your partners, customers and suppliers will likely use different cloud providers. It's vital that your applications be able to work with as many providers and services as possible.

The Simple Cloud API is designed to provide a single, simple, interoperable API for multiple cloud services and multiple cloud providers.


Levels of APIs

There are several ways of writing code to work with cloud services. To put the Simple Cloud API in context, we'll look at APIs at four levels:

  • The wire
  • Language-specific toolkits
  • Service-specific toolkits
  • Service-neutral toolkits

We'll consider these in detail next.

The wire

At this level, you are concerned with the actual bytes that go across the connection from the application to the cloud. For a SOAP service, the application has to build the <SOAP:Envelope> with the appropriate contents and headers. For a REST service, the application has to create the correct HTTP headers and build a URL that contains the appropriate parameters. For example, a REST request to the Nirvanix Internet Media File System (IMFS) to list all the items in the directory /dougtidwell might look like Listing 1.

Listing 1. Wire format of a sample REST request
GET /ws/IMFS/ListFolder.ashx?sessionToken=8da051b0-a60f-4c22-a8e0-d9380edafa6f&...HTTP/1.1
         Host: services.nirvanix.com Date: Wed, 20 Oct  2009 12:00:00 GMT

 

This is a request for a list of all the folders in the directory /dougtidwell. The request includes authentication information (the sessionToken parameter above), along with parameters like path name, page number, and page size. The complete URL in Listing 1 would include FolderPath=/dougtidwell&PageNumber=1&PageSize=5.

Language-specific toolkits

A language-specific toolkit provides convenience classes to create the SOAP and REST data structures. As a developer, you are still focused on the data structures that pass between your application and the cloud, you don't have to create the data structures directly. For example, the Zend_Soap library contains classes to simplify invoking a SOAP service. Invoking a SOAP service looks something like Listing 2.


Listing 2. Calling a SOAP service with Zend_Soap_Client
$params = array(..., 'FolderPath' => '/dougtidwell',
         'PageNumber' => 1, ...); $soapClient->call('listFolder', $params, $namespace);

 

The powerful curl libraries are a useful way to work with REST services. A request to retrieve data via REST might look like Listing 3.


Listing 3. Calling a REST service with curl
$curl_proc = curl_init('http://services.nirvanix.com/ws/IMFS/ListFolder.ashx');
         $curl_post_data = array('sessionToken' => '8da051b0-a60f-4c22-a8e0...',                          'folderPath'   => '/dougtidwell',
                                 'pageNumber'   => 1,                          'pageSize'     => 5); curl_setopt($curl_proc,
         CURLOPT_RETURNTRANSFER, true); curl_setopt($curl_proc, CURLOPT_POST, true); curl_setopt($curl_proc, CURLOPT_POSTFIELDS, $curl_post_data);
         $response = curl_exec($curl_proc);

 

In both of these examples, the application isn't concerned with parsing XML or checking HTTP return codes or similar issues; the toolkits handle most of the details. On the other hand, the application is not focused on business objects.

Service-specific toolkits

At this level, you are focused on business objects. Using higher-level objects that encapsulate cloud services means you no longer have to think about the format of the data on the wire. Working at this level, you have no idea whether the underlying service is SOAP or REST; you simply invoke the service. Two examples of service-specific toolkits are the Zend Framework classes for Nirvanix and Amazon S3. Following is the method for listing all of the items in a Nirvanix directory.


Listing 4. Listing all the items in a Nirvanix directory
$auth = array('username' => 'your-username',   
                     'password' => 'your-password',                'appKey'   => 'your-appkey'); $nirvanix = new Zend_Service_Nirvanix($auth);
         $imfs = $nirvanix->getService('IMFS');  $args = array('folderPath' => '/dougtidwell',                'pageNumber' =>
         1,                'pageSize'   => 5); $stuff = $imfs->ListFolder($args);

 

Nirvanix provides a number of services. The example here uses IMFS. Calling the getService() method returns an object you can use to interact with a particular service. Passing parameters to the ListFolder method returns an array of the items in the folder.

In contrast to Nirvanix's directory structure, Amazon's S3 uses buckets. Buckets cannot contain other buckets, so the hierarchical structure of the Nirvanix file system isn't supported. The simpler data model of S3 is reflected in the code for listing all of the items in an S3 bucket.


Listing 5. Listing all the items in an S3 bucket
$s3 = new Zend_Service_Amazon_S3($accessKey, $secretKey); $stuff = $s3->getObjectsByBucket($bucketName);

 

This sample code retrieves the meta information about all the items in a particular bucket. The array $stuff has metadata about each of those items, such as the item's name, size, content type, and timestamp.

Service-neutral toolkits

Service-specific toolkits improve developer productivity. However, a service-specific API locks you in to a particular service and provider. The goal of the Simple Cloud API is to provide a set of high-level classes that let you write one piece of code that can work with multiple services and providers. In looking at the Nirvanix and S3 classes, listing the contents of a directory or bucket required the ListFolder() and getObjectsByBucket() methods, respectively. In the Simple Cloud API, the ListItems() method does the job for both services.


The Simple Cloud API

The Simple Cloud API is designed for interoperable code. Operations defined in the Simple Cloud API are supported by many cloud services. The ultimate goal is that the code written to work with one cloud service should work with all similar cloud services. The PHP implementation of the Simple Cloud API uses the Factory and Adapter design patterns. To work with a particular cloud service, you call the appropriate factory method (such as Zend_Cloud_Storage_Factory for file storage) with an array of configuration parameters. The class returned by the factory method is an adapter to a particular cloud service. The adapter maps the Simple Cloud API calls to the service-specific calls required by each cloud provider.

The Simple Cloud API is defined for three types of cloud services:

  • File storage
  • Document storage
  • Simple queues

File storage refers to traditional cloud storage systems like S3 and Nirvanix. With a file storage service, you're responsible for knowing what data you have stored in the cloud. You can get a list of directories/buckets and a list of the files in each, but it's up to you to keep track of what each file represents. Typical methods in this API are fetchItem(), listItems(), deleteItem(), and fetchMetadata().

Document storage includes more-structured systems, such as Amazon's SimpleDB. Unlike simple file storage, document storage provides query facilities to help you find information. In some cases, the underlying service will be a relational database with schema support. In other cases, it will be a much simpler type of service. Typical methods in this API are listCollections(), listDocuments(), insertDocument(), and query().

Simple queues are queueing systems like Amazon's Simple Queue Service. Typical methods for the simple queue API include sendMessage(), listQueues(), and peekMessage().

A simple sample

Note: The Simple Cloud API is still a work in progress, and details are subject to change. The sample application here works with the adapters for Amazon S3 and Nirvanix IMFS as of the date of this article's publication.

To illustrate the interoperability provided by the Simple Cloud API, we'll build a simple PHP page that works with Amazon S3 and Nirvanix IMFS. The code begins by using the Zend_Config_Ini class to create an array of credentials from an .ini file. (The factory classes in the Simple Cloud API require an array of credentials as a parameter.) The two configuration files used in this sample are s3.ini and nirvanix.ini. If the name of a configuration file is not passed as a parameter, the code uses s3.ini by default.


Listing 6. Creating an array of credentials
require_once 'Zend/Cloud/Storage/Factory.php'; require_once 'Zend/Http/Client/Adapter/Socket.php';
         require_once 'Zend/Config/Ini.php';  if (array_key_exists('configfile', $_POST))   $configFile = $_POST['configfile']; else
           $configFile = '../conf/s3.ini';  $credentials = new Zend_Config_Ini($configFile);

 

The sample configuration file for an Amazon S3 adapter looks like Listing 7.


Listing 7. Configuration file for Amazon S3
http_adapter = "Zend_Http_Client_Adapter_Socket" storage_adapter = "Zend_Cloud_Storage_Adapter_S3"
         bucket_name = "developerworks" aws_accesskey = "12345678901234567890" aws_secretkey = "ABcdEFghIJklMNopQRstUVwxYZ01234567890abc"

 

The storage_adapter value is the name of the PHP class that implements the StorageService interface. For S3, the class is Zend_Cloud_Storage_Adapter_S3. A Nirvanix configuration file requires an application name (currently represented by the parameter auth_accesskey) and a directory name, in addition to a username and password.


Listing 8. Configuration file for Nirvanix IMFS
storage_adapter = "Zend_Cloud_Storage_Adapter_Nirvanix"
         auth_accesskey = "12345678-90ab-cdef-1234-567890abcdef" auth_username = "nobody" auth_password = "xxxxxxxx"
         remote_directory = "/dougtidwell"

 

The configuration file has the details that the Zend_Cloud_Storage_Factory class needs to create the appropriate adapter. Following is the code to get the list of items from the cloud storage service.


Listing 9. Using the factory class
<ul style='font-size: 125%; font-family: monospace; font-weight: bold;'>   <?php   $stuff = Zend_Cloud_Storage_Factory::getAdapter($credentials)->listItems();
           foreach ($stuff as $nextItem) {     echo "<li>".$nextItem."</li>";   }   ?>   </ul>

 

Using the default configuration file means that the information from s3.ini is used. That displays the contents of the S3 bucket named in the configuration file.


Figure 1. Bucket or directory listing with default configuration file
Graphic representation of bucket or directory listing with default configuration file

The bottom of the screen has two buttons that let you reload the page with a particular configuration file. Clicking on Create adapter using nirvanix.ini runs the exact same code, but with different configuration parameters. The results display the contents of the Nirvanix directory named in the configuration file.


Figure 2. Bucket or directory listing with a different configuration file
Graphic representation of bucket or directory listing with different configuration file

These two sets of results were generated by the exact same line of code. The configuration file changed, but the application itself did not.


Summary

The Simple Cloud API is a cooperative effort of several major cloud vendors to create a single, simple, interoperable API that works with many cloud services and providers. Work is under way to add support for more cloud services and cloud providers, and implementations of the API in languages other than PHP are in progress, as well. Cloud computing won't reach its full potential without openness and flexibility. The Simple Cloud API is an important tool for keeping the cloud open and your applications flexible.

cloud-api-kit
cloud/cloud-api-kit.jpg