пятница, 26 октября 2007 г.

WPF - конец Windows Forms?

Пошел на лекцию "An overview of WPF - the end of Windows Forms?" by Oliver Sturm. Это Оливер - серьзный чувак, MVP, работает в DevExpress (очень известная контора).

Слегка обманули - вместо Оливера вначале выпустили эксперта по безопасности, тоже MVP. Когда он рассказывал про атаки методами SQL injection и XSS, и я стал зевать: ну сколько можно, уже несколько лет во всех журналах про это пишут. Но тут он показал один обалденный пример. Я бы сказал, SQL Injection for Professionals :) В Web страницу он "впрыснул" хранимую процедуру MS SQL, которая запустила ASPX - страницу! В этой странице можно писать любой код на C# (или еще чем-то), который выполняется на сервере и имеет большие права доступа. Т.е. можно не просто вывести данные из таблицы или модифицировать их, а вообще все, что взбредет в голову. Потенциально можно читать/изменять/удалять файлы, слать емейлы, наверное, даже потушить сам сервер...

И еще меня заинтересовала идея использовать "динамические" роли. В .NET работа с ролями вроде как хорошо реализована. Но что если тебя интересует, скажем, не просто имеет ли сотрудник право работать со счетами клиентов (роль "Операционист"), а имеет он право работы с конкретным счетом 123456? Приходится в добавление к красивой role-based security писать дополнительную логику, которая расползается по проекту. Впрочем, это проблема не только дотнета. Так вот идея в том, чтобы вместо роли "Операционист" у тебя была роль "Операционист вот этого счета". Он показал свою реализацию этой идеи на ASP.NET - очень просто и понятно.

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

Главное, что я для себя отметил: широко используется привязка данных (data binding), и не только для баз данных, а вообще для всего. Это позволяет резко снизить размер сишарпного кода. И еще - парадокс: когда создавали ASP.NET, то пытались перенести в Web те идеи, которые используются в Windows-приложениях. А теперь наоборот - переносят идеи из ASP.NET в WPF. Все развивается по спирали.

Комментариев нет:

Ratings by outbrain