CSC/ECE 517 Spring 2014/ch1a 1c yj: Difference between revisions
(Add tables and some references.) |
|||
Line 4: | Line 4: | ||
In such internet age, web applications had been highly valued by programmers on the Web. To help those who aimed to utilize the design patterns to produce a maintainable, readable, and high quality code, many object-oriented web frameworks has been released public that allow enthusiastic programmers to take advantage of the well-built developing environment. | In such internet age, web applications had been highly valued by programmers on the Web. To help those who aimed to utilize the design patterns to produce a maintainable, readable, and high quality code, many object-oriented web frameworks has been released public that allow enthusiastic programmers to take advantage of the well-built developing environment. | ||
You may already see several examples from other chapters [ | You may already see several examples from other chapters([http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2010/ch3_3a_LG here], [http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2010/ch3_3a_LG here], and [http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2010/ch3_3a_LG here]), but today, we are going to deliver several further details on each, based on their strength and weakness, and make a comparision to make the decision on choosing the best object-oriented web frameworks being easier. | ||
=== Examples === | === Examples === | ||
Line 11: | Line 11: | ||
=== Narration === | === Narration === | ||
=== Hyperlinks to important terms === | === Hyperlinks to important terms === | ||
=== Comparison on Web Frameworks based on feature === | |||
{| {{table}} | |||
|+ Comparison on Web Frameworks based on feature <ref>https://www.google.com/url?q=http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks&sa=D&usg=ALhdy2-GUFjRpKBVDza8pizRGNvwCLG31A</ref> | |||
|- | |||
| align="center" style="background:#f0f0f0;"|'''Project''' | |||
| align="center" style="background:#f0f0f0;"|'''Language''' | |||
| align="center" style="background:#f0f0f0;"|'''Ajax''' | |||
| align="center" style="background:#f0f0f0;"|'''MVC framework''' | |||
| align="center" style="background:#f0f0f0;"|'''MVC push-pull''' | |||
| align="center" style="background:#f0f0f0;"|'''Testing framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''DB migration framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''Security framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''Template framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''Caching framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''Form validation framework(s)''' | |||
| align="center" style="background:#f0f0f0;"|'''Scaffolding''' | |||
|- | |||
| Ruby on Rails||Ruby||[http://prototypejs.org/ Prototype], [http://script.aculo.us/ script.aculo.us], [http://jquery.com/? jQuery]||Yes (ActiveRecord, Action Pack)||Push||Unit Tests, Functional Tests and Integration Tests||Yes||Plug-in||Yes||Yes||Yes||Yes | |||
|- | |||
| CakePHP||PHP >= 5.2||[http://prototypejs.org/ Prototype], [http://script.aculo.us/ script.aculo.us], [http://jquery.com/? jQuery], [http://http://mootools.net/ MooTools]||Yes||Push||Unit tests, object mocking, fixtures, code coverage, memory analysis with SimpleTest and XDebug PHPUnit (cakephp 2.0)||Yes, [http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html CakePHP Schema Shell] by default, and some others||[http://en.wikipedia.org/wiki/Access_control_list ACL-based]||Themes, layouts, views, elements||Memcache, Redis, XCache, APC, File||Validation, security||Yes | |||
|- | |||
| Django||Python||Yes||Yes||Push||unittest, test client, LiveServerTestCase||Provided by South(http://south.aeracode.org/), Django Evolution||[http://en.wikipedia.org/wiki/Access_control_list ACL-based]||Django Template Language||Cache Framework||Django Forms API||No, not by default | |||
|- | |||
| Play||Scala/Java||Yes||Yes||Push-pull||Unit test, Functional test, Selenium||Yes, similar to Ruby on Rails||via Core Security module||Yes||Yes||Server-side validation||Yes | |||
|- | |||
| | |||
|} | |||
=== References === | === References === | ||
<references/> |
Revision as of 21:13, 10 February 2014
CSC/ECE 517 Spring 2014/ch1a 1c yj
Background
In such internet age, web applications had been highly valued by programmers on the Web. To help those who aimed to utilize the design patterns to produce a maintainable, readable, and high quality code, many object-oriented web frameworks has been released public that allow enthusiastic programmers to take advantage of the well-built developing environment.
You may already see several examples from other chapters(here, here, and here), but today, we are going to deliver several further details on each, based on their strength and weakness, and make a comparision to make the decision on choosing the best object-oriented web frameworks being easier.
Examples
As there are tons of object-oriented web frameworks can be found online, we will need to limit only four of the most famous web frameworks we consider will be discussed today.
Narration
Hyperlinks to important terms
Comparison on Web Frameworks based on feature
Project | Language | Ajax | MVC framework | MVC push-pull | Testing framework(s) | DB migration framework(s) | Security framework(s) | Template framework(s) | Caching framework(s) | Form validation framework(s) | Scaffolding |
Ruby on Rails | Ruby | Prototype, script.aculo.us, jQuery | Yes (ActiveRecord, Action Pack) | Push | Unit Tests, Functional Tests and Integration Tests | Yes | Plug-in | Yes | Yes | Yes | Yes |
CakePHP | PHP >= 5.2 | Prototype, script.aculo.us, jQuery, MooTools | Yes | Push | Unit tests, object mocking, fixtures, code coverage, memory analysis with SimpleTest and XDebug PHPUnit (cakephp 2.0) | Yes, CakePHP Schema Shell by default, and some others | ACL-based | Themes, layouts, views, elements | Memcache, Redis, XCache, APC, File | Validation, security | Yes |
Django | Python | Yes | Yes | Push | unittest, test client, LiveServerTestCase | Provided by South(http://south.aeracode.org/), Django Evolution | ACL-based | Django Template Language | Cache Framework | Django Forms API | No, not by default |
Play | Scala/Java | Yes | Yes | Push-pull | Unit test, Functional test, Selenium | Yes, similar to Ruby on Rails | via Core Security module | Yes | Yes | Server-side validation | Yes |
References
<references/>