Pull to refresh

Интервью с Дмитрием Робсманом, создателем ASP.NET

Reading time7 min
Views2.7K
Дмитрий РобсманДмитрий Робсман работает в главном офисе Microsoft в Редмонде уже 12 лет. Он был первым разработчиком в команде ASP.NET. Был менеджером в команде динамических языков (DLR, IronPython, IronRuby) и в команде Visual Studio, где работал еще и над C#, VB.NET и F#. Среди его известных личных проектов — веб-сервер Cassini, полностью написанный на управляемом коде, и ASP.NET RSS Toolkit.

На «Платформе» его появление началось долгими аплодисментами. Инженер в джинсах и бейсболке, человек, увлеченный своим делом по-настоящему и понимающий его до мельчайших деталей. Я попросил его ответить на вопросы, которые хотели задать ему вы.

Меня просили передать вам благодарность за вашу работу. Люди говорили, что ASP – одна из сильнейших сторон .NET.

Спасибо! Очень приятно такое слышать :)

Вначале особый вопрос: почему вы работаете в Microsoft?

В Microsoft главное – это люди. Здесь всегда есть у кого поучиться чему-то новому. А в небольших компаниях у личного роста есть свой потолок. К тому же, мне нравится, что моя работа приносит пользу миллионам людей. Здесь я могу делать что-то, что на самом деле изменяет мир.

Планирует ли Microsoft сама портировать ASP.NET на другие платформы?

ASP.NET может хоститься где угодно, хоть и был сначала создан для IIS.

На какие существующие технологии опиралась разработка ASP.NET, помимо предшествующих разработок самой Microsoft? Поскольку прослеживаются прямые и близкие аналогии со стандартами мира Java, вроде JSP и JSF, хотелось бы знать, как эти технологии повлияли на развитие ASP.NET, сравнимы ли они сегодня?

JSP начался, насколько я знаю, уже после Classic ASP. По сути, JSP – это как раз Classic ASP+Java. А конкурент ASP.NET – это, безусловно, PHP.

Сложно сказать на что конкретно мы опирались. Но JSP точно не внес большого вклада. Многие идеи циркулируют в воздухе давно. MVC вот был очень давно. А в работе над ASP.NET мы сначала выучили и усвоили уроки Classic ASP, над которым я сам тоже работал. Мы переписали гору кода, сделали кучу итераций с разными идеями и подходами. В начале, это было 9-10 лет назад, язык базировался на XSLT. Над основой — над pipeline’ом, над кэшированием, масштабированием — мы строим MVC, WebForms и т.д.

Как устроен процесс планирования и проектирования таких масштабных концептов, как ASP.NET? Как вы обсуждаете столь значительные задачи и обмениваетесь мыслями в условиях большой команды?

Вообще все идеи, как правило, появляются в головах отдельных специалистов. Потом люди просто общаются между собой без каких-то особых формальностей, и одно за другим – разивается весь большой проект.

Моя команда работает в основном над ASP.NET. ASP.NET Data Services – это уже другая команда, Azure – другая, Silverlight – тоже. Но есть проекты, которые создаются множеством разных команд. Мы общаемся с ними со всеми и вместе движемся вперед. Кроме того, есть продуктовые группы, с которыми мы тоже много общаемся и обмениваемся идеями. Это Sharepoint, например.

У нас появляется много идей, какие-то отсеиваются, а какие-то получают развитие. Вообще, программисты разделяются на два типа относительно того, как они воспринимают ценность своей работы, как они видят ситуацию, когда написали много кода, но их идею решили не включать в выпуск.

Один будет защищать плод своего труда и пытаться пропихнуть его любым способом. А другой будет рад, что выяснил – вот это нам не нужно, значит зайдем с другой стороны. Я принадлежу скорее ко второму типу. И если в процессе работы наша команда приходит к результату, который помогает нам понять, что мы что-то где-то сделали не так, мы этому рады.

Существует ли многолетняя концепция развития C# и платформ, или фичи добавляются по мере обстоятельств, которые складываются вокруг веб-разработки?

Языки в Microsoft развиваются не вслед за приложениями. Есть академическая сторона C# — команда развивает его именно как язык программирования. Да, конечно многолетняя концепция существует, но через год она может отличаться от той, что есть сейчас :)

Почему обновления платформы и языков выходят так часто? Стоит ли ждать версии 4.5 через полгода после 4.0?

Изменения в любой технологии сначала происходят в быстром темпе, а потом он замедляется и становится стабильным. Со временем все важнее, чтобы добавление нового не сломало что-то старое.

И я не думаю, что мы опережаем рынок. Конкуренция движется очень быстро. Сколько версий PHP вышло за последнее время? У нас очень большой продукт, наверное поэтому кажется, что выходит слишком много обновлений. Но вот у LINQ проектная стадия длилась 3 года – не так уж и быстро.

О порядке выхода и нумерации будущих версий Framework’a я пока не знаю, но Service Pack точно долго ждать не придется.

Каким вы видите будущее С#? В какую область MS планирует его продвигать: в веб или в настольные приложения? Планируете ли в следующих версиях ввести практику раздельного выпуска релизов платформы для desktop’ов и для веба, например?

В предыдущих версиях C# и VB LINQ был чем-то новым, чего еще не было в языках программирования. В версии 2010 мы добавим больше динамических фич в C#. Еще дальше в будущем мы сделаем что-то по концепции Compiler as a Service.

Проблемы у настольных и веб-приложений общие. Да, какая-то «вилка» была бы логичной, но на самом деле провести границу между desktop и вебом не так просто. Графика, например, может обрабатываться и на клиенте и на сервере, как и другие данные. И там и там это делается одинаково, поэтому разработчик везде может легко применить свои знания и опыт. Разделить эти области так, чтобы не навредить и не сделать лишнего – это сложно…

А есть ли у «фич» авторы? Например, кто предложил лямбда-выражения, экстеншен методы? Кто ввел LINQ?

LINQ придумал Эндерс Хэйлсберг. Лямбда и экстеншены придумали в его команде, которая работала над LINQ.

Каковы основные причины внедрения динамических конструкций в ASP.NET?

Нам бы просто хотелось, чтобы ASP.NET был ответом на все проблемы пользователей. В последнее время динамические конструкции получили второе дыхание. И для интернета их применение в какой-то степени имеет смысл. Да, у них есть как свои плюсы, так и минусы. Но если люди хотят их использовать, мы хотим, чтобы они делали это с помощью ASP.NET.

Когда выйдут релизы IronRuby и IronPython, будут ли они включены в поставку Visual Studio (2010?) или будут отдельным продуктом?

Границы между поставкой «с Visual Studio» и «отдельно от Visual Studio» стираются. Мы будем, например, включать в поставку VS jQuery. Мы просто концентрируемся на том, что нравится людям. IronPython и IronRuby не войдут в бокс с 2010. Хотя Python опережает Ruby и, наверное, положить его в коробку было бы логично. Его используют даже некоторые продукты Microsoft.

Когда планируется выпустить релиз MVC ASP.NET? Существуют ли реальные примеры APS.NET приложений, в которых используется Entity Framework?

Бета уже вышла, а финальный релиз – это дело считанных месяцев. Я очень удивлюсь, если релиз случится позже первого квартала будущего года. Степень готовности мы определяем по отклику пользователей. А они говорят, что уже довольны. Хотя и есть еще кое-какие доработки у нас в планах.

Ну а Entity Framework появился только в SP1, так что ждать каких-то больших проектов пока рано. Но, например, фреймворк был использован компаниями JM Family для разработки большого приложения по работе с информацией об автомобилях и компанией Sunguard для создания компонентов для корпоративных приложений.

Какое место MVC занимает в стратегии развития платформы в целом (эксперимент, альтернатива или перспективная технология)?

На самом деле, многие не знают, что MVC появился не недавно. Ему уже почти 30 лет! Просто в последнее время этот подход стал популярным. Пакеты для ASP.NET, которые делали MVC, существовали, но не были на слуху. ASP.NET начинался с WebForms, который еще живет. Но есть крепкое меньшинство, которое WebForms не любит  – для них мы и делаем MVC. То есть причина его появления в ASP.NET – просто наличие спроса. И люди довольны.

Конечно это больше, чем эксперимент. Это альтернатива WebForms и перспективная технология. Пока мы планируем, что будет и MVC и WebForms, и поможем любителям и того и другого.

А вообще, я заметил, что любая организация, в которой есть хотя бы десяток программистов, всегда стремится создать свой фреймфорк. Потому что это просто интереснее :)
Скажите, насколько сложно будет взломать сайт построенный на MVC (особенности обработки параметров запросов фреймворком)?

Безопасность сайта, построенного на MVC, зависит от того, как написан этот сайт :) На самого разработчика тут ложится больше ответственности. Но мы конечно над этим много думаем, делаем утилиты для страховки от глупых ошибок. Каждая новая фича проходит процедуру моделирования угроз. Но над архитектурными вопросами все равно надо работать вам. Безопасность – это процесс, а не результат.

На сегодняшний день мало информации о языке F#. Некоторые вещи из C# не получается сделать просто потому, что соответствующий синтаксис нигде не описан. Единственный работающий путь — задавать вопросы самому Дону на его сайте. Когда более-менее полная документация начнёт появляться в MSDN?

Это не совсем верно, каналы связи с командой есть и писать лично Дону не обязательно. Да и на MSDN есть раздел по F#. Он будет включен в Visual Studio 2010, поэтому информации достаточно. Но если есть какие-то вопросы, на которые нигде нет ответа, пишите мне — на dmitryr @ microsoft.com.

Вопрос про Silverlight. Очень хочется использовать его вместо Flash, но есть проблемы с переносимостью. Понятно, что есть Mono, но он все еще сырой, и, насколько я понимаю, гарантированно будет работать только под Novell'овским Linux'ом. Есть ли какая-то устремленность в сторону расширения переносимости?

Устремленность есть в сторону мобильных платформ – телефонов и т.д. Mono – да, наверное он еще сырой. Но Мигел (Miguel de Icaza) работает над ним очень активно. Мы безусловно хотим, чтобы Silverlight был на всех платформах. И думаю, Мигел для этого сделает все возможное. Мы, честно говоря, даже не думали о том, чтобы делать чтото сверх того, что делает он :)

Будет ли работать ASP.NET на ОС Server Core? Какие СУБД будут доступны на этой ОС, будет ли специальная версия SQL Server? Или все ограничится Compact SQL-ем?

Да, с Server Core работать будет. Это же платформа для веб-приложений. Я не знаю точно какая версия SQL там будет. Но вот .NET будет точно — мы над этим сейчас работаем.

Как будет выглядеть JavaScript через несколько лет?

В развитии Rich Internet Applications есть две тенденции:
— браузеры делают все;
— часть вещей, которые браузер делать не может, делаются на стороне – как в Silverlight и Flash, например.

Какой подход победит – сложно сказать. Мы поддерживаем и JavaScript и Silverlight, нам это все очень важно. Важно, чтобы при любом подходе все работало быстро и стабильно, и мы в это много вкладываем.

Script#. Появится ли Google Web Toolkit от Microsoft?

Интересный вопрос. Вместе с Silverlight мы делаем IronRuby и IronPython, которые каждый может использовать в свое удовольствие. Точно так же, как и некоторые другие языки – внутри браузера с Silverlight вы можете обрабатывать и их. Но вообще транслированный код очень сложно отлаживать. Поэтому сейчас я не могу сказать, что мы планируем что-то подобное GWT…

Чем порадует Visual Studio 2010 с точки зрения разработки client-side?

Еще раз скажу, что пока слишком рано, чтобы уверенно перечислить конкретные вещи, которые войдут в Visual Studio 2010… Но, например, будет WPF Control Toolkit – много всяких разных Controls для WPF.

Вот такое получилось интервью. Живое общение с такими профессионалами, как Дмитрий – на самом деле настоящее удовольствие. И надеюсь, что подобные встречи нам удастся делать регулярно.
Tags:
Hubs:
+48
Comments47

Articles