Сравнение каркасов веб-приложений

Поделись знанием:
Перейти к: навигация, поиск

Это сравнительная таблица фреймворков веб-приложений.





Фреймворки

Основная информация о каждом из фреймворков.

ASP.NET

Проект Язык Последняя стабильная версия Дата выпуска Лицензия
ASP.NET MVC Framework (ASP.NET MVC) ASP.NET 5.2 01.07.2014 Apache v2[1]
Base One Foundation Component Library (BFC) ASP.NET 7.43 15.01.2011 Проприетарная
Component-based Scalable Logical Architecture (CSLA) C#, Visual Basic .NET 4.3.10 04.03.2012 Проприетарная freeware, без ограничений на использование
DotNetNuke ASP.NET 6.01.02 25.07.2011 MIT
Kentico ASP.NET 6.0 10.10.2011 Проприетарная
MonoRail ASP.NET 2.1 RC 17.03.2011 Apache
OpenRasta ASP.NET 2.0 RC 04.11.2009 MIT
Nancy C#, Visual Basic .NET 0.6.0 06.2011 MIT

C++

Проект Последняя стабильная версия Дата выпуска Лицензия
CppCMS 1.0.2 14.08.2012 LGPL, Проприетарная
Tntnet 2.1 02.04.2012 LGPL
Wt 3.2.2-p1 27.07.2012 GPL, Проприетарная

ColdFusion Markup Language (CFML)

Проект Последняя стабильная версия Дата выпуска Лицензия
ColdBox Platform 3.5.2 01.08.2012 Apache v2
ColdFusion on Wheels 1.1.7 14.12.2011 Apache v2
ColdSpring 1.2 12.09.2008 Apache v2
Fusebox 5.5.1 08.03.2008 Apache
FW/1 1.2 18.10.2010 Apache v2
Mach-II 1.8.1 20.09.2010 GPLv3 with Classpath exception
Model-Glue 3.1.185 11.08.2009 Apache
onTap 3.3 07.11.2009 BSD

ECMAScript

Проект Язык Последняя стабильная версия Дата выпуска Лицензия
Flex ActionScript, MXML 4.8 25.07.2012 Apache

Java

Проект Последняя стабильная версия Дата выпуска Лицензия
Apache Click 2.3.0 27.03.2011 Apache Software License 2.0 (ASL 2.0)
Apache OFBiz 10.04.02 30.04.2010 Apache Software License 2.0 (ASL 2.0)
Apache Shale 1.0.4 19.12.2007 Apache
Apache Sling 6 18.04.2011 Apache 2.0
Apache Struts 2.3.4 12.05.2012 Apache 2.0
Apache Tapestry 5.3.5 30.08.2012 Apache
Liferay 6.2.3 17.04.2015 Apache
Apache Wicket 6.0 05.09.2012 Apache
AppFuse 2.1 04.04.2011 Apache
Eclipse RAP 1.4.1 23.09.2011 Eclipse
FormEngine 2.0.1 08.05.2012 MIT, Проприетарная
Grails 3.1.3 03.03.2016 Apache 2.0
Google Web Toolkit 2.7.0 20.11.2014 Apache
Hamlets 1.7 11.03.2011 BSD
ItsNat 1.2 24.05.2011 LGPL, Проприетарная
JavaServer Faces 2.2.13 04.02.2016 Implementation dependent
JBoss Seam 3.1.0 final 13.01.2012 LGPL
Jspx-bay 1.1.0 17.02.2011 Apache 2.0
JVx WebUI 0.9 01.04.2011 Apache 2.0
ManyDesigns Portofino 3.1.10 22.03.2011 GPLv3
OpenLaszlo 4.9.0 21.10.2010 CPL
OpenXava 4.5 19.07.2012 LGPL
Oracle ADF 11.1.1.5 06.05.2011 Oracle Technology Network Developer License
Play! 2.2.2 01.03.2014 Apache 2.0
RIFE 1.6.1 14.07.2007 CDDL, LGPL
SmartClient 8.0 05.01.2011 LGPL
Spring 4.2.5 25.02.2016 Apache 2.0
Stripes 1.5.8 07.07.2014 Apache 2.0
ThinWire 1.2 17.09.2007 GPL
Vaadin 6.7.6 06.03.2012 Apache
Wavemaker 6.3.3 22.09.2011 Apache
WebObjects 5.4.3 15.09.2008 Проприетарная
WebWork 2.2.6 21.07.2007 Apache
ZK 7.0.0 26.11.2013 LGPL, ZOL
ztemplates 2.4.0 11.09.2011 Apache

JavaScript

Проект Последняя стабильная версия Дата выпуска Лицензия
multiple frameworks based on node.js 0.8.9 11.07.2012 MIT
qooxdoo 4.1 16.12.2014 LGPL or Eclipse
SproutCore 1.8 (beta 2.0) 07.03.2012 MIT
WaveMaker (client side) 6.3.3 22.09.2011 Apache

Scala

Проект Последняя стабильная версия Дата выпуска Лицензия
Play! 2.0.3 03.08.2012 Apache 2.0
[spray.io/ Spray] 2.0.3 03.08.2012 Apache 2.0
Lift 2.6 11.01.2015 Apache 2.0

Perl

Проект Последняя стабильная версия Дата выпуска Лицензия
Catalyst 5.90012 19.05.2012 Artistic, GPL
Dancer 1.3095 01.04.2012 Artistic, GPL
Mason 2.19 02.05.2012 Artistic, GPL
Maypole 2.13 18.04.2008 Artistic, GPL
Mojolicious 6.6 21.06.2016 Artistic
Reaction 0.002005 08.03.2011 Artistic, GPL
Kelp 0.9071 03.04.2105 Artistic, GPL

PHP

Проект Создан Последняя стабильная версия Дата выпуска Тип фреймворка Лицензия
Agavi 05.2005 1.0.7 22.12.2011 Web application framework LGPL
Aiki Framework 09.2009 0.9.0 24.12.2011 Web application framework AGPLv3
AppFlower 02.2009 1.2 21.12.2011 Web application framework GPLv3
CakePHP 08.2005 2.2.3 08.10.2012[2] Web application framework MIT
CodeIgniter 01.2006 3.0.0 30.03.2015[3] Web application framework MIT
Cotonti 02.2009 0.9.7 01.02.2012 Content Management Framework BSD
Directus 04.2006 5.1 20.03.2012 Content Management Framework GPL
Drupal 05.2000 8.0.5 02.03.2016 Content Management Framework GPLv2 или более поздняя
e107 11.2004 1.0.1 30.03.2012 Web application framework GPLv2
eZ publish 01.2001 4.7 15.05.2012 Content Management Framework GPLv2, Проприетарная
Flow3 01.2007 1.1 15.05.2012 Web application framework LGPLv3
FuelPHP 10.2010 1.2.1 03.06.2012 Web application framework MIT
Fusebox 11.1997 5.5.1 01.03.2008 Web application framework Apache
Horde 02.2002 4.0.8 29.05.2012[4] Web application framework GPL, LGPL, BSD, Apache
Joomla! Platform 09.2005 12.1 09.05.2012 Content Management Framework GPLv2
Kajona 06.2004 3.4.2 18.07.2012[5] Content Management Framework LGPL
Laravel 06.2011 5.2.29 03.04.2016 Web application framework MIT
Lithium 10.2009 0.10 18.06.2011 Web application framework BSD
Midgard 05.1999 10.05.06 06.03.2012[6] Content Management Framework LGPL
MODX 03.2005 2.4.2-pl 06.10.2015[7] Content Management Framework GPL
Phalcon 03.2013 2.0.6 21.07.2015[8] Web application framework New BSD License
Qcodo 10.2005 0.4.22 15.08.2011[9] Web application framework MIT
Sija 05.2014 0.1a-4 05.01.2015[10] Web application framework MIT
SilverStripe (Sapphire) 11.2005 2.4.5 02.02.2011 Content Management Framework BSD
Seagull 10.2003 0.6.8 03.12.2010 Web application framework BSD
SKY Framework 01.2013 1.0 07.01.2013 Web application framework SKY Licence
Symfony 10.2005 2.1.3 30.10.2012[11] Web application framework MIT
Zend Framework 09.2007 1.12.11 11.02.2015 Web application framework BSD
Yii 01.2008 2.0.9 05.08.2015 Web application framework New BSD
Zend Framework 2 03.2006 2.3.7 12.03.2015[12] Web application framework New BSD
Zeta Components (formerly eZ Publish) 11.2005 eZ Components 2009.2.1 22.03.2010[13] Web application framework Apache
Zikula 06.2008 1.3.3 08.05.2012 Web application framework LGPLv3 или более поздняя

Python

Проект Последняя стабильная версия Дата выпуска Лицензия
BlueBream 1.0 18.01.2011 ZPL
Bottle 0.12 19.07.2013 MIT
CherryPy 5.1.0 10.03.2016 BSD
CubicWeb 3.20.4[14] 06.02.2015 LGPL
Django 1.9.7 04.06.2016 BSD
Flask 0.10.1 14.06.2013[15] BSD
Grok 1.4 04.04.2011 ZPL
Nagare 0.4.1 18.01.2012 BSD
Plone 5.0.0 28.09.2015 GPL
Pyjamas 0.8 01.06.2012 Apache
Pylons 1.0.0 28.05.2010 BSD
Pyramid 1.5 08.04.2014 BSD
Tornado 4.3[16] 06.11.2015 Apache
TurboGears 2.3.4 03.10.2014 MIT, LGPL
web2py 2.9.12 17.01.2015[17] LGPLv3
Webware 1.1 03.08.2011 Python
Zope 2 2.13.15 22.06.2012[18] ZPL

Ruby

Проект Последняя стабильная версия Дата выпуска Лицензия
Camping 2.1 20.08.2010 MIT
Hanami 0.7.2 09.02.2016 MIT
Ruby on Rails 4.2.6 11.03.2016 MIT, Ruby
Ramaze 2011.07.25 25.07.2011 Ruby
Sinatra 1.4.6 23.03.2015 MIT
Rango 0.2 03.2009
Merb 1.1.2 17.06.2010 MIT
Nitro 0.41 12.12.2006 BSD
Padrino 0.12.5 22.02.2015 MIT
PureMVC 2.0.4 14.08.2008 CC +Attribution

Другие

Проект Язык Последняя стабильная версия Дата выпуска Лицензия
AIDA/Web Smalltalk 6.5 27.08.2012 MIT
Application Express PL/SQL 4.2 15.10.2012 Проприетарная freeware
Grails Groovy (JVM) 2.0.1 14.02.2012 Apache
Kepler Lua 1.1.1 11.03.2009 MIT
Morfik C#, BASIC, Pascal, Java 3.0.8.1 13.12.2010 Проприетарная freeware
Noir Clojure 1.2.2  ? Eclipse
Ocsigen OCaml 2.0.4 09.03.2012 LGPL
Opa Opa 1.0.5 02.08.2012 MIT and AGPL
OpenACS Tcl 5.8.1 25.10.2014 GPL
Seaside Smalltalk 3.0 13.09.2010 MIT
Compojure Clojure 1.0.1 08.01.2012 Eclipse
Zotonic Erlang 0.8.1 11.08.2012 Apache

Сравнение возможностей фреймворков

ASP.NET

Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
ASP.NET MVC Да Да Push Да ORM-independent Unit tests, Functional Tests, Integration Tests Entity Framework ASP.NET Forms Authentication (Default), Pluggable Razor (Default), ASPX, Pluggable Да Да (client-side via plugins)
BFC Да Not mandatory Push & pull Да via active Словарь данных Unit tests security groups and rules Да Метаданные, result sets Data dictionary driven
DotNetNuke Да Нет Pull Да SubSonic, NHibernate Unit tests Да ACL-based (OpenID, LiveID, Active Directory, LDAP, Windows CardSpace, ASP.NET Forms Authentication) Да Pluggable ASP.NET Validators, built-in API
Kentico cms Да Да Push & Pull Да Proprietary, customizable Unit tests Import toolkit ACL-based (OpenID, LiveID, Active Directory, LDAP, Windows CardSpace, ASP.NET Forms Authentication, FB connect) Да Customizable ASP.NET Validators, built-in API
MonoRail Prototype ActiveRecord Push Да ActiveRecord Unit tests via ASP.NET Forms Authentication Да Да Да
OpenRasta Нет Да Push Да ORM-independent Unit tests Нет HTTP Digest and via ASP.NET Forms Authentication or host environment Да Нет Нет

C++

Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
CppCMS Да Да Push Да CppDB Нет Нет Да Да Да Да
Wt Да Да Push & Pull Да Wt::Dbo Boost.test Да Нет Нет Да
Tntnet Да Нет Нет Да Tntdb Нет Нет Нет Да Нет Нет

ColdFusion Markup Language (CFML)

Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
ColdBox Platform Да Да Push-pull Да Да via MockBox, MXUnit, others via plugin Да Да Да via plugin
ColdFusion on Wheels Да Да via plugin [cfwheels.org/plugins/listing/38 jLingua] Да Да integrated RocketUnit via plugin Да via plugin Да
Fusebox via CF or any JavaScript library optional Push Нет, custom via lexicons for Transfer, Reactor via MXUnit, others Нет via plugins via lexicon for ColdSpring Нет
Mach-II via CF or any JavaScript library Да Push via plugin Transfer, Reactor, Hibernate via MXUnit, others via plugins ColdSpring
Model-Glue via CF or any JavaScript library Да Push Transfer, Reactor, Hibernate via MXUnit, others via plugins ColdSpring
onTap native features + Prototype + script.aculo.us optional Push Да DataFaucet [www.datafaucet.com] via MXUnit, others DataFaucet has potential — supports multiple db platforms Members onTap Plugin Да Да Да
Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)

ECMAScript

Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
Flex ActionScript, MXML Not by name but similar technology[19] [opensource.adobe.com/wiki/display/flexunit/ FlexUnit]

Java

Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
Spring Java Да Да Push Да Hibernate, iBatis, more Mock objects, unit tests Spring Security (formerly Acegi) JSP, Commons Tiles, Velocity, Thymeleaf, more ehcache, more Commons validator, Bean Validation
Apache Click Java jQuery Page oriented Pull Да Hibernate, Cayenne Да pluggable Velocity, JSP Cached templates Built-in validation
Apache OFBiz Java Prototype Да Push-pull Да Entity Engine(OOTB ORM) JUnit Entity Engine Tools, Data File Tool, CSV Parser, Apache POI OOTB Security framework Freemarker(Recommended), Velocity(Support Available), JSP(Support Available) OOTB Cache Maintenance Server side validation, Client Side Validation(Prototype)
Apache Sling Java Да Да Push-pull Uses JCR content repository Да Да Да
Apache Struts Java Да Да Push-pull Да Да Unit tests Да Да
Apache Wicket Java Extensions for YUI, ExtJS, more Modular event driven Pull Да with extensions Mock objects, unit and integration tests via extension Да Да Да Да
FormEngine Java Да Да own connector API Ajax validation on server and form state update
ItsNat Java Да event driven Push using Java i18n external, built-in pluggable pure HTML-SVG page caching normal Java
JavaServer Faces Java Да Да Pull Да с расширениями JUnit Да Facelets, JSP Да Native validators, integration with Bean Validation
JBoss Seam Java Да Да Pull Да JPA, Hibernate JUnit, TestNG JAAS integration, Drools, Hibernate Filters, OpenID, CAPTCHA Facelets JBoss Cache, EHcache Hibernate Validator
Jspx-bay Java Да Page oriented Own API JAAS integration Master-content pages Internal UI validation controls
JVx WebUI Java Да Model Driven Да pluggable JUnit Да Single sourcing pluggable
OpenXava Java Да Model Driven Да JPA, Hibernate, EJB2 CMP JUnit Hibernate tools uses JSR-168 portal security UI is automatically generated uses portal and JPA caching Да
Play Java Да Да Push-pull Да JPA, Hibernate JUnit, Selenium Да via Core Security module Да Да Server-side validation
RIFE Java DWR Да Push-pull Да Да Out of container testing Да Да Integration with Terracotta Да
Stripes Java Да Да Pull Да JPA, Hibernate Да framework extension Да Да
Apache Tapestry Java Да Да Pull Да Hibernate and JPA Selenium and TestNG or JUnit external module: Tapestry-security (Apache Shiro) Да built-in validation system
Vaadin Java GWT Pull Да Да Да Да Да
Wavemaker JavaScript (client), Java (server) Dojo Toolkit Да Push Dojo Toolkit Hibernate JUnit Hibernate Spring Security (formerly Acegi), role-based access control Dojo Toolkit Dojo Toolkit Regular expression, schema-driven validation
WebObjects Java Да Да Push-pull Да EOF WOUnit (JUnit), TestNG, Selenium in Project WONDER Да Да Да
ztemplates Java JDK 1.5 or newer integrates YUI, Google, etc., with annotations Да Push, multiple actions per URL standard Java use any J2EE ORM framework Unit tests annotation based Velocity, FreeMarker, JSP, others pluggable Ajax validation on server and form state update (YUI, JSON)
Google Web Toolkit Java, JavaScript Да Да JPA with RequestFactory JUnit (too early), jsUnit (too difficult), Selenium (best) via Java Да Bean Validation
ZK Java, ZUML jQuery Да Push-pull Да any J2EE ORM framework JUnit,[code.google.com/p/lift-ztl/ ZTL] HibernateUtil, SpringUtil Spring Security Macro components & composition Да client, server
Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)

JavaScript

Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
qooxdoo Да [manual.qooxdoo.org/current/pages/data_binding.html Data binding] [manual.qooxdoo.org/current/pages/development/internationalization.html i18n] [manual.qooxdoo.org/current/pages/development.html#testing Testrunner] [manual.qooxdoo.org/current/pages/gui_toolkit/ui_form_handling.html#validation Form Validation]
SproutCore Да Да

Perl

Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
Catalyst Perl Toolkit-independent (REST & JSON support, specific plugins for Prototype (фреймворк), more) Да Push in its most common usage Да DBIx::Class, Rose::DB::Object, more Supports Perl testing standards, Test Anything Protocol (TAP) ACL-based, external engines, more Template::Toolkit, HTML::Template, HTML::Mason, PHP and any extant Perl template engine Cache, memcached, shared memory, more HTML::FormHandler HTML::FormFu, HTML::FormValidator, more
Dancer Perl Да Да Push Да DBIx::Class, ORMesque Да  ?  ? Template::Toolkit, HTML::Mason, Text::MicroTemplate, any extant Perl template engine Cache, memcached, shared memory, more DataFu, any extant Perl form validation software
Interchange Perl  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?
Mason Perl  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?
Maypole Perl  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?
Mojolicious Perl Toolkit-independent (REST & JSON support No explicit model support though commonly used as MVC Push Да Да Нет Test::Mojo Нет Да Built-in Perl templating, Template::Toolkit and several others via plugins Нет
Reaction Perl  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?

PHP

Проект Создан Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s) Scaffolding
AppFlower 02.2009 PHP 5 ExtJS Да Push Да Propel Да Plugin exists Plugin Да Да Да Да
CakePHP 08.2005 PHP 5.2+ Prototype, script.aculo.us, jQuery, jQuery UI, MooTools, MooTools More Да Push Да ActiveRecord (CakePHP 1.x), ActiveRecord (CakePHP 2.x) Unit tests, object mocking, fixtures, code coverage, memory analysis with SimpleTest and XDebug PHPUnit (cakephp 2.0) Да ACL-based Themes, layouts, views, elements Memcache, XCache, APC, File Validation, security Да
CodeIgniter 01.2006 PHP >= 5.2.4 Any Да Push Mostly[20] Third party only Ready for next release Да Да Да Да Да Нет[21]
Drupal 01.2001 PHP jQuery, jQuery UI, more PAC N/A Да Optional module SimpleTest Да Да Да Memcache, APC, Varnish, more Да Нет
FuelPHP 10.2010 PHP >= 5.3.x Да MVC, HMVC Push Да Да PHPUnit Да Да, Plugins available Да, Plugins available File, Redis, Memcache, more Да Да
Fusebox 11.1997 PHP Да Not mandatory Push Нет, custom Multiple plugins available via qforms or built in PHP validation Да
Joomla 09.2005 PHP >= 5.3.x Да Mootools 1.3 Да Push-pull Да Да Unit tests Нет Да Да Да Да Нет
Kajona 06.2004 PHP 5 Да Да Да Да Да Unit tests Automatic Да Да Да Да Нет
Midgard 05.1999 PHP jQuery MidCOM Pull Да Midgard PHPUnit datagard ACL-based PHP, TAL Memcache Да Нет
PRADO 07.2004 PHP 5 (>=5.3.0) Prototype, script.aculo.us, own components[22] Да Push-pull Да (DAO), ActiveRecord, SQLMap data mapper PHPUnit Нет Да XML-based, similar to ASP.NETs[23] APC, Database, eAccelerator, memcached, XCache Да[24] Да[25]
Qcodo 10.2005 PHP 5 built-in QControl Push Да XML-based Inherent QForm and QControl Да Да Нет
SilverStripe (Sapphire) 11.2005 PHP 5 (>=5.2) jQuery, jQuery UI Push-pull Да ActiveRecord Unit tests Automatic incl. OpenID Да Да Да
Symfony 10.2005 PHP 5 Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins Да Push Да Propel, Doctrine (YAML) Да Plugin exists (alpha code) Plugin PHP, Twig Да Да Да
Symfony 2 2010 PHP 5.3 Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins Да Push Да Propel, Doctrine (YAML) Да Plugin exists (alpha code) Plugin PHP, Twig Да Да Да
Yii 01.2008 PHP 5 (>=5.1.0) jQuery, jQuery UI, own components, plugins Да Push-pull Да (DAO), ActiveRecord, плагины (incl. Doctrine 2.0) PHPUnit, Selenium Да ACL, RBAC, плагины PHP, PRADO, плагины APC, Database, eAccelerator, File, Memcache, Redis, WinCache, XCache, Zend Platform Да Да[26]
Zend Framework 03.2006 PHP 5 (>=5.2.4) Toolkit-independent Да Push-pull Да Table and row data gateway and Doctrine 2.0 for Zend Framework 2.0 Unit tests Да ACL-based Да Да Да Нет
Zikula 06.2008 PHP Да Да N/A Да Да PHPUnit Да Да Да Да Да Нет

Python

Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s) Python 3.*
CherryPy Python Да controller & URL dispatching Да ORM agnostic использует unittest и doctest из stdlib зависит от ORM Templating engine agnostic Да Form validation engine agnostic Да
CubicWeb Python Да controller & URL dispatching Да Да Да Да Да Да Да Да Нет
Flask Python Да Да Push Да Да Да Да Да [jinja.pocoo.org/ Jinja2] Да Да Да
Grok Python Да Да Pull Да OODBMS called ZODB, SQLAlchemy, Storm Unit tests, functional tests ZODB Generations Да Да Да Да
Pyjamas Python, JavaScript Да Use PureMVC Python version (compiled to JavaScript) Да  ??, no direct data access Нет Нет
Pylons Python helpers for Prototype and script.aculo.us controller Push Да ORM-agnostic via nose зависит от ORM pluggable: Mako, Genshi, Myghty, Kid, другие Beaker cache (memory, memcached, file, databases) preferred formencode Нет
Pyramid Python Да Да Push Да ORM-agnostic Да зависит от ORM Да pluggable: Chameleon, Genshi; Mako, more Beaker cache (memory, memcached, file, databases) preferred formencode Да
Django Python Да Full stack Push Да [docs.djangoproject.com/en/dev/topics/db/models/ Django ORM] Да Provided by [south.aeracode.org/ South] ACL-based [docs.djangoproject.com/en/dev/topics/templates/ Django Template Language] [docs.djangoproject.com/en/dev/topics/cache/ Cache Framework] [docs.djangoproject.com/en/dev/ref/forms/api/#ref-forms-api Django Forms API] Да
TurboGears Python Toolkit-independent, provides support via JSON Full stack, best-of-breed based Push Да SQLAlchemy nose [code.google.com/p/sqlalchemy-migrate/ SQLAlchemy-Migrate] Repoze.what & Repoze.who pluggable: Genshi, more Support for memcached, and any WSGI compliant system ToscaWidgets, utilizing [formencode.org FormEncode] Нет
web2py Python Да Да Push Да Да Да Да Да Да Да Да Нет
Webware Python Нет Optional Pull Нет Да Да Нет Да Да Нет Нет Нет
BlueBream (Zope 3) Python via add-on products, e.g. Plone w/KSS Да Pull Да ZODB, SQLObject, SQLAlchemy Unit tests, functional tests ZODB generations ACL-based Да Да Да Нет
Zope 2 Python Да Pull Да ZODB, SQLObject, SQLAlchemy Unit tests ACL-based Да Да CMFFormController Нет
mnml Python Нет Нет Нет Нет only development server Нет Templating engine agnostic Нет Form validation engine agnostic Нет

Ruby

Проект Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
Camping Нет Да Push Нет ActiveRecord via Mosquito Да Нет Да Нет Нет
Nitro jQuery Да Push Да Og RSpec (automatic) Да Да Да Да
Ruby on Rails Prototype, script.aculo.us, jQuery ActiveRecord, Action Pack Push Да ActiveRecord Unit Tests, Functional Tests and Integration Tests Да Plug-in Да Да Да
Sinatra jQuery Да Push Да ORM-independent rack-test Да through a Rack middleware Да through a Rack middleware Нет

Другие

Проект Язык Ajax MVC framework MVC push-pull i18n & L10n? ORM Testing framework(s) DB migration framework(s) Security framework(s) Template framework(s) Caching framework(s) Form validation framework(s)
AIDA/Web Smalltalk Да Да Да Gemstone/S, GLORP, more SUnit Да Да
Application Express PL/SQL Да Да Да Да Да
Grails Groovy Да ActiveRecord Push Да GORM, Hibernate Unit tests, integration test, functional test multiple plugins: autobase, dbmigrate, more Spring Security,[27] Apache Shiro[28] Да Да Да
Kepler Lua Да
Lift Scala Да Да Pull Да Да Да Да Да Да Да
Ocsigen OCaml Да Да Да
Opa Opa Да Да MongoDB Да Да Да
OpenACS Tcl Да Да Да Да Да Да Да Да Да Да
Seaside Smalltalk jQuery, jQuery UI, Prototype JavaScript Framework, script.aculo.us, more Да Да GLORP, Gemstone/S, more Unit tests, SUnit Нет, intentionally [www.lukas-renggli.ch/smalltalk/magritte Magritte]

Напишите отзыв о статье "Сравнение каркасов веб-приложений"

Примечания

  1. [weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx ASP.NET MVC, Web API, Razor and Open Source — ScottGu’s Blog]
  2. [bakery.cakephp.org/articles/markstory/2012/09/01/cakephp_2_2_2_release CakePHP 2.2.2 release :: The Bakery: Everything CakePHP]
  3. [forum.codeigniter.com/thread-1657.html CodeIgniter 3.0]
  4. [www.horde.org/download/horde Downloads — The Horde Project]
  5. [www.kajona.de/newsdetails.Kajona-V3-4-1-is-completed.newsDetail.0dbe0484eb6ba3555b72.en.html Kajona V3.4.1 is completed! | News | Kajona]
  6. www.midgard-project.org/updates/midgard_10-05-6_ratatoskr_lts_released/
  7. [modx.com/download/ Download Distribution | MODX]
  8. [blog.phalconphp.com/post/phalcon-2-0-6-released Phalcon 2.0.6 released]
  9. [www.qcodo.com/forums/forum.php/5/4377/ Qcodo Development Framework — Forums]
  10. [chermenin.github.io/sija Sija Framework]
  11. [symfony.com/blog/symfony-2-1-3-released Symfony 2.1.3 released — Symfony]
  12. [framework.zend.com/blog/zend-framework-2-0-0-stable-released.html Zend Framework 2.0.0 STABLE Released! — Zend Framework — Zend Framework]
  13. [ezcomponents.org/resources/news/news-2010-03-22 eZ Components — Resources — News Archive]
  14. [www.cubicweb.org/project/cubicweb/3.15.2 cubicweb 3.15.2 (CubicWeb’s Forge)]
  15. [flask.pocoo.org/docs/changelog/ Flask Changelog]
  16. [www.tornadoweb.org/documentation/releases/v2.3.0.html What’s new in Tornado 2.3 — Tornado 2.4 documentation]
  17. [web2py.com/examples/default/download web2py Web Framework]
  18. [zope2.zope.org/releases Getting Zope 2 — The Zope 2 Application Server]
  19. [livedocs.adobe.com/flex/3/langref/flash/net/URLRequest.html URLRequest]
  20. [codeigniter.com/user_guide/libraries/language.html Language helper included, must activate & set desired language by parsing HTTP headers.]
  21. [codeigniter.com/user_guide/changelog.html Change Log : CodeIgniter User Guide]. EllisLab, Inc.. Проверено 19 марта 2012. [www.webcitation.org/6DHr9MOJf Архивировано из первоисточника 30 декабря 2012].
  22. [www.pradosoft.com/demos/quickstart/?page=ActiveControls.Home PRADO QuickStart Tutorial]
  23. [www.pradosoft.com/demos/quickstart/?page=Configurations.Templates1 PRADO QuickStart Tutorial]
  24. [www.pradosoft.com/demos/quickstart/?page=Controls.Validation PRADO QuickStart Tutorial]
  25. [www.pradosoft.com/demos/quickstart/?page=Database.Scaffold PRADO QuickStart Tutorial]
  26. [www.yiiframework.com/doc/blog/1.1/en/prototype.scaffold Initial Prototyping: Scaffolding | Building a Blog System Using Yii | Yii Framework]
  27. [grails.org/plugin/spring-security-core Spring Security plugin]
  28. [grails.org/plugin/shiro Apache Shiro plugin]

См. также

Отрывок, характеризующий Сравнение каркасов веб-приложений

– Семен! Данилу Купора знаешь?
Это был любимый танец графа, танцованный им еще в молодости. (Данило Купор была собственно одна фигура англеза .)
– Смотрите на папа, – закричала на всю залу Наташа (совершенно забыв, что она танцует с большим), пригибая к коленам свою кудрявую головку и заливаясь своим звонким смехом по всей зале.
Действительно, всё, что только было в зале, с улыбкою радости смотрело на веселого старичка, который рядом с своею сановитою дамой, Марьей Дмитриевной, бывшей выше его ростом, округлял руки, в такт потряхивая ими, расправлял плечи, вывертывал ноги, слегка притопывая, и всё более и более распускавшеюся улыбкой на своем круглом лице приготовлял зрителей к тому, что будет. Как только заслышались веселые, вызывающие звуки Данилы Купора, похожие на развеселого трепачка, все двери залы вдруг заставились с одной стороны мужскими, с другой – женскими улыбающимися лицами дворовых, вышедших посмотреть на веселящегося барина.
– Батюшка то наш! Орел! – проговорила громко няня из одной двери.
Граф танцовал хорошо и знал это, но его дама вовсе не умела и не хотела хорошо танцовать. Ее огромное тело стояло прямо с опущенными вниз мощными руками (она передала ридикюль графине); только одно строгое, но красивое лицо ее танцовало. Что выражалось во всей круглой фигуре графа, у Марьи Дмитриевны выражалось лишь в более и более улыбающемся лице и вздергивающемся носе. Но зато, ежели граф, всё более и более расходясь, пленял зрителей неожиданностью ловких выверток и легких прыжков своих мягких ног, Марья Дмитриевна малейшим усердием при движении плеч или округлении рук в поворотах и притопываньях, производила не меньшее впечатление по заслуге, которую ценил всякий при ее тучности и всегдашней суровости. Пляска оживлялась всё более и более. Визави не могли ни на минуту обратить на себя внимания и даже не старались о том. Всё было занято графом и Марьею Дмитриевной. Наташа дергала за рукава и платье всех присутствовавших, которые и без того не спускали глаз с танцующих, и требовала, чтоб смотрели на папеньку. Граф в промежутках танца тяжело переводил дух, махал и кричал музыкантам, чтоб они играли скорее. Скорее, скорее и скорее, лише, лише и лише развертывался граф, то на цыпочках, то на каблуках, носясь вокруг Марьи Дмитриевны и, наконец, повернув свою даму к ее месту, сделал последнее па, подняв сзади кверху свою мягкую ногу, склонив вспотевшую голову с улыбающимся лицом и округло размахнув правою рукой среди грохота рукоплесканий и хохота, особенно Наташи. Оба танцующие остановились, тяжело переводя дыхание и утираясь батистовыми платками.
– Вот как в наше время танцовывали, ma chere, – сказал граф.
– Ай да Данила Купор! – тяжело и продолжительно выпуская дух и засучивая рукава, сказала Марья Дмитриевна.


В то время как у Ростовых танцовали в зале шестой англез под звуки от усталости фальшививших музыкантов, и усталые официанты и повара готовили ужин, с графом Безухим сделался шестой удар. Доктора объявили, что надежды к выздоровлению нет; больному дана была глухая исповедь и причастие; делали приготовления для соборования, и в доме была суетня и тревога ожидания, обыкновенные в такие минуты. Вне дома, за воротами толпились, скрываясь от подъезжавших экипажей, гробовщики, ожидая богатого заказа на похороны графа. Главнокомандующий Москвы, который беспрестанно присылал адъютантов узнавать о положении графа, в этот вечер сам приезжал проститься с знаменитым Екатерининским вельможей, графом Безухим.
Великолепная приемная комната была полна. Все почтительно встали, когда главнокомандующий, пробыв около получаса наедине с больным, вышел оттуда, слегка отвечая на поклоны и стараясь как можно скорее пройти мимо устремленных на него взглядов докторов, духовных лиц и родственников. Князь Василий, похудевший и побледневший за эти дни, провожал главнокомандующего и что то несколько раз тихо повторил ему.
Проводив главнокомандующего, князь Василий сел в зале один на стул, закинув высоко ногу на ногу, на коленку упирая локоть и рукою закрыв глаза. Посидев так несколько времени, он встал и непривычно поспешными шагами, оглядываясь кругом испуганными глазами, пошел чрез длинный коридор на заднюю половину дома, к старшей княжне.
Находившиеся в слабо освещенной комнате неровным шопотом говорили между собой и замолкали каждый раз и полными вопроса и ожидания глазами оглядывались на дверь, которая вела в покои умирающего и издавала слабый звук, когда кто нибудь выходил из нее или входил в нее.
– Предел человеческий, – говорил старичок, духовное лицо, даме, подсевшей к нему и наивно слушавшей его, – предел положен, его же не прейдеши.
– Я думаю, не поздно ли соборовать? – прибавляя духовный титул, спрашивала дама, как будто не имея на этот счет никакого своего мнения.
– Таинство, матушка, великое, – отвечало духовное лицо, проводя рукою по лысине, по которой пролегало несколько прядей зачесанных полуседых волос.
– Это кто же? сам главнокомандующий был? – спрашивали в другом конце комнаты. – Какой моложавый!…
– А седьмой десяток! Что, говорят, граф то не узнает уж? Хотели соборовать?
– Я одного знал: семь раз соборовался.
Вторая княжна только вышла из комнаты больного с заплаканными глазами и села подле доктора Лоррена, который в грациозной позе сидел под портретом Екатерины, облокотившись на стол.
– Tres beau, – говорил доктор, отвечая на вопрос о погоде, – tres beau, princesse, et puis, a Moscou on se croit a la campagne. [прекрасная погода, княжна, и потом Москва так похожа на деревню.]
– N'est ce pas? [Не правда ли?] – сказала княжна, вздыхая. – Так можно ему пить?
Лоррен задумался.
– Он принял лекарство?
– Да.
Доктор посмотрел на брегет.
– Возьмите стакан отварной воды и положите une pincee (он своими тонкими пальцами показал, что значит une pincee) de cremortartari… [щепотку кремортартара…]
– Не пило слушай , – говорил немец доктор адъютанту, – чтопи с третий удар шивь оставался .
– А какой свежий был мужчина! – говорил адъютант. – И кому пойдет это богатство? – прибавил он шопотом.
– Окотник найдутся , – улыбаясь, отвечал немец.
Все опять оглянулись на дверь: она скрипнула, и вторая княжна, сделав питье, показанное Лорреном, понесла его больному. Немец доктор подошел к Лоррену.
– Еще, может, дотянется до завтрашнего утра? – спросил немец, дурно выговаривая по французски.
Лоррен, поджав губы, строго и отрицательно помахал пальцем перед своим носом.
– Сегодня ночью, не позже, – сказал он тихо, с приличною улыбкой самодовольства в том, что ясно умеет понимать и выражать положение больного, и отошел.

Между тем князь Василий отворил дверь в комнату княжны.
В комнате было полутемно; только две лампадки горели перед образами, и хорошо пахло куреньем и цветами. Вся комната была установлена мелкою мебелью шифоньерок, шкапчиков, столиков. Из за ширм виднелись белые покрывала высокой пуховой кровати. Собачка залаяла.
– Ах, это вы, mon cousin?
Она встала и оправила волосы, которые у нее всегда, даже и теперь, были так необыкновенно гладки, как будто они были сделаны из одного куска с головой и покрыты лаком.
– Что, случилось что нибудь? – спросила она. – Я уже так напугалась.
– Ничего, всё то же; я только пришел поговорить с тобой, Катишь, о деле, – проговорил князь, устало садясь на кресло, с которого она встала. – Как ты нагрела, однако, – сказал он, – ну, садись сюда, causons. [поговорим.]
– Я думала, не случилось ли что? – сказала княжна и с своим неизменным, каменно строгим выражением лица села против князя, готовясь слушать.
– Хотела уснуть, mon cousin, и не могу.
– Ну, что, моя милая? – сказал князь Василий, взяв руку княжны и пригибая ее по своей привычке книзу.
Видно было, что это «ну, что» относилось ко многому такому, что, не называя, они понимали оба.
Княжна, с своею несообразно длинною по ногам, сухою и прямою талией, прямо и бесстрастно смотрела на князя выпуклыми серыми глазами. Она покачала головой и, вздохнув, посмотрела на образа. Жест ее можно было объяснить и как выражение печали и преданности, и как выражение усталости и надежды на скорый отдых. Князь Василий объяснил этот жест как выражение усталости.
– А мне то, – сказал он, – ты думаешь, легче? Je suis ereinte, comme un cheval de poste; [Я заморен, как почтовая лошадь;] а всё таки мне надо с тобой поговорить, Катишь, и очень серьезно.
Князь Василий замолчал, и щеки его начинали нервически подергиваться то на одну, то на другую сторону, придавая его лицу неприятное выражение, какое никогда не показывалось на лице князя Василия, когда он бывал в гостиных. Глаза его тоже были не такие, как всегда: то они смотрели нагло шутливо, то испуганно оглядывались.
Княжна, своими сухими, худыми руками придерживая на коленях собачку, внимательно смотрела в глаза князю Василию; но видно было, что она не прервет молчания вопросом, хотя бы ей пришлось молчать до утра.
– Вот видите ли, моя милая княжна и кузина, Катерина Семеновна, – продолжал князь Василий, видимо, не без внутренней борьбы приступая к продолжению своей речи, – в такие минуты, как теперь, обо всём надо подумать. Надо подумать о будущем, о вас… Я вас всех люблю, как своих детей, ты это знаешь.
Княжна так же тускло и неподвижно смотрела на него.
– Наконец, надо подумать и о моем семействе, – сердито отталкивая от себя столик и не глядя на нее, продолжал князь Василий, – ты знаешь, Катишь, что вы, три сестры Мамонтовы, да еще моя жена, мы одни прямые наследники графа. Знаю, знаю, как тебе тяжело говорить и думать о таких вещах. И мне не легче; но, друг мой, мне шестой десяток, надо быть ко всему готовым. Ты знаешь ли, что я послал за Пьером, и что граф, прямо указывая на его портрет, требовал его к себе?
Князь Василий вопросительно посмотрел на княжну, но не мог понять, соображала ли она то, что он ей сказал, или просто смотрела на него…
– Я об одном не перестаю молить Бога, mon cousin, – отвечала она, – чтоб он помиловал его и дал бы его прекрасной душе спокойно покинуть эту…
– Да, это так, – нетерпеливо продолжал князь Василий, потирая лысину и опять с злобой придвигая к себе отодвинутый столик, – но, наконец…наконец дело в том, ты сама знаешь, что прошлою зимой граф написал завещание, по которому он всё имение, помимо прямых наследников и нас, отдавал Пьеру.
– Мало ли он писал завещаний! – спокойно сказала княжна. – Но Пьеру он не мог завещать. Пьер незаконный.
– Ma chere, – сказал вдруг князь Василий, прижав к себе столик, оживившись и начав говорить скорей, – но что, ежели письмо написано государю, и граф просит усыновить Пьера? Понимаешь, по заслугам графа его просьба будет уважена…
Княжна улыбнулась, как улыбаются люди, которые думают что знают дело больше, чем те, с кем разговаривают.
– Я тебе скажу больше, – продолжал князь Василий, хватая ее за руку, – письмо было написано, хотя и не отослано, и государь знал о нем. Вопрос только в том, уничтожено ли оно, или нет. Ежели нет, то как скоро всё кончится , – князь Василий вздохнул, давая этим понять, что он разумел под словами всё кончится , – и вскроют бумаги графа, завещание с письмом будет передано государю, и просьба его, наверно, будет уважена. Пьер, как законный сын, получит всё.
– А наша часть? – спросила княжна, иронически улыбаясь так, как будто всё, но только не это, могло случиться.
– Mais, ma pauvre Catiche, c'est clair, comme le jour. [Но, моя дорогая Катишь, это ясно, как день.] Он один тогда законный наследник всего, а вы не получите ни вот этого. Ты должна знать, моя милая, были ли написаны завещание и письмо, и уничтожены ли они. И ежели почему нибудь они забыты, то ты должна знать, где они, и найти их, потому что…
– Этого только недоставало! – перебила его княжна, сардонически улыбаясь и не изменяя выражения глаз. – Я женщина; по вашему мы все глупы; но я настолько знаю, что незаконный сын не может наследовать… Un batard, [Незаконный,] – прибавила она, полагая этим переводом окончательно показать князю его неосновательность.
– Как ты не понимаешь, наконец, Катишь! Ты так умна: как ты не понимаешь, – ежели граф написал письмо государю, в котором просит его признать сына законным, стало быть, Пьер уж будет не Пьер, а граф Безухой, и тогда он по завещанию получит всё? И ежели завещание с письмом не уничтожены, то тебе, кроме утешения, что ты была добродетельна et tout ce qui s'en suit, [и всего, что отсюда вытекает,] ничего не останется. Это верно.
– Я знаю, что завещание написано; но знаю тоже, что оно недействительно, и вы меня, кажется, считаете за совершенную дуру, mon cousin, – сказала княжна с тем выражением, с которым говорят женщины, полагающие, что они сказали нечто остроумное и оскорбительное.
– Милая ты моя княжна Катерина Семеновна, – нетерпеливо заговорил князь Василий. – Я пришел к тебе не за тем, чтобы пикироваться с тобой, а за тем, чтобы как с родной, хорошею, доброю, истинною родной, поговорить о твоих же интересах. Я тебе говорю десятый раз, что ежели письмо к государю и завещание в пользу Пьера есть в бумагах графа, то ты, моя голубушка, и с сестрами, не наследница. Ежели ты мне не веришь, то поверь людям знающим: я сейчас говорил с Дмитрием Онуфриичем (это был адвокат дома), он то же сказал.
Видимо, что то вдруг изменилось в мыслях княжны; тонкие губы побледнели (глаза остались те же), и голос, в то время как она заговорила, прорывался такими раскатами, каких она, видимо, сама не ожидала.
– Это было бы хорошо, – сказала она. – Я ничего не хотела и не хочу.
Она сбросила свою собачку с колен и оправила складки платья.
– Вот благодарность, вот признательность людям, которые всем пожертвовали для него, – сказала она. – Прекрасно! Очень хорошо! Мне ничего не нужно, князь.
– Да, но ты не одна, у тебя сестры, – ответил князь Василий.
Но княжна не слушала его.
– Да, я это давно знала, но забыла, что, кроме низости, обмана, зависти, интриг, кроме неблагодарности, самой черной неблагодарности, я ничего не могла ожидать в этом доме…
– Знаешь ли ты или не знаешь, где это завещание? – спрашивал князь Василий еще с большим, чем прежде, подергиванием щек.
– Да, я была глупа, я еще верила в людей и любила их и жертвовала собой. А успевают только те, которые подлы и гадки. Я знаю, чьи это интриги.
Княжна хотела встать, но князь удержал ее за руку. Княжна имела вид человека, вдруг разочаровавшегося во всем человеческом роде; она злобно смотрела на своего собеседника.
– Еще есть время, мой друг. Ты помни, Катишь, что всё это сделалось нечаянно, в минуту гнева, болезни, и потом забыто. Наша обязанность, моя милая, исправить его ошибку, облегчить его последние минуты тем, чтобы не допустить его сделать этой несправедливости, не дать ему умереть в мыслях, что он сделал несчастными тех людей…
– Тех людей, которые всем пожертвовали для него, – подхватила княжна, порываясь опять встать, но князь не пустил ее, – чего он никогда не умел ценить. Нет, mon cousin, – прибавила она со вздохом, – я буду помнить, что на этом свете нельзя ждать награды, что на этом свете нет ни чести, ни справедливости. На этом свете надо быть хитрою и злою.
– Ну, voyons, [послушай,] успокойся; я знаю твое прекрасное сердце.
– Нет, у меня злое сердце.
– Я знаю твое сердце, – повторил князь, – ценю твою дружбу и желал бы, чтобы ты была обо мне того же мнения. Успокойся и parlons raison, [поговорим толком,] пока есть время – может, сутки, может, час; расскажи мне всё, что ты знаешь о завещании, и, главное, где оно: ты должна знать. Мы теперь же возьмем его и покажем графу. Он, верно, забыл уже про него и захочет его уничтожить. Ты понимаешь, что мое одно желание – свято исполнить его волю; я затем только и приехал сюда. Я здесь только затем, чтобы помогать ему и вам.
– Теперь я всё поняла. Я знаю, чьи это интриги. Я знаю, – говорила княжна.
– Hе в том дело, моя душа.
– Это ваша protegee, [любимица,] ваша милая княгиня Друбецкая, Анна Михайловна, которую я не желала бы иметь горничной, эту мерзкую, гадкую женщину.
– Ne perdons point de temps. [Не будем терять время.]
– Ax, не говорите! Прошлую зиму она втерлась сюда и такие гадости, такие скверности наговорила графу на всех нас, особенно Sophie, – я повторить не могу, – что граф сделался болен и две недели не хотел нас видеть. В это время, я знаю, что он написал эту гадкую, мерзкую бумагу; но я думала, что эта бумага ничего не значит.
– Nous у voila, [В этом то и дело.] отчего же ты прежде ничего не сказала мне?
– В мозаиковом портфеле, который он держит под подушкой. Теперь я знаю, – сказала княжна, не отвечая. – Да, ежели есть за мной грех, большой грех, то это ненависть к этой мерзавке, – почти прокричала княжна, совершенно изменившись. – И зачем она втирается сюда? Но я ей выскажу всё, всё. Придет время!


В то время как такие разговоры происходили в приемной и в княжниной комнатах, карета с Пьером (за которым было послано) и с Анной Михайловной (которая нашла нужным ехать с ним) въезжала во двор графа Безухого. Когда колеса кареты мягко зазвучали по соломе, настланной под окнами, Анна Михайловна, обратившись к своему спутнику с утешительными словами, убедилась в том, что он спит в углу кареты, и разбудила его. Очнувшись, Пьер за Анною Михайловной вышел из кареты и тут только подумал о том свидании с умирающим отцом, которое его ожидало. Он заметил, что они подъехали не к парадному, а к заднему подъезду. В то время как он сходил с подножки, два человека в мещанской одежде торопливо отбежали от подъезда в тень стены. Приостановившись, Пьер разглядел в тени дома с обеих сторон еще несколько таких же людей. Но ни Анна Михайловна, ни лакей, ни кучер, которые не могли не видеть этих людей, не обратили на них внимания. Стало быть, это так нужно, решил сам с собой Пьер и прошел за Анною Михайловной. Анна Михайловна поспешными шагами шла вверх по слабо освещенной узкой каменной лестнице, подзывая отстававшего за ней Пьера, который, хотя и не понимал, для чего ему надо было вообще итти к графу, и еще меньше, зачем ему надо было итти по задней лестнице, но, судя по уверенности и поспешности Анны Михайловны, решил про себя, что это было необходимо нужно. На половине лестницы чуть не сбили их с ног какие то люди с ведрами, которые, стуча сапогами, сбегали им навстречу. Люди эти прижались к стене, чтобы пропустить Пьера с Анной Михайловной, и не показали ни малейшего удивления при виде их.
– Здесь на половину княжен? – спросила Анна Михайловна одного из них…
– Здесь, – отвечал лакей смелым, громким голосом, как будто теперь всё уже было можно, – дверь налево, матушка.
– Может быть, граф не звал меня, – сказал Пьер в то время, как он вышел на площадку, – я пошел бы к себе.
Анна Михайловна остановилась, чтобы поровняться с Пьером.
– Ah, mon ami! – сказала она с тем же жестом, как утром с сыном, дотрогиваясь до его руки: – croyez, que je souffre autant, que vous, mais soyez homme. [Поверьте, я страдаю не меньше вас, но будьте мужчиной.]
– Право, я пойду? – спросил Пьер, ласково чрез очки глядя на Анну Михайловну.
– Ah, mon ami, oubliez les torts qu'on a pu avoir envers vous, pensez que c'est votre pere… peut etre a l'agonie. – Она вздохнула. – Je vous ai tout de suite aime comme mon fils. Fiez vous a moi, Pierre. Je n'oublirai pas vos interets. [Забудьте, друг мой, в чем были против вас неправы. Вспомните, что это ваш отец… Может быть, в агонии. Я тотчас полюбила вас, как сына. Доверьтесь мне, Пьер. Я не забуду ваших интересов.]
Пьер ничего не понимал; опять ему еще сильнее показалось, что всё это так должно быть, и он покорно последовал за Анною Михайловной, уже отворявшею дверь.
Дверь выходила в переднюю заднего хода. В углу сидел старик слуга княжен и вязал чулок. Пьер никогда не был на этой половине, даже не предполагал существования таких покоев. Анна Михайловна спросила у обгонявшей их, с графином на подносе, девушки (назвав ее милой и голубушкой) о здоровье княжен и повлекла Пьера дальше по каменному коридору. Из коридора первая дверь налево вела в жилые комнаты княжен. Горничная, с графином, второпях (как и всё делалось второпях в эту минуту в этом доме) не затворила двери, и Пьер с Анною Михайловной, проходя мимо, невольно заглянули в ту комнату, где, разговаривая, сидели близко друг от друга старшая княжна с князем Васильем. Увидав проходящих, князь Василий сделал нетерпеливое движение и откинулся назад; княжна вскочила и отчаянным жестом изо всей силы хлопнула дверью, затворяя ее.
Жест этот был так не похож на всегдашнее спокойствие княжны, страх, выразившийся на лице князя Василья, был так несвойствен его важности, что Пьер, остановившись, вопросительно, через очки, посмотрел на свою руководительницу.
Анна Михайловна не выразила удивления, она только слегка улыбнулась и вздохнула, как будто показывая, что всего этого она ожидала.
– Soyez homme, mon ami, c'est moi qui veillerai a vos interets, [Будьте мужчиною, друг мой, я же стану блюсти за вашими интересами.] – сказала она в ответ на его взгляд и еще скорее пошла по коридору.
Пьер не понимал, в чем дело, и еще меньше, что значило veiller a vos interets, [блюсти ваши интересы,] но он понимал, что всё это так должно быть. Коридором они вышли в полуосвещенную залу, примыкавшую к приемной графа. Это была одна из тех холодных и роскошных комнат, которые знал Пьер с парадного крыльца. Но и в этой комнате, посередине, стояла пустая ванна и была пролита вода по ковру. Навстречу им вышли на цыпочках, не обращая на них внимания, слуга и причетник с кадилом. Они вошли в знакомую Пьеру приемную с двумя итальянскими окнами, выходом в зимний сад, с большим бюстом и во весь рост портретом Екатерины. Все те же люди, почти в тех же положениях, сидели, перешептываясь, в приемной. Все, смолкнув, оглянулись на вошедшую Анну Михайловну, с ее исплаканным, бледным лицом, и на толстого, большого Пьера, который, опустив голову, покорно следовал за нею.
На лице Анны Михайловны выразилось сознание того, что решительная минута наступила; она, с приемами деловой петербургской дамы, вошла в комнату, не отпуская от себя Пьера, еще смелее, чем утром. Она чувствовала, что так как она ведет за собою того, кого желал видеть умирающий, то прием ее был обеспечен. Быстрым взглядом оглядев всех, бывших в комнате, и заметив графова духовника, она, не то что согнувшись, но сделавшись вдруг меньше ростом, мелкою иноходью подплыла к духовнику и почтительно приняла благословение одного, потом другого духовного лица.
– Слава Богу, что успели, – сказала она духовному лицу, – мы все, родные, так боялись. Вот этот молодой человек – сын графа, – прибавила она тише. – Ужасная минута!
Проговорив эти слова, она подошла к доктору.
– Cher docteur, – сказала она ему, – ce jeune homme est le fils du comte… y a t il de l'espoir? [этот молодой человек – сын графа… Есть ли надежда?]
Доктор молча, быстрым движением возвел кверху глаза и плечи. Анна Михайловна точно таким же движением возвела плечи и глаза, почти закрыв их, вздохнула и отошла от доктора к Пьеру. Она особенно почтительно и нежно грустно обратилась к Пьеру.
– Ayez confiance en Sa misericorde, [Доверьтесь Его милосердию,] – сказала она ему, указав ему диванчик, чтобы сесть подождать ее, сама неслышно направилась к двери, на которую все смотрели, и вслед за чуть слышным звуком этой двери скрылась за нею.
Пьер, решившись во всем повиноваться своей руководительнице, направился к диванчику, который она ему указала. Как только Анна Михайловна скрылась, он заметил, что взгляды всех, бывших в комнате, больше чем с любопытством и с участием устремились на него. Он заметил, что все перешептывались, указывая на него глазами, как будто со страхом и даже с подобострастием. Ему оказывали уважение, какого прежде никогда не оказывали: неизвестная ему дама, которая говорила с духовными лицами, встала с своего места и предложила ему сесть, адъютант поднял уроненную Пьером перчатку и подал ему; доктора почтительно замолкли, когда он проходил мимо их, и посторонились, чтобы дать ему место. Пьер хотел сначала сесть на другое место, чтобы не стеснять даму, хотел сам поднять перчатку и обойти докторов, которые вовсе и не стояли на дороге; но он вдруг почувствовал, что это было бы неприлично, он почувствовал, что он в нынешнюю ночь есть лицо, которое обязано совершить какой то страшный и ожидаемый всеми обряд, и что поэтому он должен был принимать от всех услуги. Он принял молча перчатку от адъютанта, сел на место дамы, положив свои большие руки на симметрично выставленные колени, в наивной позе египетской статуи, и решил про себя, что всё это так именно должно быть и что ему в нынешний вечер, для того чтобы не потеряться и не наделать глупостей, не следует действовать по своим соображениям, а надобно предоставить себя вполне на волю тех, которые руководили им.
Не прошло и двух минут, как князь Василий, в своем кафтане с тремя звездами, величественно, высоко неся голову, вошел в комнату. Он казался похудевшим с утра; глаза его были больше обыкновенного, когда он оглянул комнату и увидал Пьера. Он подошел к нему, взял руку (чего он прежде никогда не делал) и потянул ее книзу, как будто он хотел испытать, крепко ли она держится.
– Courage, courage, mon ami. Il a demande a vous voir. C'est bien… [Не унывать, не унывать, мой друг. Он пожелал вас видеть. Это хорошо…] – и он хотел итти.
Но Пьер почел нужным спросить:
– Как здоровье…
Он замялся, не зная, прилично ли назвать умирающего графом; назвать же отцом ему было совестно.
– Il a eu encore un coup, il y a une demi heure. Еще был удар. Courage, mon аmi… [Полчаса назад у него был еще удар. Не унывать, мой друг…]
Пьер был в таком состоянии неясности мысли, что при слове «удар» ему представился удар какого нибудь тела. Он, недоумевая, посмотрел на князя Василия и уже потом сообразил, что ударом называется болезнь. Князь Василий на ходу сказал несколько слов Лоррену и прошел в дверь на цыпочках. Он не умел ходить на цыпочках и неловко подпрыгивал всем телом. Вслед за ним прошла старшая княжна, потом прошли духовные лица и причетники, люди (прислуга) тоже прошли в дверь. За этою дверью послышалось передвиженье, и наконец, всё с тем же бледным, но твердым в исполнении долга лицом, выбежала Анна Михайловна и, дотронувшись до руки Пьера, сказала:
– La bonte divine est inepuisable. C'est la ceremonie de l'extreme onction qui va commencer. Venez. [Милосердие Божие неисчерпаемо. Соборование сейчас начнется. Пойдемте.]
Пьер прошел в дверь, ступая по мягкому ковру, и заметил, что и адъютант, и незнакомая дама, и еще кто то из прислуги – все прошли за ним, как будто теперь уж не надо было спрашивать разрешения входить в эту комнату.


Пьер хорошо знал эту большую, разделенную колоннами и аркой комнату, всю обитую персидскими коврами. Часть комнаты за колоннами, где с одной стороны стояла высокая красного дерева кровать, под шелковыми занавесами, а с другой – огромный киот с образами, была красно и ярко освещена, как бывают освещены церкви во время вечерней службы. Под освещенными ризами киота стояло длинное вольтеровское кресло, и на кресле, обложенном вверху снежно белыми, не смятыми, видимо, только – что перемененными подушками, укрытая до пояса ярко зеленым одеялом, лежала знакомая Пьеру величественная фигура его отца, графа Безухого, с тою же седою гривой волос, напоминавших льва, над широким лбом и с теми же характерно благородными крупными морщинами на красивом красно желтом лице. Он лежал прямо под образами; обе толстые, большие руки его были выпростаны из под одеяла и лежали на нем. В правую руку, лежавшую ладонью книзу, между большим и указательным пальцами вставлена была восковая свеча, которую, нагибаясь из за кресла, придерживал в ней старый слуга. Над креслом стояли духовные лица в своих величественных блестящих одеждах, с выпростанными на них длинными волосами, с зажженными свечами в руках, и медленно торжественно служили. Немного позади их стояли две младшие княжны, с платком в руках и у глаз, и впереди их старшая, Катишь, с злобным и решительным видом, ни на мгновение не спуская глаз с икон, как будто говорила всем, что не отвечает за себя, если оглянется. Анна Михайловна, с кроткою печалью и всепрощением на лице, и неизвестная дама стояли у двери. Князь Василий стоял с другой стороны двери, близко к креслу, за резным бархатным стулом, который он поворотил к себе спинкой, и, облокотив на нее левую руку со свечой, крестился правою, каждый раз поднимая глаза кверху, когда приставлял персты ко лбу. Лицо его выражало спокойную набожность и преданность воле Божией. «Ежели вы не понимаете этих чувств, то тем хуже для вас», казалось, говорило его лицо.
Сзади его стоял адъютант, доктора и мужская прислуга; как бы в церкви, мужчины и женщины разделились. Всё молчало, крестилось, только слышны были церковное чтение, сдержанное, густое басовое пение и в минуты молчания перестановка ног и вздохи. Анна Михайловна, с тем значительным видом, который показывал, что она знает, что делает, перешла через всю комнату к Пьеру и подала ему свечу. Он зажег ее и, развлеченный наблюдениями над окружающими, стал креститься тою же рукой, в которой была свеча.