Почитав, что пишет народ и посмотрев на исходники двух наиболее известных MVC фреймворков - PureMVC и Cairngorm, решил их не использовать, посчитав что сложность не соответствует задаче.
Стал смотреть другие фреймворки. Их много, например: FlashMVC, Riawave, Mate, EasyMVC, Dawn, RobotLegs, Vyana.
Я остановился на EasyMVC by Tom Bray (существует еще другой EasyMVC, так что автор важен). EasyMVC [ 1, 2, 3, 4, 5] - даже не совсем фреймворк - это скорее простой и понятный пример, который легко модифицировать под нужную задачу. Единственное что там не хватает, на мой взгляд, - это красивой реализации Commands (всё делается в Controller'e).
Со стороны сервера, EasyMVC подрузамевает использование AMFPHP (т.е. обмен данными происходит в адобовском бинарном формате AMF).
AMFPHP - уже довольно старая разработка, но несмотря на это интенсивно используется. Автор её забросил (он теперь работает над ZendAMF , который подрузамевается использовать в связке с Zend ) но подхватил другой человек. Короче говоря, AMFPHP мне понравился.
Существует некоторая путаница с версиями AMFPHP. Последняя версия - 0.9.2. В феврале 2010-го новый автор написал, что работает над 2.0. В версии 0.9.2. есть ряд отличий от 0.9. В частности, по вопросу аутентификации советую сразу погуглить слово beforeFilter.
Помимо AMFPHP и ZendAMF можно ещё посмотреть в сторону SabreAMF и WebORB. Да, кому интересно - если серверную часть писать для Google App Engine на Python'e, то существует как минимум PyAMF (в связке с Flex приложением работает, я лично пробовал).
Ещё, к слову о правильности, на серверной стороне, для работы с разными БД из PHP, понравился PDO.
Выглядит это так (пример использования prepared statements):
try
{
$this->db->setAttribute(PDO::ATTR_ERRMOD
$st = $this->db->prepare("
DELETE FROM ip_base
WHERE id = :id
");
$res = $st->execute( array(':id' => (int)$vo[id]) );
}//try
catch(PDOException $e)
{
return $e->getMessage();
}//catch
Вот здесь еще примеры про PDO.