Tuesday, March 24, 2015

Azure Web API Metadata Format: Swagger

Introducing Azure API Apps - .NET Web Development and Tools Blog - Site Home - MSDN Blogs
As part of the Azure SDK 2.5.1 release, a new feature called Azure API Apps were included. This new feature raises the capabilities of ASP.NET Web API, extending it with Swagger metadata while providing a simple to manage interface in the Azure Portal. Extend your API with authentication and no code changes, or generate an SDK for your API with a few clicks. A full definition of API Apps and their capabilities is available in the online Azure documentation. Video coverage of the API Apps announcement with Scott Guthrie is available online:

Azure App Service API Apps with Scott Hunter

An Overview of REST Metadata Formats | API UX
"Swagger is a REST metadata format being developed by Reverb, a spinoff from the Wordnik team. Swagger uses JSON (although it supports XML) and JSON-Schema to describe REST APis and their parameters and messages. Just like ioDocs it includes an open-sourced UI (swagger-ui, entirely in HTML/javascript) double-serving as documentation and ad-hoc testing utility, but Swaggers’ strength lies in its ecosystem available at GitHub for generating both code for a number of different languages and Swagger definitions themselves via (for example) java annotations."

Swagger Creator Wants to Build Better SOAP for Web APIs @ InfoQ
Tony Tam, the creator of Swagger and CEO of Reverb, gave a well attended talk on
Swagger APIs for humans (and robots),

video: funconf 2013, Tony Tam: Rapid REST API development with Swagger + Scala - YouTube

Cross Platforms, Cross Languages: Silver Swift, C#, Oxygene

Cross Platform Development with Marc Hoffman @ .NET Rocks!
This podcast interview explains the compiler platform RemObjects built and customized for various popular languages: C# and Swift. Not only it naively supports  iOS, Mac, Windows, Android, but it also supports multiple language platforms: super-set of C#/.NET and super-set of Swift.
One can program in C#, or Swift, or Pascal-like Oxygene and and call natively Java libraries on Android and objective-C libraries on iOS or Windows libraries (trough .NET).
It even integrates with Visual Studio.

RemObjects Silver | Elements

RemObjects Elements: Oxygene and C# | Elements

So it is similar in nature to Xamarin. Here is more specific comparison:
FAQ | RemObjects C# | Elements
"Q: What is the difference between RemObjects C# and Xamarin?

A: Xamarin is a commercial toolchain that brings the .NET Framework to Android and iOS. RemObjects C# looks at this idea of reusing C# on a different level: It brings the C# Language to the Cocoa and Java/Dalvic platforms, instead.

What does that mean, exactly?

Xamarin always compiles your C# code to .NET (or Mono – same difference) IL code to run in the Mono runtime. It uses the .NET class libraries.

At first glance that might seem (and sometimes truly is) a benefit: it lets you work with the .NET classes you are already familiar with. But this approach also has a lot of downsides: Xamarin apps always require the large(ish) Mono runtime to be bundled and run with your applications. This makes your applications bigger and, oftentimes, slower. What's more, because you are building against the .NET class libraries, the real platform - be it Java/Android or Cocoa - is always kept at arms length, and your access to platform features always goes through an intermediate layer.

The RemObjects C# compiler builds directly against the native platforms - such as the Java and Android class libraries provided by Google, or the Cocoa frameworks provided by Apple. This brings you "closer to the metal" and lets you create apps using the same APIs that all other Android or iOS developers use. "

Silver Swift compilers are free (optional donation),
and C# and Oxygene are $500 each per developer, 1/2 price of Xamarin.

Swift - Overview - Apple Developer

Azure App Service: Web, Mobile, Logic, API

Azure "Web Sites" are now called "Web Apps,"
and now also include support for Mobile apps, Web API, and "Logic" integration

Azure March Announcment
Scott Guthrie announces an exciting new Microsoft Azure service for application developers.

ScottGu's Blog - Announcing the new Azure App Service
"Azure App Service includes the Web App + Mobile App capabilities that we previously delivered separately (as Azure Websites + Azure Mobile Services). It also includes powerful new Logic/Workflow App and API App capabilities that we are introducing today for the very first time - along with built-in connectors that make it super easy to build logic workflows that integrate with dozens of popular SaaS and on-premises applications (Office 365, SalesForce, Dynamics, OneDrive, Box, DropBox, Twilio, Twitter, Facebook, Marketo, and more)."