SlideShare a Scribd company logo
1 of 71
vs




Matt Casto
http://mattcasto.info
vs




Did You Want
 an Answer?
vs
vs




It Depends
vs




Opinions
vs




Religion
HTML5 is many things ...
HTML5 is many things ...

Offline / Storage   Multimedia

Communication      CSS 3

Hardware Access    3D Effects

Semantics          Performance
HTML5 is many things ...
This is not
 an overview of
 HTML5 Features.

http://www.w3.org/html5
http://www.html5rocks.com/
http://slides.html5rocks.com
http://diveintohtml5.org
Silverlight
vs




Platforms
Platforms
IE 9 (Vista, Win7)
Firefox 3.5+ (WinXP, OSX, Android, Linux)
Chrome (WinXP, OSX, Linux)
Safari (OSX, iOS)
Webkit (Android, etc)
Platforms
IE 9 (Vista, Win7)
Firefox 3.5+ (WinXP, OSX, Android, Linux)
Chrome (WinXP, OSX, Linux)
Safari (OSX, iOS)
Webkit (Android, etc)


Just about everywhere
Platforms
IE 9 (Vista, Win7)
Firefox 3.5+ (WinXP, OSX, Android, Linux)
Chrome (WinXP, OSX, Linux)
Safari (OSX, iOS)
Webkit (Android, etc)


Just about everywhere
 ... to varying degrees.
Platforms
          IE 6+ ( WinXP+)
 Firefox 2+ (WinXP, OSX)
       Chrome (WinXP+)
              Safari (OSX)
        Windows Phone 7
Platforms
            IE 6+ ( WinXP+)
   Firefox 2+ (WinXP, OSX)
         Chrome (WinXP+)
                Safari (OSX)
          Windows Phone 7

Don’t forget about Moonlight
Platforms
             IE 6+ ( WinXP+)
    Firefox 2+ (WinXP, OSX)
          Chrome (WinXP+)
                 Safari (OSX)
           Windows Phone 7

Don’t forget about Moonlight
  ... even though Novell has.
vs




Storage
Storage
Local Storage
// use localStorage for persistent storage
// use sessionStorage for per tab storage
window.localStorage.setItem('value', area.value);
window.sessionStorage.setItem('timestamp', (new Date()).getTime());
var val = window.localStorage.getItem('value');
window.localStorage.removeItem('value');
window.localStorage.clear();
Storage
Local Storage




Source: http://caniuse.com
Storage
ApplicationSettings / Site Settings
// ApplicationSettings are plugin instance specific
// SiteSettings are site (URL) specific
private IsolatedStorageSettings userSettings =
    IsolatedStorageSettings.ApplicationSettings;
private IsolatedStorageSettings siteSettings =
    IsolatedStorageSettings.SiteSettings;

userSettings.Add("value", "hello world");
userSettings.Remove("value");
userSettings.Clear();
Storage
Isolated Storage
// GetUserStoreForApplication() - plugin specific
// GetUserStoreForSite() - site (URL) specific
var isf = IsolatedStorageFile.GetUserStoreForApplication();

using (var isfs = new IsolatedStorageFileStream(fileName,
FileMode.Create, isf))
  using (StreamWriter sw = new StreamWriter(isfs))
    sw.Write(data);

using (var isfs = new IsolatedStorageFileStream(fileName,
FileMode.Open, isf))
  using (StreamReader sr = new StreamReader(isfs))
    var allData = sr.ReadToEnd();
vs




Databases
Databases
Web SQL Database
var db = openDatabase('exampleDB', '1.0', 'example database', 5 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "bar")');
  tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
    var len = results.rows.length, i;
    for (i = 0; i < len; i++) {
      alert(results.rows.item(i).text);
    }
  });
});
Databases
Web SQL Database




Source: http://caniuse.com
Databases
IndexedDB
var trans = db.transaction(["foo"], IDBTransaction.READ_WRITE, 0);
var store = trans.objectStore("foo");
var request = store.put( {"bar": foobar} );

request.onsuccess = function(e) { alert("Success!" + "rnrn" + e.value); };
request.onerror = function(e) { alert("Error! " + "rnrn" + e.value); };
Databases
IndexedDB




Source: http://caniuse.com
Databases
3rd Party Client-Side Databases for Silverlight

 •   Sterling - http://sterling.codeplex.com/
 •   Perst - http://www.mcobject.com/silverlight-demo
 •   siaqodb - http://siaqodb.com/
 •   effiproz - http://www.effiproz.com/
 •   Ninja Database - http://www.kellermansoftware.com/p-42-ninja-
     database-lite.aspx
vs




Offline
Offline
AppCache - Cache Manifest
CACHE MANIFEST
# version 0.0.8
index.html
site.css
jquery-1.4.1.js
emoticon_smile.png
emoticon_unhappy.png

NETWORK:
noncached.html

FALLBACK:
/ offline.html
Offline
AppCache - Referencing Caching
<!DOCTYPE HTML>
<html manifest="cache.manifest">
    <head><title>Hello AppCache</title></head>
    <body>
        <h1>Hello AppCache!</h1>
    </body>
</html>
Offline
OnLine / Offline API
document.body.addEventListener("online", function() { checkOnLineState(); }, false);
document.body.addEventListener("offline", function() { checkOnLineState(); }, false);
checkOnLineState();

function checkOnLineState() {
    if (typeof (navigator.onLine) == 'undefined') {
        alert("navigator.onLine isn't defined.");
        return;
    }
    if (navigator.onLine) {
        alert("You are online.");
    } else {
        alert("You are online.");
    }
}
Offline
AppCache & onLine API




Source: http://caniuse.com
Offline
Out-of-Browser (OOB)
•   OOB applications run in a separate window and work
    regardless of network connectivity.
•   Silverlight API gives full control of installation and updates.
•   Default Isolated Storage capacity increases from 5 MB to
    25 MB
•   Web Browser control for OOB applications
•   With Elevated Trust you can call COM APIs
•   Silverlight 5 introduces p/invoke, multiple windows
vs




Threading
Threading
Web Workers
var worker = new Worker("worker.js");
worker.onmessage = function(e){ alert(e.data) };
worker.postMessage("Hello Worker");



worker.js
onmessage = function(e) {
    if (e.data === "Hello Worker") {
        postMessage("Hello World");
    }
};
Threading
Web Workers




Source: http://caniuse.com
Threading
Silverlight BackgroundWorker
var bg = new BackgroundWorker
{
    WorkerReportsProgress = true,
    WorkerSupportsCancellation = true
};
bg.DoWork += (o, e) =>
{
    for (var i = 1; i <= 100; i++)
    {
        System.Threading.Thread.Sleep(500);
        ((BackgroundWorker) o).ReportProgress(i);
    }
};
bg.ProgressChanged += (o, e) => MessageBox.Show("Working %" + e.ProgressPercentage);
bg.RunWorkerAsync();
vs




Communication
Communication
WebSocket API
var ws = new WebSocket("ws://websocket.example.com");
ws.onopen = function(e) { alert("WebSocket connection open"); };
ws.onmessage = function(e) { alert("WebSocket message received: "
    + e.data); };
ws.onclose = function(e) { alert("WebSocket connection closed"); };
ws.postMessage("Hello WebSocket");
ws.disconnect();
Communication
Silverlight & WCF
 •   Silverlight WCF client supports PollingDuplexHttpBinding
     for a simulated duplex communication over HTTP
 •   Silverlight supports System.Net.Sockets for low level
     sockets communication
 •   Silverlight supports UDP multicast clients over Sockets
 •   The only thing Silverlight doesn’t support that WebSockets
     API does is secure socket communication
vs




Notification
Notification
Notifications API
if (window.webkitNotifications.checkPermission() == 0) {
  // you can pass any url as a parameter
  window.webkitNotifications.createNotification(tweet.picture,
    tweet.title, tweet.text).show();
} else {
  window.webkitNotifications.requestPermission();
}
Notification
Notifications API




Source: http://caniuse.com
Notification
Silverlight NotificationWindow
if (App.Current.IsRunningOutOfBrowser)
{
    var nw = new NotificationWindow();
    nw.Content = "Look at me!";
    nw.Show(5000); // milliseconds

}
vs




Audio
Audio
Audio Tag
Audio
Audio Tag




Source: http://caniuse.com
Audio
Audio Tag
  Browser      Ogg   mp3   wav
Firefox 3.5+   ✓           ✓
  Safari 5+          ✓     ✓
Chrome 6+      ✓     ✓
Opera 10.5+    ✓           ✓
     IE 9            ✓     ✓
Audio
MediaElement
<MediaElement x:Name="media" Source="example.mp3"
    Width="300" Height="300" />
Audio
MediaElement
 Container                  Codecs
   MP3                        MP3

   ASF             WMA Standard & Professional

             AAC-LC, HE-AAC v1 (AAC+), HE-AAC v2
   MP4
             (eAAC+)
vs




Video
Video
Video Tag
Video
Video Tag




Source: http://caniuse.com
Video
 Browser        Ogg   H.264   WebM
 Firefox 3.5+   ✓
  Firefox 4+    ✓              ✓
   Safari 3+           ✓
 Chrome 6+      ✓              ✓
Opera 10.5+     ✓              ✓
      IE 9             ✓       ✓
iPhone Safari          ✓
   Android             ✓       ✓
Video
MediaElement
<MediaElement x:Name="media" Source="example.wmv"
    Width="300" Height="300" />
Video
MediaElement
 Container                     Codecs
     ASF                    WMV & VC-1
     MP4                        H.264

Also Supports...
 •   Progressive Download & Windows Media Streaming
 •   Server Side Play Lists
 •   Server Logs
 •   Timeline Markers
vs




Canvas
Canvas
<canvas id="canvas" width="838" height="220"></canvas>
<script>
  var canvasContext = document.getElementById("canvas").getContext("2d");
  canvasContext.fillRect(250, 25, 150, 100);

  canvasContext.beginPath();
  canvasContext.arc(450, 110, 100, Math.PI * 1/2, Math.PI * 3/2);
  canvasContext.lineWidth = 15;
  canvasContext.lineCap = 'round';
  canvasContext.strokeStyle = 'rgba(255, 127, 0, 0.5)';
  canvasContext.stroke();
</script>
Canvas
Canvas




Source: http://caniuse.com
Canvas
<Canvas x:Name="LayoutRoot" Background="White" >
  <Rectangle Canvas.Left="250" Canvas.Top="25"
             Height="100" Width="150"
             Stroke="Black" Fill="Black"/>
  <Path Canvas.Left="406" Canvas.Top="10" Height="290" Width="137"
        Stroke="#7FFF7F00" Fill="#00FFFFFF" StrokeThickness="15"
        StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round">
    <Path.Data>
        <PathGeometry>
            <PathGeometry.Figures>
                 <PathFigure>
                     <PathFigure.Segments>
                         <ArcSegment Size="50,50" RotationAngle="45" IsLargeArc="True"
SweepDirection="Counterclockwise" Point="0,250"/>
                     </PathFigure.Segments>
                 </PathFigure >
            </PathGeometry.Figures>
        </PathGeometry>
    </Path.Data>
  </Path>
</Canvas>
vs




Potpourri
Potpourri
•   Canvas 3D - WebGL
•   SVG (inline, etc)
•   Drag & Drop, Drop In, Drag Out
•   File System API
•   Geolocation API
•   Semantic HTML Tags
•   New form types (email, date, range, search, tel, color,
    number)
Potpourri
•   CSS - Selectors, Rounded Corners, Shadows, Transitions,
    Tranforms, Animations, etc.
•   Webfonts
•   Javascript selectors (getElementsByClassName,
    querySelector, querySelectorAll)
•   data-* attributes
•   element.classList
•   Browser History API
Potpourri
•   XAML
•   Languages - C#,Visual Basic.NET, Iron Ruby, Iron Python
•   3D - Silverlight 5 Beta
•   GPU Hardware Acceleration
•   Devices - Webcam, Microphones
•   Printing - Bitmap in SL 4, Postscript vector in SL 5
•   COM Interop (Out-of-browser full trust)
•   P/Invoke (Out-of-browser full trust in SL 5)
vs




It Depends
vs




Matt Casto
http://mattcasto.info

More Related Content

What's hot

High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
Nicholas Zakas
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
CARA_Lyon
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
 

What's hot (20)

Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoo
 
High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010High Performance JavaScript - WebDirections USA 2010
High Performance JavaScript - WebDirections USA 2010
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
Hack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingHack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security Training
 
How do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientHow do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and Client
 
Performance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptPerformance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScript
 
What is HTML 5?
What is HTML 5?What is HTML 5?
What is HTML 5?
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
 
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jourComment j'ai mis ma suite de tests au régime en 5 minutes par jour
Comment j'ai mis ma suite de tests au régime en 5 minutes par jour
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
 
Don't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web ApplicationsDon't make me wait! or Building High-Performance Web Applications
Don't make me wait! or Building High-Performance Web Applications
 
Ajax Security
Ajax SecurityAjax Security
Ajax Security
 

Viewers also liked

Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
Felipe Pocchini
 
Silverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use ItSilverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use It
Venketash (Pat) Ramadass
 

Viewers also liked (10)

Taking Web Applications Offline
Taking Web Applications OfflineTaking Web Applications Offline
Taking Web Applications Offline
 
Migrating to HTML5, Migrating Silverlight to HTML5, Migration Applications t...
Migrating to HTML5,  Migrating Silverlight to HTML5, Migration Applications t...Migrating to HTML5,  Migrating Silverlight to HTML5, Migration Applications t...
Migrating to HTML5, Migrating Silverlight to HTML5, Migration Applications t...
 
Silverlight
SilverlightSilverlight
Silverlight
 
Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
 
Silverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use ItSilverlight - What Is It And How Can We Use It
Silverlight - What Is It And How Can We Use It
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5
 
Alan Downie and Matt Milosavljevic - BugHerd, the Incubator Experience
Alan Downie and Matt Milosavljevic - BugHerd, the Incubator ExperienceAlan Downie and Matt Milosavljevic - BugHerd, the Incubator Experience
Alan Downie and Matt Milosavljevic - BugHerd, the Incubator Experience
 
HTML 5 Offline Web apps
HTML 5 Offline Web apps HTML 5 Offline Web apps
HTML 5 Offline Web apps
 
Microsoft Silverlight - An Introduction
Microsoft Silverlight - An IntroductionMicrosoft Silverlight - An Introduction
Microsoft Silverlight - An Introduction
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 

Similar to HTML5 vs Silverlight

HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
Patrick Lauke
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
Robert Nyman
 
webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5
smueller_sandsmedia
 
WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008
WSO2
 
Krzysztof Kotowicz - Hacking HTML5
Krzysztof Kotowicz - Hacking HTML5Krzysztof Kotowicz - Hacking HTML5
Krzysztof Kotowicz - Hacking HTML5
DefconRussia
 

Similar to HTML5 vs Silverlight (20)

Edge of the Web
Edge of the WebEdge of the Web
Edge of the Web
 
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
Building Web Sites that Work Everywhere
Building Web Sites that Work EverywhereBuilding Web Sites that Work Everywhere
Building Web Sites that Work Everywhere
 
Browser security
Browser securityBrowser security
Browser security
 
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
 
Building Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 FeaturesBuilding Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 Features
 
Talk about html5 security
Talk about html5 securityTalk about html5 security
Talk about html5 security
 
Play framework productivity formula
Play framework   productivity formula Play framework   productivity formula
Play framework productivity formula
 
Attacking HTML5
Attacking HTML5Attacking HTML5
Attacking HTML5
 
Html5 hacking
Html5 hackingHtml5 hacking
Html5 hacking
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
 
Brave new world of HTML5
Brave new world of HTML5Brave new world of HTML5
Brave new world of HTML5
 
webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5
 
WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008
 
Html 5
Html 5Html 5
Html 5
 
Krzysztof Kotowicz - Hacking HTML5
Krzysztof Kotowicz - Hacking HTML5Krzysztof Kotowicz - Hacking HTML5
Krzysztof Kotowicz - Hacking HTML5
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

HTML5 vs Silverlight

  • 2. vs Did You Want an Answer?
  • 3. vs
  • 7. HTML5 is many things ...
  • 8. HTML5 is many things ... Offline / Storage Multimedia Communication CSS 3 Hardware Access 3D Effects Semantics Performance
  • 9. HTML5 is many things ...
  • 10. This is not an overview of HTML5 Features. http://www.w3.org/html5 http://www.html5rocks.com/ http://slides.html5rocks.com http://diveintohtml5.org
  • 13. Platforms IE 9 (Vista, Win7) Firefox 3.5+ (WinXP, OSX, Android, Linux) Chrome (WinXP, OSX, Linux) Safari (OSX, iOS) Webkit (Android, etc)
  • 14. Platforms IE 9 (Vista, Win7) Firefox 3.5+ (WinXP, OSX, Android, Linux) Chrome (WinXP, OSX, Linux) Safari (OSX, iOS) Webkit (Android, etc) Just about everywhere
  • 15. Platforms IE 9 (Vista, Win7) Firefox 3.5+ (WinXP, OSX, Android, Linux) Chrome (WinXP, OSX, Linux) Safari (OSX, iOS) Webkit (Android, etc) Just about everywhere ... to varying degrees.
  • 16. Platforms IE 6+ ( WinXP+) Firefox 2+ (WinXP, OSX) Chrome (WinXP+) Safari (OSX) Windows Phone 7
  • 17. Platforms IE 6+ ( WinXP+) Firefox 2+ (WinXP, OSX) Chrome (WinXP+) Safari (OSX) Windows Phone 7 Don’t forget about Moonlight
  • 18. Platforms IE 6+ ( WinXP+) Firefox 2+ (WinXP, OSX) Chrome (WinXP+) Safari (OSX) Windows Phone 7 Don’t forget about Moonlight ... even though Novell has.
  • 19.
  • 20.
  • 21.
  • 23. Storage Local Storage // use localStorage for persistent storage // use sessionStorage for per tab storage window.localStorage.setItem('value', area.value); window.sessionStorage.setItem('timestamp', (new Date()).getTime()); var val = window.localStorage.getItem('value'); window.localStorage.removeItem('value'); window.localStorage.clear();
  • 25. Storage ApplicationSettings / Site Settings // ApplicationSettings are plugin instance specific // SiteSettings are site (URL) specific private IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings; private IsolatedStorageSettings siteSettings = IsolatedStorageSettings.SiteSettings; userSettings.Add("value", "hello world"); userSettings.Remove("value"); userSettings.Clear();
  • 26. Storage Isolated Storage // GetUserStoreForApplication() - plugin specific // GetUserStoreForSite() - site (URL) specific var isf = IsolatedStorageFile.GetUserStoreForApplication(); using (var isfs = new IsolatedStorageFileStream(fileName, FileMode.Create, isf)) using (StreamWriter sw = new StreamWriter(isfs)) sw.Write(data); using (var isfs = new IsolatedStorageFileStream(fileName, FileMode.Open, isf)) using (StreamReader sr = new StreamReader(isfs)) var allData = sr.ReadToEnd();
  • 28. Databases Web SQL Database var db = openDatabase('exampleDB', '1.0', 'example database', 5 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)'); tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "bar")'); tx.executeSql('SELECT * FROM foo', [], function (tx, results) { var len = results.rows.length, i; for (i = 0; i < len; i++) { alert(results.rows.item(i).text); } }); });
  • 30. Databases IndexedDB var trans = db.transaction(["foo"], IDBTransaction.READ_WRITE, 0); var store = trans.objectStore("foo"); var request = store.put( {"bar": foobar} ); request.onsuccess = function(e) { alert("Success!" + "rnrn" + e.value); }; request.onerror = function(e) { alert("Error! " + "rnrn" + e.value); };
  • 32. Databases 3rd Party Client-Side Databases for Silverlight • Sterling - http://sterling.codeplex.com/ • Perst - http://www.mcobject.com/silverlight-demo • siaqodb - http://siaqodb.com/ • effiproz - http://www.effiproz.com/ • Ninja Database - http://www.kellermansoftware.com/p-42-ninja- database-lite.aspx
  • 34. Offline AppCache - Cache Manifest CACHE MANIFEST # version 0.0.8 index.html site.css jquery-1.4.1.js emoticon_smile.png emoticon_unhappy.png NETWORK: noncached.html FALLBACK: / offline.html
  • 35. Offline AppCache - Referencing Caching <!DOCTYPE HTML> <html manifest="cache.manifest"> <head><title>Hello AppCache</title></head> <body> <h1>Hello AppCache!</h1> </body> </html>
  • 36. Offline OnLine / Offline API document.body.addEventListener("online", function() { checkOnLineState(); }, false); document.body.addEventListener("offline", function() { checkOnLineState(); }, false); checkOnLineState(); function checkOnLineState() { if (typeof (navigator.onLine) == 'undefined') { alert("navigator.onLine isn't defined."); return; } if (navigator.onLine) { alert("You are online."); } else { alert("You are online."); } }
  • 37. Offline AppCache & onLine API Source: http://caniuse.com
  • 38. Offline Out-of-Browser (OOB) • OOB applications run in a separate window and work regardless of network connectivity. • Silverlight API gives full control of installation and updates. • Default Isolated Storage capacity increases from 5 MB to 25 MB • Web Browser control for OOB applications • With Elevated Trust you can call COM APIs • Silverlight 5 introduces p/invoke, multiple windows
  • 40. Threading Web Workers var worker = new Worker("worker.js"); worker.onmessage = function(e){ alert(e.data) }; worker.postMessage("Hello Worker"); worker.js onmessage = function(e) { if (e.data === "Hello Worker") { postMessage("Hello World"); } };
  • 42. Threading Silverlight BackgroundWorker var bg = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; bg.DoWork += (o, e) => { for (var i = 1; i <= 100; i++) { System.Threading.Thread.Sleep(500); ((BackgroundWorker) o).ReportProgress(i); } }; bg.ProgressChanged += (o, e) => MessageBox.Show("Working %" + e.ProgressPercentage); bg.RunWorkerAsync();
  • 44. Communication WebSocket API var ws = new WebSocket("ws://websocket.example.com"); ws.onopen = function(e) { alert("WebSocket connection open"); }; ws.onmessage = function(e) { alert("WebSocket message received: " + e.data); }; ws.onclose = function(e) { alert("WebSocket connection closed"); }; ws.postMessage("Hello WebSocket"); ws.disconnect();
  • 45. Communication Silverlight & WCF • Silverlight WCF client supports PollingDuplexHttpBinding for a simulated duplex communication over HTTP • Silverlight supports System.Net.Sockets for low level sockets communication • Silverlight supports UDP multicast clients over Sockets • The only thing Silverlight doesn’t support that WebSockets API does is secure socket communication
  • 47. Notification Notifications API if (window.webkitNotifications.checkPermission() == 0) { // you can pass any url as a parameter window.webkitNotifications.createNotification(tweet.picture, tweet.title, tweet.text).show(); } else { window.webkitNotifications.requestPermission(); }
  • 49. Notification Silverlight NotificationWindow if (App.Current.IsRunningOutOfBrowser) { var nw = new NotificationWindow(); nw.Content = "Look at me!"; nw.Show(5000); // milliseconds }
  • 53. Audio Audio Tag Browser Ogg mp3 wav Firefox 3.5+ ✓ ✓ Safari 5+ ✓ ✓ Chrome 6+ ✓ ✓ Opera 10.5+ ✓ ✓ IE 9 ✓ ✓
  • 55. Audio MediaElement Container Codecs MP3 MP3 ASF WMA Standard & Professional AAC-LC, HE-AAC v1 (AAC+), HE-AAC v2 MP4 (eAAC+)
  • 59. Video Browser Ogg H.264 WebM Firefox 3.5+ ✓ Firefox 4+ ✓ ✓ Safari 3+ ✓ Chrome 6+ ✓ ✓ Opera 10.5+ ✓ ✓ IE 9 ✓ ✓ iPhone Safari ✓ Android ✓ ✓
  • 61. Video MediaElement Container Codecs ASF WMV & VC-1 MP4 H.264 Also Supports... • Progressive Download & Windows Media Streaming • Server Side Play Lists • Server Logs • Timeline Markers
  • 63. Canvas <canvas id="canvas" width="838" height="220"></canvas> <script> var canvasContext = document.getElementById("canvas").getContext("2d"); canvasContext.fillRect(250, 25, 150, 100); canvasContext.beginPath(); canvasContext.arc(450, 110, 100, Math.PI * 1/2, Math.PI * 3/2); canvasContext.lineWidth = 15; canvasContext.lineCap = 'round'; canvasContext.strokeStyle = 'rgba(255, 127, 0, 0.5)'; canvasContext.stroke(); </script>
  • 65. Canvas <Canvas x:Name="LayoutRoot" Background="White" > <Rectangle Canvas.Left="250" Canvas.Top="25" Height="100" Width="150" Stroke="Black" Fill="Black"/> <Path Canvas.Left="406" Canvas.Top="10" Height="290" Width="137" Stroke="#7FFF7F00" Fill="#00FFFFFF" StrokeThickness="15" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeEndLineCap="Round"> <Path.Data> <PathGeometry> <PathGeometry.Figures> <PathFigure> <PathFigure.Segments> <ArcSegment Size="50,50" RotationAngle="45" IsLargeArc="True" SweepDirection="Counterclockwise" Point="0,250"/> </PathFigure.Segments> </PathFigure > </PathGeometry.Figures> </PathGeometry> </Path.Data> </Path> </Canvas>
  • 67. Potpourri • Canvas 3D - WebGL • SVG (inline, etc) • Drag & Drop, Drop In, Drag Out • File System API • Geolocation API • Semantic HTML Tags • New form types (email, date, range, search, tel, color, number)
  • 68. Potpourri • CSS - Selectors, Rounded Corners, Shadows, Transitions, Tranforms, Animations, etc. • Webfonts • Javascript selectors (getElementsByClassName, querySelector, querySelectorAll) • data-* attributes • element.classList • Browser History API
  • 69. Potpourri • XAML • Languages - C#,Visual Basic.NET, Iron Ruby, Iron Python • 3D - Silverlight 5 Beta • GPU Hardware Acceleration • Devices - Webcam, Microphones • Printing - Bitmap in SL 4, Postscript vector in SL 5 • COM Interop (Out-of-browser full trust) • P/Invoke (Out-of-browser full trust in SL 5)

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  7. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  8. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  9. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  10. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  11. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  12. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  13. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  14. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  15. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  16. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  17. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  18. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  19. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  20. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  21. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  22. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  23. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  24. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  25. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  26. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  27. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  28. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  29. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  30. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  31. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  32. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  33. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  34. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  35. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  36. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  37. HTML 5 is really updated HTML, CSS, and Javascript specifications. What is considered by most people to be HTML 5 is actually several specifications that are all grouped under that name.\n
  38. Although most features of HTML 5 will be mentioned by this presentation, I will not go in depth into any of these features. For more information, check out these links.\n
  39. This presentation is given at .NET focused conferences so I&amp;#x2019;m discussing Silverlight. This presentation could just as easily be called HTML5 vs Plugins or HTML5 vs Native Apps.\n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. Browser Percentages according to StatCounter\n
  46. Mobile Browser Percentages according to StatCounter\n
  47. Browser Plugins Installed according to RIA Stats\nNote that 72.68 % of browsers have Silverlight 2+ installed, while 73.37% of browsers have Canvas &amp; Video support ... virtually the same!\n
  48. \n
  49. - Very simple key-value pair storage\n- jquery-jstore - jQuery based library implemented over local storage\n- 5MB limit with no API to increase quote - at the users&amp;#x2019; mercy!\n
  50. \n
  51. A very simple key-value pair storage layer over Isolated Storage.\n\n
  52. - You can write whatever you want to Isolated Storage, and its up to you to make sure you have space and whether files exist or not\n- 5MB space by default\n
  53. \n
  54. - this is an implementation of SQLite in javascript\n- W3C deprecated specification on 11/18/2010 which means you shouldn&amp;#x2019;t use it :-(\n
  55. Firefox has stated it will never add support for Web SQL. Coupled with IE&amp;#x2019;s lack of interest, the W3C deprecated the specification.\n
  56. - Indexed Database API, aka IndexedDB, formerly known as WebSimpleDB\n- this is an object store, not a relational database, storing Javascript Objects\n- Asynchronous and Transactional only\n- You can create indexes against your stored objects\n
  57. - Microsoft is reportedly experimenting with the technology.\n- The best example I could find online did not work and was out of date\n- IMO, this technology shows great promise, but is not ready for prime time.\n
  58. \n
  59. \n
  60. - CACHE MANIFEST section includes all resources loaded into cache\n- NETWORK section includes all resources not cached\n- FALLBACK section includes page to fall back to when offline and referencing a page that is not included in the cache\n
  61. - The cache manifest document is referenced in whatever page you want to automatically load all resources into the local application cache.\n- This is brittle - a problem with loading any resource will cause the entire process to fail, and the error notifications are very limited.\n
  62. - Note that onLine won&amp;#x2019;t tell you if your site is down or not responding - only whether the browser has network connectivity.\n- IE and Firefox have &amp;#x201C;Work Offline&amp;#x201D; menu options, but WebKit browsers don&amp;#x2019;t.\n
  63. - Each browser has a different default size for the cache&amp;#x2019;s quota, with no API for checking the quota size or increasing it defined in the specification!\n- Again, at the users&amp;#x2019; mercy for cache size.\n- Why no IE support?\n
  64. The concept of Silverlight OOB couldn&amp;#x2019;t be distilled into a simple code sample, so I&amp;#x2019;m listing main capabilities here.\n
  65. \n
  66. Web Workers have no access to the DOM or the calling page; the only communication allowed is through messages.\n
  67. Web Workers have no access to the DOM or the calling page; the only communication allowed is through messages.\n
  68. - Silverlight has the concept of the UI Thread\n- Asynchronous networking calls return on a different thread (not UI)\n- DispatcherTimer class runs your code in a different thread\n- BackgroundWorker class is preferred, although you can go old school\n
  69. \n
  70. WebSocket API provides bi-directional, full-duplex communication over a single TCP socket.\n
  71. The concept of Silverlight and WCF is too much for a simple code example, so I&amp;#x2019;ll just list the pertinent comparable features.\n
  72. \n
  73. \n
  74. Supported in Chrome through the webkitNotifications property and in Firefox nightlies through the mozNotifications property. May slip to a later version in Firefox.\n
  75. - only available out-of-browser\n- cannot receive keyboard focus or events\n- no stacking or queueing support - you have to handle that yourself\n
  76. \n
  77. \n
  78. \n
  79. Note that no single encoding works for all browsers -- you WILL end up referencing multiple encodings.\n
  80. \n
  81. Windows Phone 7 supports more containers and codecs.\n
  82. \n
  83. \n
  84. \n
  85. Note that no single encoding works for all browsers.\n
  86. Bonus points if you notice that this looks just like the Audio for Silverlight.\n
  87. I&amp;#x2019;m no video expert but I&amp;#x2019;m listing these features just to show that Silverlight has more video support than whats currently available in the HTML specification.\n
  88. \n
  89. \n
  90. Note that Opera Mini&amp;#x2019;s partial support - it will display the canvas but is unable to play animations or complex operations.\n
  91. This renders a very similar image as the HTML Canvas example.\nOf course, this could be created in code as the HTML Canvas objects were created in Javascript, but why the heck would you want to do that??\n
  92. \n
  93. These are all features considered part of HTML5 that I haven&amp;#x2019;t covered thus far. I didn&amp;#x2019;t consider them major talking points in the comparison with Silverlight, especially in the context of building business applications.\n
  94. ... continued\n
  95. These are all features of Silverlight that I wanted to call out because there isn&amp;#x2019;t any comparable feature of HTML5.\nXAML is a category unto itself - it covers so many HTML5 enhancements out of the box.\n
  96. After considering all the features of each technology, it really all depends on what you need to solve your specific problem(s).\n
  97. Thank You!\n