Posted
by
timothyon Sunday October 09, 2011 @12:03PM
from the lagging-indicator dept.

mikejuk writes "Are you a newbie programmer looking for a job? It seems your best bet is to opt for .NET. According to technical jobs website Dice.com, companies in the U.S. have posted more than 10,000 positions requesting .NET experience — a 25 percent increase compared to last year's .NET job count. So Microsoft may want us to move on to Metro but the rest of the world seems to want to stay with .NET."

This is Slashdot, which seems to invent it's own alternate reality when it comes to Microsoft. The headlines and summary spread misinformation, then those are repeated in the comments ad nauseam by the commenters who only get news from Slashdot.

It's this type of attitude that separates programmers into idiotic "camps". I'm not talking about MS behaving weirdly and making nonsensical decisions -- that's a given. I mean making it sound like C# is oceans apart from modern C++. When you're programming in C++ and STL (along with some Boost, as required), most programs are going to be almost identical in structure. I know this because I've had to port code back and forth from C# to ANSI C++, and apart from some specific, easy-to-isolate areas (like interfacing with the GUI), the structure of the programs remains the same. You should be separating the code that talks with the GUI no matter what language you use, unless your program is heavily intertwined with the GUI (like graphics programs or visualizers).

You should be comfortable using both languages. If you're coming from C# to C++, then check out Accelerated C++ [acceleratedcpp.com], and (some time later) follow that up with this advice [stackoverflow.com].

This isn't like moving from C# to C, it's much closer. Also, you should aim to be a Programmer, rather than a (C++ || Java || C# || Python) Programmer. It'll make your life easier and make you better at your job.

The weekly trends on Channel 9 and MSDN blogs don't dictate company policy. They aren't deprecating C#. In fact, the situation for C# will be much better in Windows 8 than it is right now: Metro is all managed, and you'll be able to access WinRT directly (no more P/Invoke hell like with Win32 API.)

There are lots of reasons to use C++ on Windows: it's faster, supports intrinsics, offers a superior energy efficiency, does not have an embarrassing pause, trivially offers convenient access to the native APIs, a

Microsoft seems finally to have come to the conclusion that anyone with a lick of sense could have told them a decade ago. Some things work really well in managed code, some things don't. A large part of Microsoft's product suite has been migrated to.NET, but for reasons anyone with half a brain could tell you, not everything should be written that way. At the absolute least, you need to write enough code to run.NET(or any managed code) in an non managed language because unlike C++, managed code cannot run itself. In addition to that sort of stuff there's plenty of things which could be written in.NET, but for which doing so wouldn't make any real sense.

At present there are certain things in the Windows OS which are a huge pain to do in C++ since Microsoft has essentially replaced MFC with.NET, so you end up mixing in C# code where it really doesn't make any sense. Microsoft are rectifying this and allowing C++ to be an equal player, they're not getting rid of.NET, they are continuing to build their own software in.NET(where it makes sense), they're just allowing C++ programmers to play too.

no, but a majority are what we used to call 'VB devs', only now they have curly brackets, woot!

Try to develop some C# code outside VS and you'll see it is a very verbose language, you have to do a lot of stuff that used to be a single line or two of C++ - I don't mean access the APIs, but it seems to me that everything you do requires a new object being created. Try writing the code in notepad and you won't like it.

Now a lot of people say 'but I never will write C# in notepad so its a moot point' not really

That you think.NET devs are script kiddies speaks volumes about you. I'm curious - what IDE do you think.NET developers should be using? The only thing that VS does for a.NET dev is run the command line for CLI when they click 'build'. Learning how to use CLI to compile from the command line takes 5 minutes to figure out, so there's that hurdle. What other "magic" is VS doing that makes.NET devs so stupid/lazy? Refactoring? Intelesence? Just because you're too ignorant to understand what an IDE is and what the.NET framework is doesn't mean can (without looking like a fool) go around and bash.NET. That you think that.NET devs are script kiddies makes me think that you don't know what.NET is or what a script kiddie is. I'll give you a hint: Script kiddies don't know how to write code - that's what makes them a script kidde.

But really, I think you've made your little story up there. Please give me the scenario where you would "take a.NET developer out of Visual Studio". Because it sounds a too me like you're fibbing.

He could be referring to the.designer classes that are made when you use the form designer tools, or some of the convenient templates. I would argue back that typing tons of tedious repetitive code doesn't make you a better programmer - QT Designer and Eclipse provide the same shortcuts for the same reasons.

There are stories on all topics that make no sense. I don't know much about how these stories get selected and edited, but couldn't/. hire editors that know the basics of the technologies so they can weed out stories that are fundamentally wrong or that make no sense?

Managed C++ != C#.Managed C++ is / was a variant of C++, with a garbage collector and some other things bolted on. C# is a new language, with a strong similarity to C++, that also has a garbage collector. Both languages are managed (from a memory standpoint), and I think both compile down to the CLR, but that's kind of it.

I don't know anyone who uses Managed C++ (I created a project in it once, gave up; this was back when I programmed in C++). I use C# all the time.

C++/CLI is C++ plus a set of extensions to allow intermixing C++ and managed objects. The code is by default compiled to a mixture of managed code and native code. It is by far the easiest way to interface managed and native code, since you do not need to use COM, nor do you need to use p/invoke. (Of course if you don't know C++/CLI it may be easier to use one of those other methods).

Similar situation here, except I have to hook up ANSI C++ programs with different GUIs on different OSs. I can use Qt sometimes, but if you interface the code with C++/CLI you get a much smaller file size and a much faster (more responsive) UI. I keep a separate file with a bunch of glue-code that converts between containers like std::string and.Net Strings, along with other relatively low-level conversions. C++/CLI sure is ugly, which is why you want to minimize its use. Whenever you can isolate code as s

The problem with all of this is the flawed thinking that everything is desktop centric. Metro is new, along with Windows 8..Net stretches waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay further than the desktop. This shows the short sighted thinking of many posters, or the fact that they work in shops still rewriting the same software since the 90's.

WinRT consists of several parts.The first such part is a replacement for COM, heavilly inspired by managed code. Indeed the restrictions on the exported interface are explicitly designed such that objects remain easy to call from managed code. It also lifts some idiotic restrictions that COM had. The interfaces are now described using CLI metadata in the form of a WinRT file. Despite being heavily inspired b y managed code, this is still all native code, and does not require a garbage collector.

The second part of WinRT is a set of APIs that replace many Win32 Apis, exported using this new COM replacement. These APIs are also inspired by managed code, especially the naming and namespacing conventions. The APIs are not particularly low level, but are actually rather similar to many of the APIs in the.Net Framework. For example, consider the 'Windows.Data.Json' namespace. That hardly seems low level. Or how about 'Windows.Data.Xml.Dom' which is very roughly a ported version of the.NET 'System.Xml' namespace?

When writing.NET metro style apps in C#, the Full.Net framework is actually available, although only a portion of it is exposed by default, because the app store will reject Metro-style apps that use APIs not exposed by default, because those APIs can be used to escape the Metro Sandbox. (This is much like how metro-style C++ code could call any win32 API, even those not exposed by default, but that will cause the application to be rejected from the app store).

WinRT doesn't replace.NET or the Win32 API, nor is it a second-class citizen when used from C#.

Metro apps are intended to be small—about the size of a cell phone app. They aren't made to replace full desktop apps meant to get work done. The.NET APIs you get for Metro apps have been scrubbed, getting rid of "insecure" APIs as well as ones that WinRT made redundant. A lot of the.NET API you've become used to is still available, though.

It uses COM behind the scenes, but there's no hint of COM in the API -- in fact, people in the Mono project have already begun work on a purely managed WinRT implementation. It definitely doesn't feel like a second-class citizen while using it. I'll be curious to see how much overhead it introduces.

WinRT in C++ is a little weird. There are two ways to use it: WinRTL, which is written in standard C++ but has all the verbosity of COM, or C++/CX, some extensions to C++ that make using it a breeze if you don't care about portability. It doesn't replace the Win32 API either. They encourage you to use WinRT when possible, but the entire Win32 API is still available. It's not clear if they'll be filtering the APIs you're allowed to use during the review process.

The biggest problem with Metro apps is that you can't just distribute an exe—all distribution needs to go through the Windows app store, complete with $100/year fees and review process. I'm sure a hack will come out, but this might make life a bit more difficult for many hobby developers trying to reach the common user.

This isn't insightful. It's plain wrong. As someone who attended the Build conference and spoke directly with several Microsoft program managers, I can attest that Metro/WinRT is not a replacement for.NET. I asked several times something like "But can I do Q in the sandbox?" and they would say "No, in that case use regular.NET to do Q and distribute your apps through traditional channels (or link to the installer in the app store)." I never got the impression that Metro was always the preferred approach, just the preferred approach for slate devices.

I don't know what Microsoft wants to do in the future past Windows 8. Maybe you're right, and Microsoft wants to give up their stronghold on enterprise applications that have certain hardware or interoperability requirements not allowed by Metro, so that they get control over tablet apps. But I'm not betting the bank on that.

What makes WinRT a royal pain is that it is low level C++ API. Thus C# becomes a second rate citizen and C++ a first rate citizen and it uses COM technologies.

The Windowing and other GUI apis have ALWAYS been low level C (not C++) APIs, and likely always will be. Windows.Forms was built on top of that. I'm not real sure how you can say that C# is a second class citizen or a first class citizen, it is neither and both..NET Libraries care not what language they are being used by, sure the API may not feel as natural in one language over the other, but thats not anything new and will always be there.

Its rather retarded to think that any API other than the one at the lowest level is going to be the one that is most natural. Its all implemented in C at the low level, regardless of what lazy language you throw on top of it.

Never thought that would happen in that COM is brought back to life.

Then you have absolutely no idea how the.NET framework is built..NET Assemblies are extensions to ActiveX, which are... extensions to COM objects... which are extensions of OLE2 objects. In fact, every.NET framework assembly is a OLE2 object, as is every ActiveX and COM object, each one just a different set of interface requirements on top of the previous.

It is what it is and personally I think WinRT will fail overall because it means you are completely beholden to the Windows platform!

You mean like Windows.Forms is beholden to the Windows platform? So I guess you're saying it would be absolutely impossible for someone to write a clean implementation of it or a wrapper around Qt or GTK to do the same? Thats odd, why do you seem to think what can be done for the Windows.Forms namespace can't be done again, why do you think thats the case?

I'm fairly certain you have absolutely no idea how the.NET framework works. You have heard of Mono haven't you?

The Windowing and other GUI apis have ALWAYS been low level C (not C++) APIs, and likely always will be.

The whole point of WinRT is to change that, actually. It's no longer low-level C. It's an object-oriented API from ground up using a framework that's deliberately designed to be consumable from different languages (GC or no GC, static or dynamic typed... there are a lot of considerations there).

Then you have absolutely no idea how the.NET framework is built..NET Assemblies are extensions to ActiveX, which are... extensions to COM objects... which are extensions of OLE2 objects. In fact, every.NET framework assembly is a OLE2 object, as is every ActiveX and COM object, each one just a different set of interface requirements on top of the previous.

You are absolutely wrong here..NET assemblies are not extensions to ActiveX. It doesn't even make sense, because an "ActiveX object" is a COM component with a visual UI. Nor are they COM objects. You can take a.NET class and make it visible to COM as a COM object, but it has to be explicitly done, limits what you can do with such a class, and is implemented via a separate bridge (COM Interop).

Heck,.NET classes don't implement IUnknown (the most basic requirement for a COM object).

This is Slashdot, which seems to invent it's own alternate reality (FULL STOP). The headlines and summary spread misinformation, then those are repeated in the comments ad nauseam by the commenters who only get news from Slashdot.

There, fixed that for you. I'm convinced most Slashdotters have never read a single economics, history, religious, or philosophy book of any practical relevance, let alone a technical reference.

Those are the only kinds of books I read of late. It gives me a deeper understanding of the world. Which is frankly very depressing these days.

The other way is that Microsoft is failing in its goals, and the populace is rebelling against them by going with a quaint older technology rather than Microsoft's newfangled nonsense, and frankly I am inclined to agree.

(Actually I thought Metro was a GUI design standard.. I don't know much about it but I know it's not a competitor for.NET..)

Reading the Wikipedia article on Metro, it doesn't even seem to be an actual UI library, but more of a specific UI design philosophy. I think as long as you emphasize text as the primary design element and break the screen into flat blocks, you could be developing in Scheme using Qt for all Microsoft cares.

Metro is not a GUI library. It's not a library at all. It's a term to describe a new kind of apps, specific to Win8, that are fullscreen, run in a very tight sandbox, and have different life cycle that allows the OS to unload them. Basically, tablet-enabled apps for Windows.

WinRT (Windows Runtime) is the library (and a bit more than that; the term is overloaded [blogspot.com]). It's not just a GUI library, mind you. It also has file I/O, and sockets, and HTTP, and lots of other stuff. It's most similar to.NET or Java

The economy is coming back--that's why. If.NET jobs plunged 75% two years ago and rose 25% this year, that does not suddenly signal a.NET renaissance.
If you knew a 20-something getting into programming--would you steer them into.NET? No fucking way. You'd make them learn Java, PHP and Ruby.
Java is on fire right now, for example.

Windows 8 isn't out yet! Right now it is just a developer preview. That means it isn't even in beta yet, it is still effectively alpha, meaning feature incomplete. They just want people to be able to start learning the new development environment that will be coming. It has a long way to go before it is out on the desktop (a year or more). Of course even once it is out, it has a longer way to widespread adoption. It'll be several years before lots of desktops feature Metro.

...doesn't mean everyone will be using it. Windows 7 is only what, 2 or 3 years old? It's just starting to gain steam but most of the world still runs XP. Once the masses see that the start menu is gone and has been replaced by this huge, gawdy menu that takes up THE_ENTIRE_SCREEN, they won't be in any hurry to upgrade. 8 is going to go over like Win ME.

Actually the majority, or rather plurality at this point, do use 7 now. It has overtaken XP. It is enough (when combined with Vista which quite a few people do use) that some games are now coming out that require DirectX 10, which is Vista and 7 only.

But yes, the adoption of Windows 8 will be slow. Even if it is an amazing OS, people will upgrade slowly just because that's how people do things. Some don't like change, others see no reason to spend money if what they have now works. Still others just don't d

.NET is pretty much a winner in my opinion. There is a heavy demand for it, and if you know C# you pretty much know Java (and vice versa).

I don't know the point in trying to move people off something which works already. Also the new metrosexual UI is garbage and I'm hoping most people will give it a miss, and anyway tech companies aren't generally eager to move off a working system.

The masses are embracing Win 7 because it brought some really cool new features and it's rock-solid-stable. I don't recall reading any bad reviews of it. I don't remember ANYONE saying stuff like "WTF is this garbage? I'm sticking with XP!" People aren't afraid of change when they like the change. Win 8 on the other hand? Very few positive reviews (except from those who tested it on a tablet). It's a TABLET INTERFACE that Microsoft is shoving onto a PC. How the hell is that supp

The masses are embracing Win 7 because it brought some really cool new features and it's rock-solid-stable. I don't recall reading any bad reviews of it.

The masses are embracing Win 7 because it came on their PC and doesn't suck as bad as Vista did. I have Windows 7 on my laptop and while I only boot into it every few weeks to play a game that doesn't run in Wine, I've yet to see a 'really cool new feature' that wasn't in XP.

I agree with you about Windows 8 though, it seems to be Vista++. Maybe Windows 9 will actually separate the desktop and tablet versions and be worth using again.

Um... *raises hand*I have Windows 7 on my ThinkPad laptop which I dual-boot with Linux. I've just about gotten fed up with 7 and am very tempted to go back to XP.Why? Here's a few reasons:1. Takes 5-8 minutes to shut down, thrashing the disk the entire time(And not when updates are happening either).2. While playing TF2, "audiodg.exe" will randomly take the entire CPU for 30s, then start working properly again. Doing the various suggestions found on google - updating audio drivers, disabling effects on the

Bullshit. The Java world is so huge and is much more than just the language. Java is surrounded by a sea of open-source technologies such as Spring and Hibernate and all the other things you need to know to succeed. Also, if all you have on your resume is C pound, nobody is going to consider you for a Java job.

Not according to the current beta. I tested it too. Go to the desktop and try to open the start menu. You're back to metro. For those old enough to remember, the start menu was the star of the show when Windows 95 was released. And for good reason. It's useful, customizable, and it doesn't hog your entire screen like metro does. As the above poster pointed out, this is a GUI for a tablet, not a desktop (or laptop) PC.

1) It's not a beta. It's a developer preview that may be considered closer to an alpha release.

2) Turning off the metro start menu is a registry edit away. Who knows if that will be changed to a user-accessible check box in the next year+ Windows 8 will be in development

3) Microsoft has collected data that shows people are using the start menu less and less. I mean, in essence, what is the start menu? It has shortcuts to all your programs, a search feature, some folder shortcuts, and the power button. It tu

Microsoft has collected data that shows people are using the start menu less and less.

Microsoft is misunderstanding this data point. Just because people are using it less doesn't statistically say that it's less useful to them. It simply means that between the start menu, the quick launch/taskbar, and the desktop (barring people like me who use Stardock Objectdock, Launchy, or other third party add-ons), the start menu is the least used. However, it doesn't indicate how useful it is to them once it is opened. Also, Microsoft's stat gathering habits are opt-in, which usually precludes power u

Wrong. The start menu in Win7 is perfectly fine (more functional than XP in just about every way).

The issue is that the new task bar serves as an excellent launcher and more people are using the task bar, jump-lists, etc.

The start-screen replaces all the functionality of the Start menu and provides a bunch of enhancements as well. For desktop/mouse oriented users, it is currently very rough and not optimized. They've said this as clearly as possible that tehre is a lot of enhancment going on that didn't

WinRT is the new Windows 8 runtime, which will be accessible by C++, C# and any.Net language. The.Net standard libraries will be available for Windows 8 Desktop applications but not for Metro applications, which will be written targeting WinRT.

So, the summary is wrong because:a) Metro is not a development frameworkb).Net-related skills remain central in Windows 8 even when targeting Metro

It implements the new Metro look.
Has a simple UI programming model for Windows developers (You do not need to learn Win32, what an HDC, WndProc or LPARAM is).
It exposes the WPF/Silverlight XAML UI model to developers.
The APIs are all designed to be asynchronous.
It is a sandboxed API, designed for creating self-contained, AppStore-ready applications. You wont get everything you want to create for example Backup Software or Hard Disk Partitioning software.WinRT wraps both the new UI system as well as old Win32 APIs and it happens that this implementation is based on top of COM.

Some developers are confused as to whether.NET is there or not in the first place, as not all of the.NET APIs are present (File I/O, Sockets), many were moved and others were introduced to integrate with WinRT.

When you use C# and VB, you are using the full.NET framework. But they have chosen to expose a smaller subset of the API to developers to push the new vision for Windows 8.

And this new vision includes safety/sandboxed systems and asynchronous programming. This is why you do not get direct file system access or socket access and why synchronous APIs that you were used to consuming are not exposed.

Now, you notice that I said "exposed" and not "gone".

What they did was that they only exposed to the compiler a set of APIs when you target the Metro profile.

You might be thinking that you can use some trick (referencing the GAC library instead of the compiler reference or using reflection to get to private APIs, or P/Invoking into Win32). But all of those uses will be caught by AppStore review application and you wont be able to publish your app through Microsoft's store.

You can still do whatever ugly hack you please on your system. It just wont be possible to publish that through the AppStore.

People today write their libraries under the "Core" profile so that they work equally well on any platform -- Silverlight, desktop, phone. Core contains the common standard libraries -- e.g. things like StringBuilder, LINQ, generic collections, and the other day-to-day programming side. "Client Profile" also contains UI stuff, and "Full Profile" also contains server stuff.

For Metro, you will use APIs from both.NET Core Profile and from WinRT. WinRT will provide things like local storage APIs and UI. Core Profile will provide all the other stuff.

The.NET standard libraries WILL be accessible from Metro applications. You'll write your C#/VB metro applications targeting both WinRT APIs and standard.NET APIs at the same time. I suspect that very nearly all C#/VB metro apps will be using many.NET APIs.

(you had said that the.NET standard libraries wouldn't be available for Metro apps).

Whenever I want to throw together a really quick internal tool, and there isn't a really obvious template program I can use, the.Net framework really is great for:- drawing up a few texboxes and buttons- adding a property.settings var so it'll remember its state between uses- adding a bit of codebehind, doing some interactive debugging (change code as its running)- then sending it to the user and going through an iteration or two of quick fixes before adding it to our toolset.

Metro was just announced and the demand hasn't caught on, plus.NET is used for a lot more than home-end UI applications.

This post is akin to me hearing that a new form of candy has been developed and almost immediately asking, "The sale of chocolate is going up. There's a new kind of candy out there that needs much development and people are still eating chocolate... and more of it! What is going on?"

Even assuming Metro stuff was fundamentally not.NET, we are talking about a technology that isn't going to be in anyone's production environment for over a year or two. People have stuff to get done today.

The reason is that Metro has not yet proven itself, and companies are still holding on to the promises of.NET as a stable platform, write once run everywhere, universal look and feel, faster development, and security. That may or may not be the reality, but that's how it was pitched, and that's what the companies believe. They're not going to move their programmers over to a new platform that is unproven in these fields and sacrifice the experience in a platform that they have already invested their code

sounds pretty fucking stupid, no? of course they're looking for people with.net experience even if they're going to target that newfangled stuff. besides, it's new stuff, the old pro's should be able to pick it up. and wtf do you think the headhunters writing those proxy job adverts know? fucking nothing on top of a fuck nothing nottinghill notter.

C# and VB can target the WinRT runtime. "Metro" apps cannot use the full.Net Runtime but only a core of it (plus WinRT). HTML/Javascript and Managed C++ can also target WinRT to create Metro apps..Net will still be there for making non-Metro apps, as the Desktop is still there for running any sort of windows app you want. And Metro+WinRT simply isn't sutable for ALL apps, so there will continue to be a demand for all the other

Slashdot just did a survey, that asked whether readers would recommend Slashdot to others. Here is a perfect example of why I answered No to that question, and would have picked Hell No if that option had been in the survey. An increase in job postings for.Net is newsworthy on a "news for nerds" site. Totally ignorant, misinformed, clueless, stupid, arrogant and worthless editorializing, in the article and the headline, is not at all news for nerds, nor is it stuff that matters. Not only is the commentary about Metro completely wrong, so is the "home for newbies" slant. The linked article clearly indicates that more than 70% of resume searches in.Net are for developers with at least four years of experience. Obviously it's impossible to have four years experience with Metro, but it is entirely possible to have been using.Net for a decade now. The article has no mention at all of Metro. The article also mentioned an utterly ignorant, untrue, trite fear of.Net developers: that their skills do not carry over to other platforms. I guess this means a lot of fearful.Net developer who have never heard of Java? Where does Slashdot get the editors to approve this kind of junk?

Okay, if.NET is so awesome--why doesn't Microsoft itself use it? Neither Windows 7 or 8 were written in.NET. Office is not written in.NET.
You quote a statistic that Dice includes a lot more.NET positions than last year--but that's because the economy itself is picking up--not because there is any special need for.NET.
In fact, the opposite is true. In a word: Silverlight. You know that Metro is the way forward and Metro will not use Silverlight, which is already a second-class citizen in the Microso

1) If you write a windows (only) desktop app, I recommend c# over c++ for most scenarios (some high perf. things such as games excluded). The productivity is much higher.

2) Windows phone apps. You definitely need.NET here.

3) Streaming video apps for desktop. Html5 can't do it, and Silverlights video streaming beats flash every day of the week. Neither is excellent, and SL has terrible linux support. But still, SL is the least bad one.

Where are you getting $25/year for software development job? 20 years ago, even a kid fresh out of college would have made more than that. I know, because that's when I got my first development job, and I made more than that.

Microsoft has already lost the tablet market. And.NET is already a dying platform. Microsoft itself does not eat its own dog food. None of Microsoft's own products are written in.NET. Neither Windows nor Office were ever written in.NET. If Dice shows a 25% increase in.NET ads, that's because the economy is coming back and it does not imply some incremental improvement for.NET.

Look, isn't it obvious that.NET is simply transitioning from early mainstream to late mainstream? You can only conceivably call it a "dying" platform if your perspective is 100% early adopter, which is 100% not the perspective of business customers.

"Neither Windows nor Office were ever written in.NET" -- Yes, because the Windows, Development Tools, and Office teams are separate entities and none of them wants to restart from scratch. But new applications for Windows are another story. You can developn C++, C#, and very soon in... Javascript.:)

The full.Net framework is technically available. By default only a subset of is exposed to Metro-style apps because Metro is sandboxed, and the excluded APIs could potentially be used to subvert the sandbox. It is not difficult to use the full.Net API from Metro-style apps, but if you do that, your app will be summarily rejected from the Windows app store for using unauthorized APIs.