<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rob Tiffany &#187; Tablet</title>
	<atom:link href="http://robtiffany.com/tag/tablet/feed" rel="self" type="application/rss+xml" />
	<link>http://robtiffany.com</link>
	<description>Author, Software Architect, Speaker, Technology Executive, Former Navy Submariner</description>
	<lastBuildDate>Sat, 04 Feb 2012 22:55:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Windows 7 Slates: Touch-First UIs</title>
		<link>http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis</link>
		<comments>http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis#comments</comments>
		<pubDate>Wed, 17 Aug 2011 01:51:48 +0000</pubDate>
		<dc:creator>Rob Tiffany</dc:creator>
				<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Consumerization]]></category>
		<category><![CDATA[Slate]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://robtiffany.com/?p=870</guid>
		<description><![CDATA[When it comes to building apps with &#8220;Touch-First&#8221; user interfaces for Windows 7 Slates, there are a few principles you need to follow.  Instead of talking about gestures, swiping, pinching or receiving multi-touch Windows messages, I&#8217;m going to stick to the basics in this article.  I’m not an artist or UX guru, but I have [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to building apps with &#8220;Touch-First&#8221; user interfaces for Windows 7 Slates, there are a few principles you need to follow.  Instead of talking about gestures, swiping, pinching or receiving multi-touch Windows messages, I&#8217;m going to stick to the basics in this article.  I’m not an artist or UX guru, but I have been designing user interfaces for mobile and embedded devices with small screens since the late 90’s.</p>
<p><strong>Runtime</strong></p>
<p>If you remember the last time I talked about Windows 7 Slate development, I mentioned that plain-old .NET WinForms are actually a great choice.  Since every copy of Windows 7 includes .NET 3.51 as part of the image, you might consider targeting that runtime or C++ for friction-free deployment and best performance if it gives you the functionality you&#8217;re looking for.  Performance-tuned, Xaml-based apps are also an option as long as you&#8217;re not targeting Tablets with low-end CPUs and poor-performing, integrated graphics.  The same advice goes for HTML5 as long as you&#8217;re running IE9.</p>
<p><strong>Immersive</strong></p>
<p>Creating an immersive app that takes over the entire screen is step one.  This means that when you design your WinForms in Visual Studio, set them to be Maximized and get rid of the Control Box, Minimize/Maximize buttons, and the Border.</p>
<p>In the Spash Screen below, you can see it completely takes up the entire screen of the Tablet:</p>
<p><a href="http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis/attachment/splashsm" rel="attachment wp-att-876"><img class="alignleft size-full wp-image-876" title="SplashSM" src="http://robtiffany.com/wp-content/uploads/2011/08/SplashSM.jpg" alt="" width="448" height="336" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>UI Element Size</strong></p>
<p>Since some people have been known to have fingers as large as 80 pixels wide, you can no longer get by with the default sizes of UI elements when you drag them from the toolbox.  You need to increase the size of UI elements to be 40+ pixels wide/high as appropriate to users a large hit target for their fingers.</p>
<p>In the Login Screen below, you can see a giant power button icon in the upper-right side as well as a large User selection combo box, Password text box and Login button:</p>
<p><a href="http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis/attachment/loginsm" rel="attachment wp-att-873"><img class="alignright size-full wp-image-873" title="LoginSM" src="http://robtiffany.com/wp-content/uploads/2011/08/LoginSM.jpg" alt="" width="448" height="336" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>UI Element Spacing</strong></p>
<p>Besides making UI elements larger, you also need to make them farther apart.  I know this flies in the face of you desire to cram as many things on a screen as possible.  Each screen should provide just a single function or idea so keep it simple, uncluttered, and elegant.  The term &#8220;fat finger&#8221; exists for a reason.  In order to prevent accidentally tapping on the wrong button, space all UI elements at least 20+ pixels apart.</p>
<p>In the Reservations Screen below, you can see a date picker, combo boxes, a button, and check boxes that are easy to touch and give each other breathing room:</p>
<p><a href="http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis/attachment/reservationsm" rel="attachment wp-att-877"><img class="alignleft size-full wp-image-877" title="ReservationSM" src="http://robtiffany.com/wp-content/uploads/2011/08/ReservationSM.jpg" alt="" width="448" height="336" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Go Big!</strong></p>
<p>Get accustomed to making everything bigger because the presentation paradigm for a Tablet is fundamentally different.  You don&#8217;t have the precision of a mouse to click on small hit targets.  You should also pump up the size of things you don&#8217;t touch, like the font of text on a screen so it&#8217;s clearly visible to the user from any angle.  Large, beautiful, typography as well as iconography is a good thing.</p>
<p>In the Schedule Screen below, you can see a large grid with big cells and text with large font.  The screen title is big and so is the arrow icon used to close and return to the previous screen.</p>
<p><a href="http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis/attachment/schedulessm" rel="attachment wp-att-875"><img class="alignright size-full wp-image-875" title="SchedulesSM" src="http://robtiffany.com/wp-content/uploads/2011/08/SchedulesSM.jpg" alt="" width="448" height="336" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>One More Thing</strong></p>
<p>In the touch-first world of mobile devices, you can never assume the use of a keyboard.  That&#8217;s why it&#8217;s important not to throw lots of empty text boxes at users to fill in.  It&#8217;s cumbersome and slow and a user may choose to not use your app.  Give users finger-friendly choices via UI elements like radio buttons, combo boxes and checkboxes where possible.</p>
<p>Now go start building those Touch-First UIs for today&#8217;s Windows 7 Slates!</p>
<p>Rob</p>
]]></content:encoded>
			<wfw:commentRss>http://robtiffany.com/windows-7/windows-7-slates-touchfirst-uis/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Tablets outselling the RIM Playbook</title>
		<link>http://robtiffany.com/windows-7/windows-7-tablets-outselling-the-rim-playbook</link>
		<comments>http://robtiffany.com/windows-7/windows-7-tablets-outselling-the-rim-playbook#comments</comments>
		<pubDate>Thu, 21 Jul 2011 15:35:52 +0000</pubDate>
		<dc:creator>Rob Tiffany</dc:creator>
				<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Tablet]]></category>

		<guid isPermaLink="false">http://robtiffany.com/?p=831</guid>
		<description><![CDATA[Tablets that run Windows 7 now represent 5% of the market.]]></description>
			<content:encoded><![CDATA[<p>According to Strategy Analytics, Microsoft outsold RIM in the tablet space during the second quarter of 2011.  Tablets that run Windows 7 now represent 5% of the market.  The Apple iPad and Google Android tablets continue to lead the pack.</p>
<p><a href="http://robtiffany.com/windows-7/windows-7-tablets-outselling-the-rim-playbook/attachment/onkyowin7tabletpcjapan" rel="attachment wp-att-832"><img class="aligncenter size-medium wp-image-832" title="Windows 7 Tablet" src="http://robtiffany.com/wp-content/uploads/2011/07/onkyowin7tabletpcjapan-300x244.jpg" alt="Windows 7 Tablet" width="300" height="244" /></a></p>
<p>Even without the tablet-focused &#8220;Windows 8&#8243; on the market, OEMs like Asus, HP, Viewsonic, Dell, Archos, Acer, and others continue to create multi-touch, capacitive screen tablets running Windows 7.  With unparalled security, device management, Microsoft Office and millions of other apps, Windows 7 is actually a great choice for tablets today.</p>
<p>-Rob</p>
]]></content:encoded>
			<wfw:commentRss>http://robtiffany.com/windows-7/windows-7-tablets-outselling-the-rim-playbook/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Slates: Rapid App Deployment</title>
		<link>http://robtiffany.com/windows-7/windows-7-slates-development-tip-1</link>
		<comments>http://robtiffany.com/windows-7/windows-7-slates-development-tip-1#comments</comments>
		<pubDate>Fri, 15 Jul 2011 05:33:04 +0000</pubDate>
		<dc:creator>Rob Tiffany</dc:creator>
				<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Consumerization]]></category>
		<category><![CDATA[Slate]]></category>
		<category><![CDATA[Tablet]]></category>

		<guid isPermaLink="false">http://robtiffany.com/?p=796</guid>
		<description><![CDATA[If you're delivering an app that requires all the power of .NET though, you might consider using version 3.51 since it's part of the Windows 7 OS image.]]></description>
			<content:encoded><![CDATA[<p>The tablet craze is really in full swing and new Windows 7 devices are being released almost every week.  Consumers and business users alike are snapping up these tablets and they want to be productive with apps right away.  Yes, they&#8217;re treating these wireless devices just like they&#8217;re Smartphones or iPads.  As well they should!  This means that aside from Microsoft Office, they&#8217;re expecting to quickly download apps from the Internet or various marketplaces without a lot of fuss.  This means no DVDs.</p>
<p>One way to ensure fast, seamless downloads of your apps is to not take dependencies on large runtimes, installation media, or plugins that may not already be installed on Windows 7 by default.  Silverlight isn&#8217;t a big deal because the plugin is very small and should download and install quickly along with your app.  If you&#8217;re delivering an app that requires all the power of .NET though, you might consider using version 3.51 since it&#8217;s part of the Windows 7 OS image.</p>
<p>Don&#8217;t flame me for not recommending .NET 4.0, I use it all the time.  That being said, if the requirments of your WinForm app are met by the features and base class libraries found in .NET 3.51, then don&#8217;t unnecessarily take dependency on 4.  Your app will download, install and run without any extra steps.  This is not unlike how most Windows Mobile enterprise customers over the last decade targeted the version of the .NET Compact Framework found in ROM instead of taking advantage of the extra features found in version 3.5.  It frustrated me for a while, but I finally got it.</p>
<p>The Consumerization of IT must drive new behaviors by corporations.  Speed and simplicity of app deployment to employees is one of those behaviors.</p>
<p>Keep Coding,</p>
<p>Rob</p>
]]></content:encoded>
			<wfw:commentRss>http://robtiffany.com/windows-7/windows-7-slates-development-tip-1/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 Line of Business App Dev :: Uploading Data back to Azure</title>
		<link>http://robtiffany.com/windows-phone-7/windows-phone-7-line-of-business-app-dev-uploading-data-back-to-azure</link>
		<comments>http://robtiffany.com/windows-phone-7/windows-phone-7-line-of-business-app-dev-uploading-data-back-to-azure#comments</comments>
		<pubDate>Wed, 04 May 2011 05:11:35 +0000</pubDate>
		<dc:creator>Rob Tiffany</dc:creator>
				<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Queues]]></category>
		<category><![CDATA[Azure Table Storage]]></category>
		<category><![CDATA[Data Contract]]></category>
		<category><![CDATA[Data Member]]></category>
		<category><![CDATA[DataContractJsonSerializer]]></category>
		<category><![CDATA[DELETE]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Loosely-coupled]]></category>
		<category><![CDATA[Memcache]]></category>
		<category><![CDATA[MemoryStream]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[PUT]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Slate]]></category>
		<category><![CDATA[SQL Azure]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[URI]]></category>
		<category><![CDATA[UriTemplate]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WebClient]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Communication Foundation]]></category>
		<category><![CDATA[Windows phone]]></category>
		<category><![CDATA[Windows Slate]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XmlSerializer]]></category>

		<guid isPermaLink="false">http://robtiffany.com/windows-phone-7/windows-phone-7-line-of-business-app-dev-uploading-data-back-to-azure</guid>
		<description><![CDATA[Looking back over the last 6 months of this series of articles, you’ve created wireless-efficient WCF REST + JSON Web Services in Azure to download data from SQL Azure tables to Windows Phone.  You’ve maintained in-memory collections of objects in your own local NoSQL object cache.  You&#8217;ve used LINQ to query those collections and bind [...]]]></description>
			<content:encoded><![CDATA[<div>Looking back over the last 6 months of this series of articles, you’ve created wireless-efficient <strong>WCF REST + JSON</strong> Web Services in <strong>Azure</strong> to download data from <strong>SQL Azure</strong> tables to <strong>Windows Phone</strong>.  You’ve maintained in-memory collections of objects in your own local <strong>NoSQL</strong> object cache.  You&#8217;ve used <strong>LINQ</strong> to query those collections and bind results to various <strong>Silverlight</strong> UI elements.  You’ve even serialized those collections to <strong>Isolated Storage</strong> using memory-efficient JSON.  So what’s left to do?</div>
<div><a href="http://robtiffany.com/wp-content/uploads/2011/05/Sub.png"><img class="aligncenter size-medium wp-image-681" title="Submarine" src="http://robtiffany.com/wp-content/uploads/2011/05/Sub-180x300.png" alt="" width="180" height="300" /></a></div>
<div></div>
<div>Oh yeah, I guess you might want to know how to <strong>upload</strong> an object full to data back to a WCF Web Service in Azure.  In order to keep this article simple and to-the-point, I’m going to work with a basic Submarine object and show you how to fill it with data and upload it from a <strong>Windows Phone</strong> or <strong>Slate</strong> to a WCF REST + JSON Web Service.  Let’s take a look at this object:</div>
<div></div>
<div><span style="font-family: Consolas;">using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Runtime.Serialization;</span></div>
<div><span style="font-family: Consolas;">namespace Models<br />
{<br />
[DataContract()]<br />
public class Submarine<br />
{<br />
[DataMember()]<br />
public int Id { get; set; }<br />
[DataMember()]<br />
public string Name { get; set; }<br />
}<br />
}</span></div>
<div></div>
<div>It includes just an integer data type called <strong>Id</strong>, and a string called <strong>Name</strong>.  As in previous articles before, its decorated with a <strong>[DataContract()]</strong> and two <strong>[DataMember()]</strong>s to allow<strong> .NET serialization</strong> to do its thing.  So the next thing we need to do is create and populate this Submarine object with data, serialize it as JSON, and send it on its way using <strong>WebClient</strong>.</div>
<div></div>
<div>Below is the method and its callback that accomplishes this:</div>
<div></div>
<div><span style="font-family: Consolas;">using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Net;<br />
using System.Windows;<br />
using Microsoft.Phone.Controls;<br />
using System.IO;<br />
using System.Runtime.Serialization.Json;<br />
using System.Text;</span></div>
<div><span style="font-family: Consolas;">private void AddSubmarine()<br />
{<br />
Uri uri = new Uri(&#8220;</span><a href="http://127.0.0.1:81/SubService.svc/AddSubmarine&quot;);"><span style="font-family: Consolas;">http://127.0.0.1:81/SubService.svc/AddSubmarine&#8221;);</span></a></div>
<div><span style="font-family: Consolas;"> Models.Submarine submarine = new Models.Submarine() { Id = 3, Name = &#8220;Seawolf&#8221; };<br />
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Models.Submarine));<br />
MemoryStream mem = new MemoryStream();<br />
ser.WriteObject(mem, submarine);<br />
string data = Encoding.UTF8.GetString(mem.ToArray(), 0, (int)mem.Length);</span></div>
<div><span style="font-family: Consolas;"> WebClient webClient = new WebClient();<br />
webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient _UploadStringCompleted);<br />
webClient.Headers["Content-type"] = &#8220;application/json&#8221;;<br />
webClient.Encoding = Encoding.UTF8;<br />
webClient.UploadStringAsync(uri, &#8220;POST&#8221;, data);</span></div>
<div><span style="font-family: Consolas;">}</span></div>
<div><span style="font-family: Consolas;">void webClient_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)<br />
{<br />
var x = e.Result;<br />
}</span></div>
<div></div>
<div>As you can see above, I point the <strong>URI</strong> at a WCF Service called <strong>SubService.svc/AddSubmarine</strong>.  How <strong>RESTful</strong>.  Next, I create an instance of the Submarine object, give it an <strong>Id</strong> of <strong>3</strong> and the <strong>Name</strong> <strong>Seawolf</strong>.  I then use the same <strong>DataContractJsonSerializer</strong> I’ve been using in all the other articles to serialize the Submarine object to a JSON representation.  Using the <strong>MemoryStream</strong>, I write the JSON to a stream and then artfully turn it into a string.  Last but not least, I instantiate a new WebClient object, create an event handler for a callback, and upload the <strong>stringified</strong> Submarine object to the WCF Service.</div>
<div></div>
<div>So where did I upload the Submarine object to?</div>
<div></div>
<div>It takes two to Mango, so let’s take a look.  For starters, it goes without saying that every WCF Service starts with an <strong>Interface</strong>.  This one is called<strong> ISubService.cs</strong>:</div>
<div></div>
<div><span style="font-family: Consolas;">using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Runtime.Serialization;<br />
using System.ServiceModel;<br />
using System.ServiceModel.Web;<br />
using System.Text;</span></div>
<div><span style="font-family: Consolas;">namespace DataSync<br />
{<br />
[ServiceContract]<br />
public interface ISubService<br />
{<br />
</span><span style="font-family: Consolas;">[OperationContract]<br />
[WebInvoke(UriTemplate = "/AddSubmarine", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]<br />
bool AddSubmarine(Models.Submarine sub);</span></div>
<div><span style="font-family: Consolas;"> }<br />
}</span></div>
<div></div>
<div>Unlike previous articles where I had you download data with <strong>WebGet</strong>, this time I’m using <strong>WebInvoke</strong> to denote that a <strong>PUT</strong>, <strong>POST</strong>, or <strong>DELETE</strong> <strong>HTTP</strong> <strong>Verb</strong> is being used with our <strong>REST</strong> service.  The <strong>UriTemplate</strong> gives you the RESTful <strong>/AddSubmarine</strong>, and I added the <strong>Method = “POST”</strong> for good measure.  Keep in mind that you’ll need the exact same Submarine class on the server that you had on your Windows Phone to make all this work.</div>
<div></div>
<div>Let’s see what we get when we <strong>Implement this Interface</strong>:</div>
<div></div>
<div><span style="font-family: Consolas;">using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Runtime.Serialization;<br />
using System.ServiceModel;<br />
using System.ServiceModel.Web;<br />
using System.Text;<br />
using Microsoft.WindowsAzure;<br />
using Microsoft.WindowsAzure.Diagnostics;<br />
using Microsoft.WindowsAzure.ServiceRuntime;<br />
using Microsoft.WindowsAzure.StorageClient;<br />
using System.Configuration;<br />
using System.Xml.Serialization;<br />
using System.IO;</span></div>
<div><span style="font-family: Consolas;">namespace DataSync<br />
{<br />
public class SubService : ISubService<br />
{<br />
public SubService()<br />
{ </span></div>
<div><span style="font-family: Consolas;"></p>
<div>}</div>
<p></span></div>
<div><span style="font-family: Consolas;"> public bool AddSubmarine(Models.Submarine submarine)<br />
{<br />
try<br />
{<br />
if (submarine != null)<br />
{<br />
//Do something with your Deserialized .NET Submarine Object<br />
//… = submarine.Id </span><span style="font-family: Consolas;"> //… = submarine.Name</span></div>
<div><span style="font-family: Consolas;"> return true;<br />
}<br />
else<br />
{<br />
return false;<br />
}<br />
}<br />
catch<br />
{<br />
return false;<br />
}<br />
}</span></div>
<div><span style="font-family: Consolas;"> }<br />
}</span></div>
<div></div>
<div>Here we end up with <strong>SubService.svc</strong> with the simple <strong>AddSubmarine</strong> method where you pass in a Submarine object as a parameter.  What you do with this object, I’ll leave to you.  Some might be tempted to INSERT it into <strong>SQL Azure</strong>.  I’d prefer that you drop it into an <strong>Azure Queue</strong> and have a <strong>Worker Role</strong> do the INSERTing later so you can stay <strong>loosely-coupled</strong>.  Just in case you need a refresher on a REST-based <strong>Web.config</strong> file, here’s one below:</div>
<div></div>
<div><span style="font-family: Consolas;">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;configuration&gt;<br />
&lt;!&#8211;  To collect diagnostic traces, uncomment the section below.<br />
To persist the traces to storage, update the DiagnosticsConnectionString setting with your storage credentials.<br />
To avoid performance degradation, remember to disable tracing on production deployments.<br />
&lt;system.diagnostics&gt;<br />
&lt;sharedListeners&gt;<br />
&lt;add name=&#8221;AzureLocalStorage&#8221; type=&#8221;DataSync.AzureLocalStorageTraceListener, DataSync&#8221;/&gt;<br />
&lt;/sharedListeners&gt;<br />
&lt;sources&gt;<br />
&lt;source name=&#8221;System.ServiceModel&#8221; switchValue=&#8221;Verbose, ActivityTracing&#8221;&gt;<br />
&lt;listeners&gt;<br />
&lt;add name=&#8221;AzureLocalStorage&#8221;/&gt;<br />
&lt;/listeners&gt;<br />
&lt;/source&gt;<br />
&lt;source name=&#8221;System.ServiceModel.MessageLogging&#8221; switchValue=&#8221;Verbose&#8221;&gt;<br />
&lt;listeners&gt;<br />
&lt;add name=&#8221;AzureLocalStorage&#8221;/&gt;<br />
&lt;/listeners&gt;<br />
&lt;/source&gt;<br />
&lt;/sources&gt;<br />
&lt;/system.diagnostics&gt; &#8211;&gt;<br />
&lt;system.diagnostics&gt;<br />
&lt;trace&gt;<br />
&lt;listeners&gt;<br />
&lt;add type=&#8221;Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8243;<br />
name=&#8221;AzureDiagnostics&#8221;&gt;<br />
&lt;filter type=&#8221;" /&gt;<br />
&lt;/add&gt;<br />
&lt;/listeners&gt;<br />
&lt;/trace&gt;<br />
&lt;/system.diagnostics&gt;<br />
&lt;system.web&gt;<br />
&lt;compilation debug=&#8221;true&#8221; targetFramework=&#8221;4.0&#8243; /&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;/system.web&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;!&#8211;Add Connection Strings&#8211;&gt;<br />
&lt;connectionStrings&gt; </span></div>
<div><span style="font-family: Consolas;"></p>
<div>&lt;/connectionStrings&gt;</div>
<p></span></div>
<div><span style="font-family: Consolas;"> &lt;system.serviceModel&gt;<br />
&lt;behaviors&gt;<br />
&lt;serviceBehaviors&gt;<br />
&lt;behavior&gt;<br />
&lt;!&#8211; To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment &#8211;&gt;<br />
&lt;serviceMetadata httpGetEnabled=&#8221;true&#8221;/&gt;<br />
&lt;!&#8211; To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information &#8211;&gt;<br />
&lt;serviceDebug includeExceptionDetailInFaults=&#8221;false&#8221;/&gt;<br />
&lt;/behavior&gt;<br />
&lt;/serviceBehaviors&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;!&#8211;Add REST Endpoint Behavior&#8211;&gt;<br />
&lt;endpointBehaviors&gt;<br />
&lt;behavior name=&#8221;REST&#8221;&gt;<br />
&lt;webHttp /&gt;<br />
&lt;/behavior&gt;<br />
&lt;/endpointBehaviors&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;/behaviors&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;!&#8211;Add Service with webHttpBinding&#8211;&gt;<br />
&lt;services&gt;<br />
&lt;service name=&#8221;DataSync.SubService&#8221;&gt;<br />
&lt;endpoint address=&#8221;" behaviorConfiguration=&#8221;REST&#8221; binding=&#8221;webHttpBinding&#8221;<br />
contract=&#8221;DataSync.ISubService&#8221; /&gt;<br />
&lt;/service&gt;<br />
&lt;/services&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;serviceHostingEnvironment aspNetCompatibilityEnabled=&#8221;true&#8221; multipleSiteBindingsEnabled=&#8221;true&#8221; /&gt;</span></div>
<div><span style="font-family: Consolas;"> &lt;!&#8211;&lt;serviceHostingEnvironment multipleSiteBindingsEnabled=&#8221;true&#8221; /&gt;&#8211;&gt;<br />
&lt;/system.serviceModel&gt;<br />
&lt;system.webServer&gt;<br />
&lt;modules runAllManagedModulesForAllRequests=&#8221;true&#8221;/&gt;<br />
&lt;/system.webServer&gt;<br />
&lt;/configuration&gt;</span></div>
<div></div>
<div>This Web.Config gives you the <strong>webHttpBinding</strong> you’re looking for to do a <strong>REST</strong> service.  I even left you a spot to add your own database or Azure storage <strong>connection strings</strong>.</div>
<div>This article wraps up the <strong>Windows Phone 7 Line of Business App Dev series</strong> that I’ve been delivering to you since last September.  Who knew I would make fun of <strong>OData</strong> or have you create your own <strong>NoSQL</strong> database to run on your phone along the way?  I think I actually wrote the first article in this series from a hotel room in <strong>Nantes, France</strong>.</div>
<div></div>
<div>But have no fear, this isn’t the end.</div>
<div></div>
<div>In preparation for <strong>Tech Ed 2010 North America</strong> coming up on May 16th in Atlanta, I’ve been building the <strong>next-gen</strong>, <strong>super-fast</strong>, <strong>super-scalable Azure architecture</strong> designed for <strong>mobile devices roaming on wireless data networks</strong>.  I’ve spent the last decade building the world’s largest and most scalable mobile infrastructures for Microsoft’s wonderful global customers.  Now it’s time to make the jump from supporting <strong>enterprise-level scalability</strong> to the much bigger <strong>consumer-level scalability</strong>.</div>
<div></div>
<div>Yes, I’m talking <strong>millions</strong> of devices.</div>
<div></div>
<div>No, you won’t have to recreate <strong>Facebook’s</strong> servers, <strong>NoSQL</strong>, <strong>Memcache</strong>, or <strong>Hadoop</strong> infrastructure to make it happen.  I’m going to show you how to make it happen with Azure in just two weeks so I’m looking forward to seeing everyone in Atlanta in two weeks.</div>
<div></div>
<div>Keep coding,</div>
<div>Rob</div>
]]></content:encoded>
			<wfw:commentRss>http://robtiffany.com/windows-phone-7/windows-phone-7-line-of-business-app-dev-uploading-data-back-to-azure/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Making MEAP Real</title>
		<link>http://robtiffany.com/mobile-enterprise-application-platform/making-meap-real</link>
		<comments>http://robtiffany.com/mobile-enterprise-application-platform/making-meap-real#comments</comments>
		<pubDate>Mon, 01 Feb 2010 23:53:03 +0000</pubDate>
		<dc:creator>Rob Tiffany</dc:creator>
				<category><![CDATA[Mobile Enterprise Application Platform]]></category>
		<category><![CDATA[.NET Compact Framework]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Gartner]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[MEAP]]></category>
		<category><![CDATA[Merge Replication]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Middleware]]></category>
		<category><![CDATA[Netbook]]></category>
		<category><![CDATA[Slate]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Compact]]></category>
		<category><![CDATA[SSCE]]></category>
		<category><![CDATA[Sync]]></category>
		<category><![CDATA[Synchronize]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows CE]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows phones]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://robtiffany.com/?p=107</guid>
		<description><![CDATA[After all the logical diagrams of Microsoft MEAP and spelling out how it meets Gartner&#8217;s critical capabilities, I thought I’d show you a picture that provides a more concrete view of what our MEAP offering looks like. Hopefully, this will better crystallize how Microsoft lines up with those critical capabilities and how our reusable mobile [...]]]></description>
			<content:encoded><![CDATA[<p>After all the logical diagrams of Microsoft MEAP and spelling out how it meets Gartner&#8217;s critical capabilities, I thought I’d show you a picture that provides a more concrete view of what our MEAP offering looks like.  Hopefully, this will better crystallize how Microsoft lines up with those critical capabilities and how our reusable mobile application platform plugs into a customer’s enterprise.  I think we have a great story here that shows customers how we can save them money on a platform that:</p>
<p>1. Works the same across laptops, tablets, Netbooks and phones.<br />
2. Gives them reusable mobile middleware that can support multiple simultaneous applications rather than needing something different for each point solution<br />
3. Lowers risk to their projects by reducing the amount of custom code needed to build any given solution.<br />
4. Gives them adapters that plug into the existing enterprise packages they use to run their business.</p>
<p><a href="http://robtiffany.com/wp-content/uploads/2010/02/MEAPPhysical.png"><img src="http://robtiffany.com/wp-content/uploads/2010/02/MEAPPhysical.png" alt="MEAP Physical Diagram" title="MEAPPhysical" width="520" height="420" class="alignleft size-full wp-image-106" /></a></p>
<p>Regards,<br />
Rob</p>
]]></content:encoded>
			<wfw:commentRss>http://robtiffany.com/mobile-enterprise-application-platform/making-meap-real/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

