[Devel-conf] описание структуры бакенда на примере пользователей (was alterator backends and XML Schema)

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_altlinux=2Eorg?=
Ср Окт 17 15:16:19 MSD 2007


Peter V. Saveliev пишет:
> Ключевой момент, который я не понимаю -- это уверенность в том, что код 
> _нужно_ генерировать. Причём в такой манере. Я не говорю, что она плохая, мне 
> просто кажется, что в данном случае это может быть слегка не в кассу.
Хочу отметить, что я не предлагаю выбрать тот или иной вариант (IDL), я 
просто продемонстрировал как с помощью IDL описываются интерфейсы, по 
которым генерируется связующий код -- связующий вызовы со стороны 
клиента и сервера (что бы под этим ни понималось). "Мотороллер не мой".

> Что нам нужно:
> 
>  * возможность написать "плоский" файл и карту, которая методы плоского файла 
> будет проставлять в соответствие стандартным методам узлов, как это принято в 
> движке.
> 
> Если по пути будет генериться код-скелетон для шелл-модуля -- хорошо, но он 
> должен получаться очень просто. А то, что я увидел выше -- само по себе код, 
> причём не самый простой (для такого тривиального случая).
Это описание интерфейса, а не код. пара структур и сигнатуры методов, 
использующих их (и пометки _как_ использующих).

> Если бы я собрался писать для альтератора и увидел бы этот пример -- я бы 
> крепко призадумался. Я не говорю, что IDL плохо. Просто меня это бы испугало: 
> невозможно знать всё, а этот пример требует явных усилий по изучению чего-то 
> не очень простого, что мне пока нигде не нужно было и вряд ли где-то ещё 
> пригодится. Учитывая, что последнее время я начал достигать порога насыщения, 
> для меня это потенциально тяжёлая ситуация.
Я тоже думаю, что IDL для подобной ситуации плох. Альтератор -- типичная 
задача для архитектуры MVC (модель-отображение-управление), только 
представление модели несколько размыто в связи с разнообразием областей 
применения -- там не всегда реляционные схемы и отношения между 
однотипными объектами, а потому описать одной типизацией ({элемент, 
итерируемая коллекция элементов}x{запрос,добавление,удаление}) не очень 
получается.

С другой стороны для типичного сферического разработчика MVC проще -- во 
многом потому, что на основе M можно автоматом сгенерировать V и потому 
сосредоточиться только на C. Для примера -- scaffold в RoR для 
произвольной модели автоматом генерирует просмотр-добавление-удаление 
набора табличных данных. При этом контроллер, который строит отображение 
этой модели выглядит так:

class EntryController < ApplicationController
   scaffold :post
end

Все, после этого записи модели Post можно создавать, редактировать, 
удалять, просматривать с некоторым стандартным интерфейсом. Вот такого 
уровня "необходимую" нагрузку на сферического разработчика со стороны 
системы можно было бы только приветствовать.

Вот живое демо с кодом в стиле этой идеи: 
http://demo.activescaffold.com/users

Показываю ровно для того, чтобы проиллюстрировать идею, а не для 
предложения конкретного технического решения.
-- 
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/



Подробная информация о списке рассылки devel-conf