Programming for Metro
Metro is the future http://zd.net/rnT9VZ
.NET is for old apps. WinRT replaces WPF & WCF. XAML is big. There were no Silverlight sessions.
Yes, all those XAML skills are portable, Silverlight (RIP) apps can run as Metro apps with a bit of fidgeting with namespaces – you just need to know what controls to replace in the Windows.UI.Xaml.Controls
namespace http://msdn.microsoft.com/en-us/library/windows/apps/br227716(v=VS.85).aspx - (Some are omniously missing - Silverlight / WPF had allot of controls). here is a list of Metro Controls that do not have direct counterparts in Silverlight / WPF (or at least not the same name):
· ApplicationBar - Represents the container control that holds application UI components for commanding and experiences.
· CaptureElement - Represents a media capture from a capture device, for example recorded video content.
· CarouselPanel - Represents a panel that presents its items on a surface with a viewport, and includes scrolling capabilities and item virtualization.
· FlipView - Represents an items control that displays one item at a time, and which enables "flip" behavior for traversing its collection of items.
· FlipViewItem - Represents the items wrapper class for a FlipView control.
· Frame - Represents a content control that supports navigation.
· GridView - Represents a specialized ordered list view.
· GroupItem - Represents the root element for a subtree that is created for a group.
· GroupStyle - Describes how to display the grouped items in a collection, such as the collection from GroupItems.
· GroupStyleSelector - A class that you derive from to select the group style as a function of the parent group and its level.
· ItemContainerGenerator - Provides mappings between the items of an ItemsControl and their container elements.
· JumpViewer - Represents a scrollable control that incorporates two views that have a semantic relationship. For example, the JumpView might be an index of titles, and the ContentView might include details and summaries for each of the title entries. Views can be changed using zoom or other interactions.
· JumpViewerLocation - Communicates information for items and view state in a JumpViewer, such that hosts for scrolling and virtualization (such as ListViewBase) can get correct item and bounds information.
· ListViewItemTemplateSettings - Provides calculated values that can be referenced as TemplatedParent sources when defining templates for a ListViewItem.
· OrientedVirtualizingPanel - Adds infrastructure (provides base class) for virtualizing layout containers that support spatial cues, such as VirtualizingStackPanel and WrapGrid.
· Page - Encapsulates a page of content that can be navigated to.
· ProgressRing - Represents a control that indicates that an operation is ongoing. The typical visual appearance is a ring-shaped "spinner" that cycles an animation as progress continues.
· RichTextBlockOverflow - Provides the overflow area for linked text containers, as a companion class to RichTextBlock.
· StyleSelector - A class that you derive from to select the item style as a function of the content data and its specific item container.
· ToggleSwitch - Represents a switch that can be toggled between two states.
· VariableSizedWrapGrid - Provides a grid-style layout panel where each tile/cell can be variable size based on content.
· WebView - Provides a UI element that hosts HTML content within the application.
· WebViewBrush - Provides a brush that renders the currently hosted HTML.
· WrapGrid - Positions child elements sequentially from left to right or top to bottom. When elements extend beyond the container edge, elements are positioned in the next row or column.
But when do you expect to be developing for Metro? Win8 is at least a year away, and a service pack 1 (the corporate seal of approval) a year after that. Win8 seems targeted at consumers - its very touchy-feely, social networking enhanced, pastel colored – geared towards tablets. How will it benefit corporations – you know the guys who actually shell out the cash for us to develop the apps? They just wound up the Win 7 upgrade cycle. Corporations spend money on software to enhance information systems for 2 reasons: 1) to increace revenue and 2) to decreace costs. Its unclear how Metro will help out here. The workplace is about productivity, its not a gadget fashion show! To top that off, we may be heading into the Great Depression II – Europe is collapsing and the US is drowning in debt – if tens of thousands of people are getting laid off, why would an organization blow cash on upgrading all its office computers now?
The Revenge of C++
should I ditch C# / F# and jump back into C++ ?
Will XNA vnext leverage VS2012 DX Graphics frame Debugger, or MSBuild for HLSL ? DirectXMath is a Win8 replacement for XNA Math API - http://msdn.microsoft.com/en-us/library/windows/desktop/hh437833
! If all the new 3D debugging features are dependent on DirectX 11, What is the future of XNA, which is mired back on DirectX 9 ?
· For Binding – IcustomPropertyProvider
· For Async - AsyncOperationWithProgressCompletedHandler
And what about COM interop marshaling overhead? - even with easily discoverable metadata, WInRT is still COM.
What do we have to learn from Build:
Is that it?
I was expecting revolutionary evolution, not evolutionary revolution ...
I love the buzz of being on the cutting edge of technology, and leveraging the power of the highest level of abstraction. That's why I'm in this industry. As a .NET dev, I can pick & choose which APIs I am interested in and tailor my choice of which customer project to pick up (Unfortunately, I cant find an F# customer...). When a great API such as WPF / Silverlight is superseded, and there will never be a v.next, then for me its time to move on to the next cutting edge.
There is so much room for improvement in .NET. (See here for the list: http://geekswithblogs.net/JoshReuben/archive/2010/09/13/series-net-5.0---not-quite-there-yet.aspx
). There is also allot than can be said for the state of software engineering mechanisms in general: Today there is no MDA story that works, we have no silver bullet for capturing compilable requirements, code is way to verbose and is repeated across projects ad nauseam! Its sad for me that Build has decided to reinvent allot of the BCL, instead of building on what has gone before, abstracting it and improving it. Thats not evolution - its recycling. It also stinks of internal politics between divisions.
Do you recall the massive learning curve that accompanied .NET 1.0 and 3.0, and to a lesser extent LINQ TPL & RX? That what i crave - exponential improvement. Compare that to metro + WinRT, which is another way to write nearly the same old XAML with what boils down to is just Win8 controls. Immersive - WPF had multitouch. If I wanted to use the Facebook API, well I would just use it. TPL Dataflow - come on, we saw this at PDC - its not a new reveal. LINQ to HPC - its been on the boil for the last 2-3 years.
Look at it this way: how much did you have to read to get your head around WCF, WPF, ASP.NET (whatever), compared to the great, but comparetively minor modifications in .NET 4.5 - I just dont feel there are new revolutionary concepts or programming paradigm shifts to wrap my head arround..