The Windows Runtime is the runtime that drives Windows 8 and the new Windows Store apps. The runtime enables developers to build rich client apps that run natively on Window 8 devices. In this session, Jeremy Likness explores the various built-in components and APIs that enable Windows Store apps to connect to SOAP, REST, and OData endpoints and syndicate RSS and Atom feeds. Learn how these tools make it easy to build Windows Store apps that are alive and connected to the internet.
2. Consulting/Training
consulting
Wintellect helps you build better software,
faster, tackling the tough projects and solving
the software and technology questions that
help you transform your business.
Architecture, Analysis and Design
Full lifecycle software development
Debugging and Performance tuning
Database design and development
training
Wintellect's courses are written and taught by
some of the biggest and most respected names
in the Microsoft programming industry.
Learn from the best. Access the same
training Microsoft’s developers enjoy
Real world knowledge and solutions on
both current and cutting edge
technologies
Flexibility in training options – onsite,
virtual, on demand
Founded by top experts on Microsoft – Jeffrey Richter, Jeff Prosise, and John Robbins – we pull
out all the stops to help our customers achieve their goals through advanced software-based
consulting and training solutions.
who we are
About Wintellect
3. Consulting/Training
Building Windows 8 Apps
http://bit.ly/win8design
“Getting Started Guide”
For the more in depth
“experts guide” wait for
WinRT by Example in
early 2014
4. Consulting/Training
WinRT and .NET (and a note about Windows 8.1)
WebView
Simple: HTTP (REST)
OData (WCF Data Services)
Syndication
SOAP
WAMS
Agenda
5. Consulting/Training
Most .NET network classes are
available to WinRT
Some are being moved into WinRT (i.e.
the HttpClient)
Others are proxies and generate pure
.NET code as a function of the IDE
We’ll focus on C# but the WinRT
components are valid for C++ and
JavaScript too
WinRT and .NET
6. Consulting/Training
Internet Explorer 10 (11 in 8.1) control
In 8.1 it uses a Direct Composition surface
so it can be translated/transformed and
overlaid, in 8.0 – er, ouch, wait for 8.1
Capable of rendering SVG and in 8.1
WebGL
Interoperability with the Windows Store
app (can call to scripts on the page and
vice versa)
Navigation methods (history, journal)
built-in
WebView Control
9. Consulting/Training
.NET for 8.0, WinRT for 8.1
Pure control over HTTP
Viable for REST i.e. serialize/deserialize
directly from JSON and/or XML
Control headers and manage response
as text, stream, etc.
GET, POST, PUT, and DELETE
Using HttpRequestMessage for custom
verbs, etc.
Base class for more specialized clients
HttpClient
10. Consulting/Training
private static readonly MediaTypeWithQualityHeaderValue Json = new
MediaTypeWithQualityHeaderValue("application/json");
string jsonResponse;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(Json);
jsonResponse = await client.GetStringAsync(productsUri);
}
var json = JsonObject.Parse(jsonResponse);
HttpClient (and a little JSON help)
16. Consulting/Training
WinRT (mirrors the .NET equivalent
very closely)
Parses Atom and RSS
Suitable for both consuming and
publishing
Also capable of converting
between formats (i.e. read an Atom
and serve an RSS)
Syndication (Atom/RSS)
17. Consulting/Training
private static readonly Uri CSharperImageUri = new Uri(
"http://feeds.feedburner.com/CSharperImage/", UriKind.Absolute);
var client = new SyndicationClient();
var feed = await client.RetrieveFeedAsync(CSharperImageUri);
var group = new DataFeed(feed.Id, feed.Title.Text, AuthorSignature,
feed.ImageUri.ToString(), feed.Subtitle.Text);
from item in feed.Items
let content =
Windows.Data.Html.HtmlUtilities.ConvertToText(item.Content.Text)
let summary = string.Format("{0} ...", content.Length > 255 ?
content.Substring(0, 255) : content)
Feed Syndication
19. Consulting/Training
IDE provides similar interface to OData
Uses WSDL to understand the shape of the service
Considered a more complicated protocol but is
very widely used and has built-in security,
encryption, and other features that are beneficial
to the enterprise
Generates a proxy (client) that is used to handle
the communications (RPC-based)
Can also use channel factories to create clients
SOAP
21. Consulting/Training
var proxy = new WeatherSoapClient();
var result = await proxy.GetWeatherInformationAsync();
foreach (var item in result.GetWeatherInformationResult)
{
this.weather.Add(item);
}
SOAP Proxy (Generated Client)
22. Consulting/Training
using (
var factory = new ChannelFactory<WeatherSoapChannel>(
new BasicHttpBinding(), new
EndpointAddress("http://wsf.cdyne.com/WeatherWS/Weather.asmx")))
{
var channel = factory.CreateChannel();
var forecast = await channel.GetCityForecastByZIPAsync(zipCode);
var result = forecast.AsWeatherForecast();
foreach (var day in result.Forecast)
{
day.ForecastUri = await this.GetImageUriForType(day.TypeId);
}
return result;
}
SOAP Proxy (Channel Factory)
24. Consulting/Training
Affectionately referred to as WAMS
Sample project generated by site; in Windows
8.1 it is literally right-click and “add Windows
Push Notification Service”
Create simple CRUD and other types of services
using hosted SQL
Create push notifications for live updates and
notifications within your app
Windows Azure Mobile Services
Author Opportunity Passive incomeClear marketing commitments to help grow your personal brand and your coursesInternational presence & exposureCross sell opportunities – instructor led classes, consulting opportunities, and conference speaking opportunitiesOpportunity to be the subject matter expert and to carve out a niche for yourself in this new businessAssociation with Wintellect