Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

Интерфейсы толстых клиентов -- как таковых, в вебе и вебе 3.D.

Максим Отставнов настаивает, что человеко-машинные интерфейсы (в том числе самого нижнего уровня -- где речь идет о безмодовости и прочих прелестях нажатий на отдельные кнопочки, а приложениями и не пахнет) крайне важны, и прорывные достижения возможны только с выходом за рамки "интуитивно понятных интерфейсов", подразумевающих намертво впечатанные в миллионы мозгов паттерны работы с форточками от M$.

Я подрядился указать ему на пару интересных разработок, на которые я наткнулся в своих изысканиях, что и делаю этим постом.

Идем на внучатый сайт того проекта, в котором когда-то появилось MVC (http://wiki.squeak.org/croquet/40) и читаем: Morphic is a replacement for the classic Model-View-Controller (MVC) that was originally developed in Smalltalk. Squeakers (led by Croquet architect Andreas Raab) are now developing a replacement for Morphic, called Tweak. А вот в (http://www.visoracle.com/squeakfaq/tweak-vs.html) говорится уже прямо: The base idea behind Tweak is simple: Combine the best of Morphic with the best of MVC.

Морфик позволял прямые манипуляции, но не помогал в абстрагировании. MVC хорошо отделял модель (предметной области) от графического представления, но в собственно графическом представлении никакого абстрагирования дальше не было. Твик использует абстракции и там и сям. Юзер просто "использует объект", но на самом деле он имеет дело с парой актер (модель) и его "костюм" (графическое представление). В отличие от MVC не нужно создавать view для каждого объекта. В отличие от Morphic костюмы у одного объекта можно менять. Кроме этого, в Твик есть еще несколько серьезных улучшений.

Интерфейсная жизнь не стоит на месте, инструментарий (отнюдь не стремительно) развивается. Чем еще интересен Tweak? Это сейчас часть Croquet, трехмерной коллаборативной среды. То есть в интерфейсы одновременно пришли 3D и разделяемость (share) при многопользовательской работе. Опять же, если считать Croquet представителем Web 3.D, то вопрос с веб-интерфейсом можно считать тоже снятым: пишите свои приложения в Croquet на Tweak и у вас будет то самое "будущее уже сегодня, только оно неравномерно распределено".

Веб-интерфейсы тоже не стоят на месте. Всяческие "движки" теперь должны поддерживать AJAX. Что из веб-движков становится модным? Например, Ruby on Rails. Медленный в работе, быстрый в разработке -- то, что всем нужно. Читаем во первых строках на http://www.rubyonrails.org/ -- Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern. А что про AJAX? Использование http://script.aculo.us/ -- библиотеки JavaScript, поддерживающей все интерфейсные хотелки в окне браузера. Но как

Снова идем в то место, откуда когда-то появились современные интерфейсы, и смотрим, нет ли там чего новенького. Сходу находим http://seaside.st/, демонстрирующий полную интеграцию Scriptaculous -- вот тут демо возможных интерфейсов http://scriptaculous.seasidehosting.st/?_k=mqxTBDbw&_s=SgYpTPlCiIWmSHzi. Но что с собственно интерфейсными концептами? Они, вестимо, настроены на реализацию возможностей толстых клиентов в вебе. Главная изюминка -- это управление сессиями. Вся пользовательская сессия может быть представлена как один кусок кода, с естественным линейным управлением ходом сессией. Страницы могут вызывать друг друга и возвращаться друг ко другу подобно подпрограммам. Сложные последовательности форм могут обходиться одним методом. Объекты передаются по ссылке, а не отправляются в URL или скрытые поля. Seaside полностью поддерживает backtracking и параллелизм, присущие веб-браузерам. Seaside -- это continuation server (разворачивающий контроль от клиента к серверу, прячущие бессистемное редактирование различных интерактивных полей в форме от для программиста, альтернатива модели Servlet, http://www.brainbell.com/tutorials/java/Continuation_Servers.htm). Попросту говоря, In Seaside, web application code looks like the code you'd write for a desktop application. Need to ask the user a question? Call a dialog, wait for it to return, and act on the result. Насколько я понимаю, эти continuation-сервера рассматриваются как одно из самых перспективных направлений в веб-девелопменте. Ибо continuations -- это про creating non-linear programs using a linear syntax (and we all think linearly (это цитата из http://blog.lostlake.org/index.php?/archives/7-Rails-and-Seaside-Two-new,-great-web-frameworks.html -- и там можно из комментов почерпнуть еще много интересного. Например, почему из Seaside в свое время был выкинут напрочь "язык шаблонов": HTML-шаблоны со вставками кода не поддерживают автоматизированный рефакторинг! А Smalltalk-код HTML-генератора -- поддерживает).

К Seaside написано некоторое количество расширений. Пример -- http://seaside.st/Community/Extensions/, но это отнюдь не все расширения. Так, многопользовательская объект-ориентированная база данных Magma (http://wiki.squeak.org/squeak/2665) и Seaside интегрированы (http://wiki.squeak.org/squeak/5817) -- как я понимаю, результат мало отличается от "типичного веб-движка", но на таком движке можно писать полноценные веб-приложения, а не только веб-сайты.

Примером такого использования Seaside служит тот же Gjallar, типичное database-backend web application (вот скриншоты -- http://www.gjallar.se/gjallar/8).

Про "промышленный веб" -- поглядите на http://dabbledb.com/, построенный на Seaside. Люди удивляются, что такую штуку можно сделать на вебе. Будем считать, что это из Web 2.1 ;)

Так что ситуация с интерфейсами отнюдь не стоит на месте.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 22 comments