Linked by Kyuss on Mon 13th May 2013 01:31 UTC
Microsoft "Most people understand that Windows is used by a variety of people who have a variety of needs, ranging from corporate server to workstation to POS terminals to home PC and beyond. Most people accept that whenever Microsoft updates Windows, it has to balance the competing requirements to find some kind of workable compromise. There is however another set of competing requirements that many do not really register, even those that call themselves power users or are IT admins. It is a conflict between developers/programmers and Microsoft itself."
Permalink for comment 561390
To read all comments associated with this story, please click here.
RE[2]: Comment by Nelson
by Nelson on Mon 13th May 2013 11:27 UTC in reply to "RE: Comment by Nelson"
Member since:

You are ignoring the fact that anyone coding for XNA now has to find a new "middleware" technology. Generally I agree with you though, the damage seems so far to be fairly limited as most of them flocked to Unity as a result.

XNA developers were never numerous, the majority of XNA apps are written as Windows Phone 7 apps, which can still be written today if you wish.

You can also use MonoGame which is a free and open source implementation of XNA across Windows 8, Windows Phone, iOS, and Android.

However Unity works everywhere, which from Microsoft's traditional point of view is suboptimal as they prefer programs to only run on their systems. ;)

Its a better solution than XNA, which is why I never got the issue. XNA was never good and most people who used it disliked it. I've never liked it and thought it was an overengineered mess. Suddenly its dear to some people when Microsoft *finally* axes it.

I am not sure what you mean by this. From a native developers point of view Windows 8 appears as this oddly incomplete mixture of COM APIs (Direct3D, DXGI, etc), and then having to bridge into .Net with C++/CLI to truly cooperate with the Modern UI.

No. There is no bridging with C++/CLI, in fact, if you all a C++ WinRT component from a C++ app the CLR isn't even loaded.

WinRT components use COM to define the ABI, so under the hood they're native code. The only time the CLR is loaded is if the WinRT component itself is written in C#.

The C++/CLI syntax you see is just Microsoft re-using it for C++/CX, their extensions to C++ for authoring WinRT components.

You can write WinRT code with ISO C++ if you don't mind using the WRL template library.

As an example of this, if you want to target Modern with Direct3D or Direct2D, you have to first create a .Net WPF window (using C# or C++/CLI), and then obtain a native IUnknown for the WPF CoreWindow object. Only after this can you call IDXGIFactory2.CreateSwapChainForCoreWindow which is required to setup a native rendering context.

In other words: there are no native interfaces working with Modern.

WPF is not used with the new WinRT XAML APIs. They're not the same thing. The XAML stack in WinRT is native.

I am not sure I understand your point though. You are saying that people that had to write a C# UI, before WPF was ready, had it coming and gets what they deserved when Microsoft stopped updating this API?

Generally, yes. People knew it was a stop gap. Any .NET developer knew it didn't feel like writing .NET code. WPF brought us a proper framework with the full benefits of .NET.

I was already writing Avalon code when people were just starting to use WinForms, if people adopted it beyond more than a temporary wrapper then that's on them.

From a native developers point of view WinRT is just a fancy word for deprecating all Win32 functions related to GDI. There is no C++ support for the newly
introduced Modern APIs as those all require C++/CLI.
You are coding about as much in C++ when using C++/CLI as when you're coding C++ when writing an Objective C class with Objective C++. It is a nice bridging feature, but surely you wouldn't claim that P/Invoke makes C# a first class citizen for Win32?

My God, this isn't true. How do people like you get away with such misinformation and bullshit?

Write a C++ app, call into the WinRT APIs, look at the loaded modules with WinDbg or something and notice that mscorlib is NEVER loaded into the app. WinRT APIs are for the most part pure native code called from .NET code, or JS, or C++.

Microsoft marketing couldn't have written it better. Sadly that doesn't make it true. The "WinRT XAML stack" is a .Net assembly and has nothing to do with native.

No it isn't. Spend one day writing one line of WinRT code and you'd know that you're wrong.

Now on this we can at least agree. This is their second attempt at deprecating native development and force all future development to be CLR only.

That vision train-wrecked Vista. History will tell if it will do so for Windows 8 too.

How people can be so absolutely ignorant of the facts astounds me.

WinRT is essentially a COM-based API, although relying on an enhanced COM. Due to its COM-like basis, WinRT allows interfacing from multiple languages, just as COM does, but it's essentially an unmanaged, native API. The API definitions are, however, stored in ".winmd" files, which are encoded in ECMA 335 metadata format, the same format that .NET uses with a few modifications.

The language extensions borrow syntax from C++/CLI but target the Windows Runtime and native code instead of the Common Language Runtime and managed code.

while the XAML framework is part of the Windows Runtime, written in native code

Since you've been shown to be so afraid of the facts, watch this video on the internals of the Windows Runtime where they hold your hand and walk you through explaining that its native code.

Reply Parent Score: 3