Ильшад Хабибуллин — bluebream

12

Click here to load reader

Upload: yury-yurevich

Post on 15-Jun-2015

1.931 views

Category:

Technology


0 download

DESCRIPTION

Ильшад Хабибуллин расказывает о веб-фреймворке BlueBream на базе ZTK.

TRANSCRIPT

Page 1: Ильшад Хабибуллин — BlueBream

BlueBreamвэб-фреймворк

http://margincon.ru Омск, 26.06.2010

Ильшад Хабибуллин

Page 2: Ильшад Хабибуллин — BlueBream

Базисидеи, ведущие к появлению BlueBream

Over-engineeringчерез предвосхищение

Расширяемость какнеобходимое условие

➔ ООП иерархии➔ Код для вставки хуков➔ Лишние абстракции➔ Написание библиотеки фреймворков на ровномместе

Есть такие проекты, где этонеобходимо

➔ Проекты с постоянно изменяемыми требованиями➔ Расширяемые продукты

КОНФЛИКТ

Page 3: Ильшад Хабибуллин — BlueBream

Вынос over-engineeringна сторону

Over-engineeringчерез предвосхищение

Расширяемость какнеобходимое условие

➔ ООП иерархии➔ Код для вставки хуков➔ Лишние абстракции➔ Написание библиотеки фреймворков на ровномместе

Есть такие проекты, где этонеобходимо

➔ Проекты с постоянно изменяемыми требованиями➔ Расширяемые продукты

Тулкит

Page 4: Ильшад Хабибуллин — BlueBream

ZTK• Launchpad• Shooltool• Plone• ERP5• ...

BlueBream➔ Быстрый старт➔ Конфигурации по умолчанию➔ Интегрирующая документация

Инфраструктура,интеграция инструментов в

фреймворк

Page 5: Ильшад Хабибуллин — BlueBream

● Интерфейсы● Реестры компонент:

глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

Важные идеи BlueBream

Page 6: Ильшад Хабибуллин — BlueBream

● Интерфейсы● Реестры компонент: глобальные и

локальные

● Компонентная архитектура, основанная на адаптерах

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

from zope.interface import Interface, Attribute, implements

class IFoo(Interface): bar = Attribute("Bar attribute") def baaz(): """Doc string"""

class Foo(object): implements(IFoo)

bar = None

def baaz(self): pass

Page 7: Ильшад Хабибуллин — BlueBream

● Интерфейсы

● Реестры компонент: глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

class Foo:implements(IFoo) Реестр

class Foo:pass

Python объекты становятся компонентамитогда, когда они зарегистрированы вреестрах компонент

ЗАПРОC:

● interface● name

Выбирает компоненты

Page 8: Ильшад Хабибуллин — BlueBream

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

● Интерфейсы

● Реестры компонент: глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

class IPerson(Interface): name = Attribute("Person Name")

class Article2Person(object): implements(IPerson) adapts(IArticle)

def __init__(self, article): self.article = article

@property def name(self): return self.article.get_article_name()

# использование адаптера adapter = IPerson(ob) name = adapter.name

Page 9: Ильшад Хабибуллин — BlueBream

● Security Proxy● Декларативный язык ZCML

● Развертывание: Buildout

● Интерфейсы

● Реестры компонент: глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

Все объекты обернуты в Security Proxy

Page 10: Ильшад Хабибуллин — BlueBream

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

● Интерфейсы

● Реестры компонент: глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

Декларативные конструкции - на декларативном языке.

Простой XML с одним уровнем вложенности.

Page 11: Ильшад Хабибуллин — BlueBream

● Security Proxy

● Декларативный язык ZCML

● Развертывание: Buildout

● Интерфейсы

● Реестры компонент: глобальные и локальные

● Компонентная архитектура, основанная на адаптерах

$ python bootstrap.py$ bin/buildout

$ bin/paster serve deploy.ini

Page 12: Ильшад Хабибуллин — BlueBream

http://bluebream.ruhttp://bluebream.zope.org

Ильшад Хабибуллинhttp://astoon.zwiki.org