{"id":329,"date":"2007-09-19T07:44:35","date_gmt":"2007-09-19T06:44:35","guid":{"rendered":"http:\/\/www.itwriting.com\/blog\/?page_id=329"},"modified":"2007-09-19T07:44:35","modified_gmt":"2007-09-19T06:44:35","slug":"scott-guthrie-on-net-futures","status":"publish","type":"page","link":"https:\/\/www.itwriting.com\/blog\/articles\/scott-guthrie-on-net-futures","title":{"rendered":"Scott Guthrie on .NET futures"},"content":{"rendered":"<p>Tim Anderson interviews Scott Guthrie, a General Manager within Microsoft&#8217;s Developer Division.\u00a0Guthrie runs the development teams that build CLR, ASP.NET, WPF, WPF\/e, Windows Forms, IIS 7.0, Commerce Server, .NET Compact Framework, and the Visual Studio Web and Client Development Tools. The interview took place at the Mix07 conference in London in September 2007.<\/p>\n<p>Topics include LINQ, Silverlight, the cross-platform CLR, and new features in ASP.NET.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"479\" src=\"http:\/\/www.itwriting.com\/images\/scott_guthrie_mixuk.jpg\" alt=\"Scott Guthrie at Mix UK\" height=\"257\" style=\"width: 479px; height: 257px\" title=\"Scott Guthrie at Mix UK\" \/><\/p>\n<p><em><small>Scott Guthrie<\/small><\/em><\/p>\n<h2>LINQ [Language Integegrated\u00a0Query]\u00a0<\/h2>\n<p><strong>What are the advantages of LINQ for the developer?<\/strong><\/p>\n<p>SG: LINQ at a high level is about making querying of data a first class .net concept.\u00a0In most applications, at least half of what we do is querying data.\u00a0LINQ gives the ability to dramatically reduce the amount of data code, to more cleanly express your intent, and not be spending time managing connections and translating between objects.<\/p>\n<p>A lot of people ask whether LINQ means not using stored procedures any more. The whole stored procedures vs. dynamic SQL is a great religious debate with valid reasons and arguments on both sides.\u00a0The nice thing about LINQ to SQL and LINQ to Entities is that they both support the ability to retrieve data using stored procedures, as well as to update, insert, and delete data.<\/p>\n<p>As a developer you design your data model first, add your business rules, and then at a later point you can decide whether your persistence is going to be done with dynamic SQL or stored procedures. If you want to use dynamic SQL you don\u2019t have to write any code, but if you really want to go through stored procedures you can.<\/p>\n<p><strong>What are the security implications of LINQ?<\/strong><\/p>\n<p>SG: LINQ is a type-safe way to do data query, so when you work with a product name, you know it\u2019s a string and when you work with the unit price you know it\u2019s a nullable decimal and so on. There is no way to inject \u201cDROP TABLE\u201d or something like that into the unit price because LINQ to SQL says wait, this is a decimal. You don\u2019t have to worry about SQL- encoding things manually, it\u2019s all done for you.<\/p>\n<p><strong>What about the performance implications of LINQ?<\/strong><\/p>\n<p>SG: Rico Mariani <a target=\"_blank\" href=\"http:\/\/blogs.msdn.com\/ricom\/\">on his blog<\/a> has a pretty good series that covers LINQ to SQL performance, comparing it to a raw datareader. In his benchmarks LINQ to SQL was about 85% of a raw datareader. Typically people aren\u2019t working with raw datareaders, they\u2019re creating their own objects and collections and at that point it does become minimal.<\/p>\n<p>In general with any abstraction the two things you want to look at are:<\/p>\n<ol>\n<li>Is the abstraction the right abstraction for what you are trying to do?, and<\/li>\n<li>Is the abstraction worth the performance hit you are going to take?<\/li>\n<\/ol>\n<p>I\u2019d say I think LINQ is definitely a good abstraction, and worth the performance hit even if it is going to be a 10-15% slower than the raw, most optimized code. ASP.NET and .NET are pretty darn fast as it is.<\/p>\n<p><strong>LINQ to SQL is currently SQL Server only. Is this a plot to get us all using Microsoft\u2019s database server?<\/strong><\/p>\n<p>SG: No. The LINQ technology works with any data provider, so today there\u2019s LINQ to NHibernate, which works with Oracle, DB2, MySQL and Access. Frans Bouma just announced LINQ to <a target=\"_blank\" href=\"http:\/\/www.llblgen.com\/defaultgeneric.aspx\">LLBLGen<\/a>, his commercial object\/relational mapper for .NET, and we\u2019re going to be shipping LINQ to Entities next year, which has a provider model, and for which we already have a SQLite and a MySql provider. You\u2019ll be able to use LINQ with any database out there.<\/p>\n<p><strong>Is Microsoft going to certify third party providers?<\/strong><\/p>\n<p>SG: I think it will be up to the database manufacturer to certify it. Frankly if Oracle or IBM bless a provider for an Oracle or IBM database, that would be better than if we did. But we\u2019re working very closely with the manufacturers.<\/p>\n<h2>ASP.NET<\/h2>\n<p><strong>What\u2019s the thinking behind bringing MVC to ASP.NET?<\/strong><\/p>\n<p>SG:\u00a0We\u2019ve seen demand for an MVC framework on two fronts. One is for even more testability, having the ability to completely mock-up a request. We\u2019ve also always seen with ASP.NET that some people like having the server control, postback model; some people say, \u201cI just want absolute control.\u201d<\/p>\n<p>The MVC framework we\u2019re coming up with is a fairly simple MVC model, it\u2019s very clean, it\u2019s a front controller model, and it integrates very well into ASP.NET so you can use ASP.NET forms authentication, session state, security, personalisation, caching, all the standard features, but with an alternative to the postback model where you have a more traditional controller-view separation and have complete control over your HTML.<\/p>\n<p>The other thing is that for the view, you can use .aspx templates, master pages and all the Visual Studio tool features. It integrates nicely into ASP.NET and preserves everyone\u2019s investment. You can have a single app that has both pages built with MVC and pages built with postback. People can choose.<\/p>\n<p><strong>What is in ASP.NET that integrates with Silverlight?<\/strong><\/p>\n<p>SG: We\u2019re coming up with several features. You can use Silverlight with any back-end technology, but we\u2019re going to make sure that there\u2019s great ASP.NET integration. There are some ASP.NET server controls that help with using Silverlight inside a page. We have an <a target=\"_blank\" href=\"http:\/\/quickstarts.asp.net\/Futures\/Silverlight\/default.aspx\">ASP XAML control, and an ASP.net Media control<\/a>. We also have support for web services, so you can call back to the server from a Silverlight app, and easily remote data back and forth. All the ASP.NET security and personalisation features work with Silverlight. Those are the ones to begin with, and over time we\u2019ll have much more.<\/p>\n<h2>Offline web applications<\/h2>\n<p><strong>Offline is a weakness in the Microsoft web application story, Google has Gears, Adobe has AIR, is Microsoft planning anything?<\/strong><\/p>\n<p>SG: We have a much stronger offline story than they do. One of the things that we shipped earlier this year is the SQL compact edition, which is a one megabyte database engine, free of charge.<\/p>\n<p><strong>But this is Windows only, right?<\/strong><\/p>\n<p>SG: Correct. But how does offline work? What does offline mean? If you close your browser, is your data saved, or not? If you\u2019re filling out your expense report on a plane, and you clear your cache, did you lose your expense report or not? Those types of issues are ones that honestly no one has a good answer for. Certainly not Google Gears. Silverlight does give you offline data, but we\u2019re being very careful to set expectations that this isn\u2019t the be all and end all offline story. Developers will use our caching infrastructure and offline stuff, but we\u2019re not going to try and do the guarantees that enterprise apps need, in order to build offline apps.<\/p>\n<p>What we are doing right now is with SQL Compact Edition, a transacted database, that has very explicit policy management, and that can be easily distributed and put inside the app. It\u2019s very explicit how synch works, and very explicit when you close an app what happens. We feel comfortable saying that is a great offline story.<\/p>\n<p><strong>But we\u2019d need a WPF or Windows Forms app to use that?<\/strong><\/p>\n<p>SG: Correct, or any .NET app. It also works on mobile devices, it\u2019s built into the new editions of Windows CE and mobile. So for enterprise apps, that\u2019s a much better story.<\/p>\n<p><strong>So the idea of this web application where you can use it online and offline, and it\u2019s fairly seamless and synchs up, that\u2019s not something Microsoft feels is feasible?<\/strong><\/p>\n<p>SG: I think it is going to happen. But Google Gears has been pretty beaten up by the community. It\u2019s asked, \u201cHow does Gmail work offline?\u201d and right now there\u2019s no answer, it doesn\u2019t.<\/p>\n<p>You can certainly use Google Gears with Silverlight. But the thing that we\u2019re going to see with FireFox and IE is to provide more of a user model. So you could indicate, when the browser gets closed and you have some unsaved state, how do I prompt the user? You as a user can choose how much data to give a site, and when you\u2019re going to clear it or not. You can choose who gets permission to see it. They\u2019re not super hard problems, but those are the things browsers need. At that point you could build a great offline solution.<\/p>\n<p>I\u2019ve been talking to a lot of people who say, \u201cCan you do offline?\u201d Well you absolutely can. It\u2019s just that it\u2019s better to under-promise and over-deliver, than to over-promise and under-deliver. Google Gears sounded great and turned out to be a lot less than they thought, whereas if the same technology had been a little bit undersold, people would have been much happier with it.<\/p>\n<p><strong>What about the idea of taking Silverlight out of the browser?<\/strong><\/p>\n<p>SG: You can. You can run Silverlight in your own custom browser host, people are doing it. You can host Silverlight inside a dashboard or sidebar. The challenge is that when you\u2019re saying this is a client application, people\u2019s expectations are very high. The menu structure should look identical to the other applications on the system, the toolbar should match Windows, or match Mac. Increasingly on Windows you\u2019re going to want a ribbon control.<\/p>\n<p>We\u2019re not going to try and claim that this is automatic with Silverlight.<\/p>\n<p>If you want to have the richest desktop experience it does require significantly more than what\u2019s going to be in AIR. We have a great solution with the full .NET framework, and with Silverlight we have a great cross-platform solution for browser-based apps.<\/p>\n<h2>Cross-platform Silverlight<\/h2>\n<p><strong>How significant is the agreement with Novell\/Mono over Silverlight\/Moonlight?<\/strong><\/p>\n<p>SG: We\u2019ve had a relationship with Novell for about a year. The approach that we\u2019re taking with Silverlight is interesting in that we are actually shipping some product on Linux, which is the Silverlight media codecs. So that is a very big step. Where the Silverlight deal is also unique is that we are going to be supporting the Moonlight project on all flavours of Linux, whereas in the past it\u2019s typically been with just a few distros.<\/p>\n<p><strong>Is there going to be a test suite to certify that Moonlight is working as expected?<\/strong><\/p>\n<p>SG: We\u2019re going to be giving the Moonlight project all of our test suites that we use internally, and all of our specs. It\u2019s not a formal certification, it\u2019s what we use to test the product ourselves. We want to make sure we have a highly compatible implementation.<\/p>\n<p><strong>Will you ensure that it is feature by feature parallel, that there\u2019s nothing that\u2019s going to work on Windows that will not work on Linux?<\/strong><\/p>\n<p>SG: That\u2019s the point, yes. Ultimately, with Silverlight we want to have a great web client experience and you can\u2019t have a great web client experience that only runs on 80% of machines. One of the things we did with our Mac port is we didn\u2019t release any features that didn\u2019t work on the Mac. We had some early features that were working on some browsers and not others, and we said, those features will not ship in this upcoming CTP or beta, until it works the same everywhere. People see we\u2019re pretty serious about cross-platform.<\/p>\n<p>I\u2019ve seen comments from Mac users that have used the Silverlight 1.0 release, say for the Halo 3 streaming video, to the effect that \u201cI didn\u2019t think video on the web worked this well, and I\u2019m pretty shocked that when I right-clicked on the control it says Microsoft.\u201d<\/p>\n<p>As a company we need to build our credibility in that space. That\u2019s why we\u2019re in the Novell Moonlight project. Cross-platform is important and having a quality implementation is very important.<\/p>\n<h2>Cross-platform CLR<\/h2>\n<p><strong>With the full .NET CLR, the Compact Framework, and now Silverlight, is the number of .NET runtimes getting hard to manage?<\/strong><\/p>\n<p>SG: We only have two implementations, two source trees. The desktop framework and Silverlight are the same today. We build from one source tree and compile to both.<\/p>\n<p><strong>Although you end up with two separate installations on your machine?<\/strong><\/p>\n<p>SG: Correct. But the architecture is 100% the same, the source tree is actually the same. That means any innovation in code generation or garbage collection we make in one CLR branch affects both.<\/p>\n<p>For mobile devices there\u2019s a separate set of\u00a0issues. It\u2019s about battery life and CPU power. You make trade-offs and decisions differently. For those types of environments, we use the compact framework because it is tuned specifically for that.<\/p>\n<p><strong>So there will be code sharing between the compact framework and Silverlight?<\/strong><\/p>\n<p>SG: For Silverlight on Mobile, there\u2019ll definitely be code sharing. We also share some code between the compact framework and the desktop CLR, so it\u2019s not like they\u2019re completely separate.<\/p>\n<h2>Silverlight versus WPF [Windows Presentation Foundation]<\/h2>\n<p><strong>Does Silverlight mean that XBAPs [browser-hosted WPF applications] are no longer necessary?<\/strong><\/p>\n<p>SG: No, I think they still are interesting. I think generally when you want to run in the browser, there\u2019s a couple of reasons to do it. One is you want the maximum possible consumer reach. There Silverlight makes more sense, because that with the Linux deal that will run on every desktop operating system. There are other scenarios where you want the richest possible experience, but you still want to deliver it in the browser. And that\u2019s where XBAPs do make sense. For enterprise apps, and for software as a service subscription based apps, I think XBAPs make a lot of sense.<\/p>\n<p>One of the nice things is that the code you write for SIlverlight is upwards compatible with WPF. We are hearing a lot of interest from ISVs who want to able to maintain a single code base, and have the broadest possible client reach, and at the same time have a super-depth client offering that frankly 95% of the customers will buy.<\/p>\n<p><strong>Is WPF meeting Microsoft\u2019s expectations in terms of adoption?<\/strong><\/p>\n<p>SG: Yes, I think we\u2019ve had 300 or 400 ISVs actually shipping apps. There\u2019s a long list of apps that are about to go live, and we expect to see a lot more announcements in the next 6 months.<\/p>\n<p>Our Expression suite of products are built using WPF. It\u2019s a powerful statement when you build your own tools on top of it. There are other Microsoft products that haven\u2019t been released yet that are built with WPF.<\/p>\n<h2>Release dates<\/h2>\n<p><strong>What\u2019s the timescale for the release of Silverlight 1.1?<\/strong><\/p>\n<p>SG: We haven\u2019t publically committed to a date. We have said it\u2019s next year [2008], for both the runtime and the tools.<\/p>\n<p><strong>How does this relate to the release of Visual Studio 2008?<\/strong><\/p>\n<p>SG: Visual Studio 2008 itself will ship later this year [2007], and officially launch in February 2008.<\/p>\n<p><strong>So the Silverlight piece will be an add-on?<\/strong><\/p>\n<p>SG: Yes. We\u2019ll have a separate add on to VS 2008 for Silverlight.<\/p>\n<p><strong>What are the new features in ASP.NET?<\/strong><\/p>\n<p>SG: They will include new ASP.NET AJAX features, ASP.NET features for Silverlight, dynamic data controls and features for making quick data access apps, the MVC framework, and REST-based data support. Those are the current set of features. It will be released next Spring.<\/p>\n<p>In general we are trying to avoid giant sea changes and instead have fairly regular updates of new features, and have VS 2008 be able to do multi-targeting, so customers can choose to upgrade the tools, but keep the runtimes older. That\u2019s a good blend where customers can move at their pace but also have some predictability and some regularity.<\/p>\n<p>If you look at job postings, if you look at active site growth, .NET is now in theory the most popular server side technology for web apps, you can measure it different ways, but there\u2019s three or for different indexes that have it number one. If you look at client development, with Windows forms and WPF, we have a great desktop story. And now with Silverlight we have a great RIA story. The combination of having the three of those with a common .NET programming model that lets you use whatever language you want, VB, C#, Python, Ruby, Javascript, a common set of APIs to work with, and then be able to use Visual Studio Expression, I think is a pretty powerful opportunity.<\/p>\n<h2>Microsoft versus Adobe<\/h2>\n<p><strong>Do you think people will switch from other technologies to Silverlight, with the new cross platform abilities?<\/strong><\/p>\n<p>SG. From a pure developer perspective, there isn\u2019t that big a developer base outside the Microsoft platform for the client today. There\u2019s Flash from a media perspective, and from an interactive designer perspective there\u2019s absolutely a lot of people there, but Flash is very distinct from Flex, and they\u2019re not compatible. So Flash designer doesn\u2019t understand Flex, and Flex developer doesn\u2019t understand Flash. The Flex total developer population, I think Adobe\u2019s estimated at 20,000 developers, six months ago. Our client application development base at Microsoft is in the 7, 8 million range. We certainly want those 20,000 developers to move on to Silverlight, but it isn\u2019t essential to our success.<\/p>\n<p><strong>Those figures might be different if you just looked at web development.<\/strong><\/p>\n<p>SG: For web developers, we probably have 50 per cent. Flex is probably a twentieth the size of the ASP.NET developer base. I don\u2019t mean to minimize it, but we\u2019re going to have a really compelling offering with Silverlight that\u2019s richer and we\u2019ll have better tools and language support. The fact that there\u2019s healthy competition in this space brings out the best of both.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tim Anderson interviews Scott Guthrie, a General Manager within Microsoft&#8217;s Developer Division.\u00a0Guthrie runs the development teams that build CLR, ASP.NET, WPF, WPF\/e, Windows Forms, IIS 7.0, Commerce Server, .NET Compact Framework, and the Visual Studio Web and Client Development Tools. The interview took place at the Mix07 conference in London in September 2007. Topics include &hellip; <a href=\"https:\/\/www.itwriting.com\/blog\/articles\/scott-guthrie-on-net-futures\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Scott Guthrie on .NET futures<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2036,"menu_order":200,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-329","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/pages\/329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/comments?post=329"}],"version-history":[{"count":0,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/pages\/329\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/pages\/2036"}],"wp:attachment":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/media?parent=329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}