Cross Platform C#

Microsoft Opens Up: A Q&A with Scott Hanselman

Microsoft has been running full steam ahead with its "open" development process. So what does it mean to those developing across disparate platforms? Scott Hanselman explains.

In November 2014, Microsoft made a number of announcements regarding the "open sourcing" of many of the features in the .NET Framework and ASP.NET. Given that Greg Shackles and I focus on cross-platform development in this column, we recently asked Scott Hanselman to offer his perspective of the efforts Microsoft is making regarding cross-platform from the standpoint of the ASP.NET team.

Many thanks to Scott for taking time from his busy schedule to answer our questions.

Q: Microsoft announced that it will be possible to run ASP.NET apps on Linux and Mac as well as Windows Server. This had to be a rather large engineering undertaking for the ASP.NET group as well as the .NET runtime group. What were some of the technical challenges that had to be overcome? How big of an engineering effort was this?

Scott Hanselman: It's not done yet, but it's going to include a huge amount of people as well as external help from the mono team to understand how things can be built.

The most interesting part is the removal of internal build tools and the use of off-the-shelf existing build tools. The goal is being able to do a basic git clone and then configure and build. That is the out-of-the-box experience for new developers.

People should and will be able to build their own CLR.

Q: There are a lot of pieces to ASP.NET. Are there any features that developers will not be able to run on Linux or Mac? Will there be any limitations that developers should be aware of? For example, some of us have customers that are running Web Forms applications; will these Web Forms apps run on any other platform besides Windows?

A: We haven't gotten that far. A lot of that will depend on how the Mono team comes in. Of course when there are libraries that use underlying Windows things like system.drawing, that won't work. In fact it doesn't work today, because those libraries don't even exist in the new core world. As for Web Forms, that will not work because that's not supported on core as system.web doesn't exist.

Q: I work with some designers that are just adamant that they are going to use their Macs for everything. Will there be any tooling support from Microsoft, or a third party, that can help designers on the Mac and developers in Visual Studio to live together in peace and harmony?

A: To be decided, but we already have a few Microsoft people working on the Omnisharp team, so they will certainly be able to pick their own editors.

Q: The opening up of the .NET Core and Runtime to run as a bundle with an app is a really amazing piece of technology. As I understand this, I can build an ASP.NET app, bundle it with .NET Core/Runtime, and deploy it without fear that another application will cause any issues. How does this bundling work? How will apps not interfere with each other?

A: Each app will have its own private build of the .NET CLR and supporting libraries, and each app will have its own individualized base class library in the form of NuGets.

Q: Over the last few years, we've seen other platforms become important to customers. For that, developers have created Phonegap/Coredova as well as Xamarin's iOS and Android products. Visual Studio is an incredible development tool. How has Visual Studio been updated to take advantage of Phonegap/Cordova as well as Xamarin? Any interesting stories or features that we should know about?

A: That's outside of my scope, but the stuff for Cordova added using public extensibility points just as support in Visual Studio for node, iPhone, and even Arduino from third parties. It uses public bits, open source, and extensibility model that Visual Studio already has.

Q: We hear about lots of cooperation with Xamarin in this cross-platform space. What are other things that Microsoft is doing to improve cross-platform development with other vendors? Are there other things that we don't hear about that we should?

A: We're doing almost everything out in the open now, so you can see conversations with Docker and lots of other open-source projects in the GitHub issues. Largely, the days of closed-door dealing is over.

For more insight, check out this post from Scott Hanselman; and also read this post from S. Somasegar on the open sourcing of .NET Framework.

About the Author

Wallace (Wally) B. McClure has authored books on iPhone programming with Mono/Monotouch, Android programming with Mono for Android, application architecture, ADO.NET, SQL Server and AJAX. He's a Microsoft MVP, an ASPInsider and a partner at Scalable Development Inc. He maintains a blog, and can be followed on Twitter.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube