722:" to be used, increasing the simplicity of the site and allowing for better indexing by search engines. For example, a URL that ends with "/page.cgi?cat=science&topic=physics" could be changed to simply "/page/science/physics". This makes the URL easier for people to remember, read and write, and provides search engines with better information about the structural layout of the site. A graph traversal approach also tends to result in the creation of friendly URLs. A shorter URL such as "/page/science" tends to exist by default as that is simply a shorter form of the longer traversal to "/page/science/physics".
752:", is a web development technique for creating web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This is intended to increase a web page's interactivity, speed, maintainability, and
588:". A web cache stores copies of documents passing through it; subsequent requests may be satisfied from the cache if certain conditions are met. Some application frameworks provide mechanisms for caching documents and bypassing various stages of the page's preparation, such as database access or template interpretation.
1378:
Object
Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within
254:
Most MVC frameworks follow a push-based architecture also called "action-based". These frameworks use actions that do the required processing, and then "push" the data to the view layer to render the results. An alternative to this is pull-based architecture, sometimes also called "component-based".
330:
Server-side page changes typically require that the page be refreshed, but allow any language to be used and more computing power to be utilized. Client-side changes allow the page to be updated in small chunks which feels like a desktop application, but are limited to JavaScript and run in the
279:. The client on web applications is a web browser that runs HTML generated by the application layer. The term should not be confused with MVC, where, unlike in three-tier architecture, it is considered a good practice to keep business logic away from the controller, the "middle layer".
657:
as a persistence layer, which can generate a database schema at runtime capable of persisting the necessary information. This allows the application designer to design business objects without needing to explicitly define a database schema. Frameworks such as
781:, the complexity of programming directly in Ajax and JavaScript has become so apparent that compiler technology has stepped in, to allow developers to code in high-level languages such as Java, Python and Ruby. The first of these compilers was
529:" design pattern is considered to be a defining principle of a framework, and benefits the code by enforcing a common flow for a team which everyone can customize in similar ways. For example, some popular "microframeworks" such as Ruby's
793:
and RubyJS following some time after. These compilers and their associated widget set libraries make the development of rich media Ajax applications much more akin to that of developing desktop applications.
537:) allow for "middleware" hooks prior to and after HTTP requests. These middleware functions can be anything, and allow the user to define logging, authentication and session management, and redirecting.
695:
mapping or routing facility is the mechanism by which the framework interprets URLs. Some frameworks, such as Drupal and Django, match the provided URL against pre-determined patterns using
331:
user's browser, which may have limited computing power. Some mix of the two is typically used. Applications which make heavy use of JavaScript and only refresh parts of the page, are called
255:
These frameworks start with the view layer, which can then "pull" results from multiple controllers as needed. In this architecture, multiple controllers can be involved with a single view.
630:
to a database backend, enabling web applications to work with a variety of databases with no code changes, and allowing programmers to work with higher-level concepts. Additionally, some
1187:
1213:
143:. More recent implementations utilize persistent processes amongst other techniques to reduce the footprint in the server's resources and offer a general performance boost.
287:
Frameworks are built to support the construction of internet applications based on a single programming language, ranging in focus from general purpose tools such as
2223:
2549:
2539:
295:, which augment the capabilities of a specific language, to native-language programmable packages built around a specific user application, such as
808:
Some frameworks provide tools for creating and providing web services. These utilities may offer similar tools as the rest of the web application.
1061:
238:, and allows multiple interfaces to be applied. In web applications, this permits different views to be presented, for example serving different
139:
Original implementations of the CGI interface typically had adverse effects on the server load however, because each request started a separate
854:
1085:
618:
is one example that provides role-based access to pages, and provides a web-based interface for creating users and assigning them roles.
146:
In 1995, fully integrated server/language development environments first emerged and new web-specific languages were introduced, such as
17:
2531:
2435:
1511:
1491:
860:
215:
902:
763:
that exclusively deal with Ajax support. Some Ajax frameworks are even embedded as a part of larger frameworks. For example, the
1416:
1104:
1440:
Maximilien, E. M. (2006). "Tutorial 4: Web
Services on Rails: Using Ruby and Rails for Web Services Development and Mashups".
1191:
2586:
1576:
272:
936:
703:
techniques to translate the provided URL into one that the underlying engine will recognize. Another technique is that of
976:
176:
In the late 1990s, mature, "full stack" frameworks began to appear, that often gathered multiple libraries useful for
1457:
165:
to help with common tasks, web applications often require specific libraries for particular tasks, such as creating
2516:
1756:
650:
1391:
3060:
2501:
826:
2715:
1893:
1125:
891:
841:
830:
2854:
2401:
2377:
2357:
2129:
880:
662:
can also work in reverse, that is, define properties of model objects at runtime based on a database schema.
209:
193:
1256:
525:
of a program and allow the user of the framework to "hook into" that flow by exposing various events. This "
2581:
2428:
2286:
1484:
914:
614:
to identify the users of the application, and restrict access to functions based on some defined criteria.
275:. The application contains the business logic, running on a server and communicates with the client using
3070:
2735:
2591:
2571:
2391:
2268:
2235:
1741:
639:
631:
312:
2544:
2917:
2611:
2606:
2343:
83:
3134:
2904:
2817:
2711:
1217:
714:
A URL mapping system that uses pattern matching or rewriting to route and handle requests allows for
635:
296:
2496:
1693:
1333:
885:
692:
597:
132:(CGI) standard was introduced for interfacing external applications with web servers, to provide a
129:
2795:
3172:
3139:
2937:
2421:
2373:
2248:
2192:
1814:
1673:
1477:
1231:
477:
463:
415:
332:
264:
128:. Any modifications to published pages needed to be performed by the pages' author. In 1993, the
2182:
1089:
2623:
2461:
2276:
2197:
2152:
1868:
1726:
395:
375:
308:
231:
1019:
2859:
2812:
2742:
2511:
2162:
1903:
1683:
1280:
870:
585:
574:
385:
197:
66:. Web frameworks aim to automate the overhead associated with common activities performed in
994:
2932:
2800:
2631:
2294:
2202:
2167:
2019:
1828:
1678:
1544:
1362:
896:
875:
837:
778:
666:
526:
107:
1731:
711:, where a URL is decomposed in steps that traverse an object graph (of models and views).
8:
3144:
2927:
2765:
2554:
2059:
1941:
1761:
1581:
570:
546:
360:
162:
155:
140:
71:
2601:
1308:
1146:
1040:
3042:
2864:
2730:
2353:
2327:
2258:
2187:
2049:
1999:
1711:
1706:
1167:
865:
786:
767:
736:
696:
530:
390:
335:
and typically make use of a client-side JavaScript web framework to organize the code.
320:
316:
79:
47:
3055:
2686:
2397:
2079:
2074:
1951:
1946:
1614:
1559:
1453:
410:
267:, applications are structured around three physical tiers: client, application, and
62:. Web frameworks provide a standard way to build and deploy web applications on the
3124:
3105:
3046:
3016:
3006:
2094:
2024:
1898:
1637:
1629:
1619:
1445:
741:
682:
654:
581:
485:
440:
133:
91:
307:
Web frameworks must function according to the architectural rules of browsers and
3129:
3100:
2559:
1771:
704:
686:
177:
95:
67:
51:
944:
2922:
2894:
2849:
2299:
2044:
1796:
1736:
1235:
909:
760:
731:
715:
670:
653:
and/or following well-known conventions. For example, many Java frameworks use
603:
567:
450:
288:
227:
181:
113:
63:
3166:
3112:
3090:
2977:
2879:
2827:
2564:
2253:
1786:
1766:
1554:
980:
659:
607:
420:
345:
292:
223:
170:
759:
Due to the complexity of Ajax programming in JavaScript, there are numerous
161:
Although the vast majority of languages for creating dynamic web pages have
3050:
2706:
2576:
1908:
1833:
1751:
1539:
1534:
834:
817:
719:
522:
350:
55:
1449:
1334:"Capital One Engineering – Philosophies that Shaped Successful Frameworks"
649:
Some frameworks minimize web application configuration through the use of
2947:
2884:
2778:
2756:
2702:
2452:
2084:
1984:
1956:
1863:
1823:
1647:
1549:
803:
510:
469:
405:
365:
243:
125:
833:(ROA) infrastructure for building collections of resources in a sort of
2889:
2869:
2844:
2790:
2783:
2671:
2651:
2387:
2383:
2207:
2064:
2014:
1994:
1913:
1843:
1806:
1746:
1591:
1571:
744:
611:
578:
534:
435:
380:
324:
235:
219:
147:
87:
2912:
2874:
2666:
2521:
2314:
2137:
2109:
2004:
1818:
1791:
753:
700:
563:
557:
489:
473:
117:
3095:
2952:
2720:
2681:
2676:
2656:
2646:
2641:
2322:
2304:
2147:
2142:
2069:
1873:
1838:
1721:
1716:
481:
425:
268:
239:
75:
2217:
3065:
3011:
2807:
2725:
2506:
2444:
2413:
2363:
2157:
2099:
2039:
2034:
2009:
1979:
1888:
1883:
1878:
1701:
1665:
1655:
1586:
1529:
1469:
823:
774:
430:
400:
355:
230:(the "view"). This is generally considered a good practice as it
59:
3022:
2962:
2957:
2836:
2636:
2489:
2479:
2474:
2347:
2212:
2029:
1989:
1961:
1923:
1918:
1858:
1848:
1781:
1776:
1609:
1566:
782:
764:
615:
497:
493:
370:
242:
for mobile vs. desktop browsers, or providing machine-readable
2990:
2985:
2967:
2773:
2484:
2172:
2114:
2104:
2089:
1601:
958:
643:
621:
1442:
2006 IEEE International
Conference on Web Services (ICWS'06)
1257:"Web Application Architecture – Client-Side vs. Server-Side"
299:(CMS), some mobile development tools and some portal tools.
3117:
2596:
2469:
2243:
2177:
2054:
1933:
1853:
1521:
790:
708:
276:
166:
121:
2942:
2661:
2367:
2119:
1971:
1105:"Using Client Access Express in a three tier environment"
748:
627:
445:
151:
27:
Software framework to support the development of websites
327:. Either approach has its advantages and disadvantages.
503:
1357:
1355:
1353:
302:
187:
1350:
665:Other features web frameworks may provide include
3164:
789:, with ports to Python and Ruby in the form of
50:that is designed to support the development of
1083:
323:and can then be modified by the browser using
203:
2429:
1485:
855:Comparison of JavaScript-based web frameworks
634:frameworks contain mapping tools to provide
249:
90:. Although they often target development of
1126:"Understanding the Three-Tier Architecture"
934:
773:With the increased interest in developing "
70:. For example, many web frameworks provide
2436:
2422:
1492:
1478:
1439:
622:Database access, mapping and configuration
258:
1254:
1020:"Clarification on MVC= Pull and MVC Push"
282:
1281:"AngularJS vs. Backbone.js vs. Ember.js"
959:"Top Open-Source Static Site Generators"
861:Comparison of server-side web frameworks
1188:"ASP.NET MVC Controller Best Practices"
1017:
903:List of rich web application frameworks
14:
3165:
1211:
540:
2417:
1473:
1302:
1300:
1232:"Getting Started With Web Frameworks"
1144:
1038:
626:Many web frameworks create a unified
192:Most web frameworks are based on the
504:Discussion forums, wikis and weblogs
86:management, and they often promote
24:
2443:
1499:
1306:
1297:
1165:
1147:"Pragmatic Architecture: Layering"
1123:
1059:
303:General-purpose website frameworks
124:text files that were published on
116:was not inherently dynamic, early
25:
3184:
1086:"Introduction to Web Development"
811:
188:Types of framework architectures
1433:
1409:
1384:
1331:
1325:
1273:
1255:KLIMUSHYN, Mel (6 April 2015).
1248:
1224:
1205:
1180:
1159:
1138:
1117:
1102:
977:"CGI: Common Gateway Interface"
797:
214:Many frameworks follow the MVC
1214:"Skinny Controller, Fat Model"
1096:
1077:
1053:
1032:
1011:
987:
969:
951:
928:
892:List of web service frameworks
842:Resource Description Framework
831:resource-oriented architecture
770:is included in Ruby on Rails.
676:
602:Some web frameworks come with
457:
338:
319:. Webpages are served up by a
271:. The database is normally an
94:, they are also applicable to
13:
1:
921:
881:Convention over configuration
829:frameworks are now providing
521:Frameworks typically set the
1392:"Active Record Transactions"
1018:Thomson, Kris (2003-10-29).
915:Mobile development framework
610:frameworks, that enable the
136:that reflected user inputs.
7:
1742:Remote Application Platform
1309:"bliki: InversionOfControl"
1041:"Three-tiered distribution"
937:"Web application framework"
847:
591:
516:
226:(the "controller") and the
204:Model–view–controller (MVC)
184:for web developers to use.
10:
3189:
1062:"clustering_concepts_10en"
815:
801:
729:
680:
595:
555:
551:
544:
461:
297:content management systems
207:
105:
101:
3083:
3035:
2999:
2976:
2903:
2835:
2826:
2764:
2755:
2695:
2622:
2530:
2460:
2451:
2336:
2313:
2285:
2267:
2234:
2128:
1970:
1932:
1805:
1692:
1664:
1646:
1628:
1600:
1520:
1507:
1168:"3-Tier Web Architecture"
840:, based on concepts from
636:object-relational mapping
250:Push-based vs. pull-based
40:web application framework
18:Web application framework
699:, while some others use
671:database migration tools
598:Web application security
333:single-page applications
130:Common Gateway Interface
120:consisted of hand-coded
54:including web services,
725:
464:Single-page application
265:three-tier organization
259:Three-tier organization
180:into a single cohesive
1421:www.dlsweb.rmit.edu.au
1363:"Active Record Basics"
283:Framework applications
1450:10.1109/ICWS.2006.139
886:Don't repeat yourself
871:Application framework
779:rich web applications
667:transactional support
216:architectural pattern
210:Model–view–controller
194:model–view–controller
112:As the design of the
106:Further information:
1084:Robert R. Perkoski.
897:Rich web application
876:Application security
527:inversion of control
108:Rich web application
2344:Application Express
697:regular expressions
573:in order to reduce
562:Web caching is the
547:Web template system
541:Web template system
156:Active Server Pages
2731:Application server
1444:. pp. xliii.
866:Application server
822:A number of newer
787:Google Web Toolkit
768:JavaScript library
48:software framework
3160:
3159:
3079:
3078:
3056:Browser extension
3031:
3030:
2751:
2750:
2687:Phusion Passenger
2411:
2410:
1338:www.capitalone.io
935:Multiple (wiki).
739:, shorthand for "
584:, and perceived "
468:Examples include
411:Pop PHP Framework
92:dynamic web sites
16:(Redirected from
3180:
3125:Web API security
3047:Remote scripting
3017:Web SQL Database
2833:
2832:
2762:
2761:
2458:
2457:
2438:
2431:
2424:
2415:
2414:
1638:ColdBox Platform
1494:
1487:
1480:
1471:
1470:
1464:
1463:
1437:
1431:
1430:
1428:
1427:
1413:
1407:
1406:
1404:
1402:
1388:
1382:
1381:
1375:
1373:
1359:
1348:
1347:
1345:
1344:
1329:
1323:
1322:
1320:
1319:
1313:martinfowler.com
1307:Fowler, Martin.
1304:
1295:
1294:
1292:
1291:
1277:
1271:
1270:
1268:
1267:
1252:
1246:
1245:
1243:
1242:
1228:
1222:
1221:
1216:. Archived from
1209:
1203:
1202:
1200:
1199:
1190:. Archived from
1184:
1178:
1177:
1175:
1174:
1163:
1157:
1156:
1154:
1153:
1142:
1136:
1135:
1133:
1132:
1121:
1115:
1114:
1112:
1111:
1100:
1094:
1093:
1088:. Archived from
1081:
1075:
1074:
1072:
1071:
1066:
1057:
1051:
1050:
1048:
1047:
1036:
1030:
1029:
1027:
1026:
1015:
1009:
1008:
1006:
1005:
991:
985:
984:
979:. Archived from
973:
967:
966:
955:
949:
948:
943:. Archived from
932:
707:such as used by
683:Front controller
533:(which inspired
441:Wt (web toolkit)
232:modularizes code
218:to separate the
134:dynamic web page
82:frameworks, and
52:web applications
21:
3188:
3187:
3183:
3182:
3181:
3179:
3178:
3177:
3163:
3162:
3161:
3156:
3130:Web application
3075:
3027:
2995:
2972:
2899:
2822:
2747:
2691:
2618:
2597:JavaScript JSGI
2577:ASP.NET Handler
2560:Jakarta Servlet
2526:
2447:
2442:
2412:
2407:
2337:Other languages
2332:
2309:
2281:
2263:
2230:
2124:
1966:
1928:
1801:
1688:
1660:
1642:
1624:
1596:
1516:
1503:
1498:
1468:
1467:
1460:
1438:
1434:
1425:
1423:
1415:
1414:
1410:
1400:
1398:
1390:
1389:
1385:
1371:
1369:
1361:
1360:
1351:
1342:
1340:
1330:
1326:
1317:
1315:
1305:
1298:
1289:
1287:
1285:www.airpair.com
1279:
1278:
1274:
1265:
1263:
1253:
1249:
1240:
1238:
1230:
1229:
1225:
1210:
1206:
1197:
1195:
1186:
1185:
1181:
1172:
1170:
1164:
1160:
1151:
1149:
1143:
1139:
1130:
1128:
1122:
1118:
1109:
1107:
1101:
1097:
1082:
1078:
1069:
1067:
1064:
1058:
1054:
1045:
1043:
1037:
1033:
1024:
1022:
1016:
1012:
1003:
1001:
993:
992:
988:
975:
974:
970:
957:
956:
952:
933:
929:
924:
919:
850:
820:
814:
806:
800:
761:Ajax frameworks
734:
728:
705:graph traversal
689:
687:URL redirection
679:
632:object-oriented
624:
600:
594:
560:
554:
549:
543:
519:
506:
466:
460:
455:
341:
305:
285:
261:
252:
212:
206:
190:
178:web development
110:
104:
96:static websites
68:web development
28:
23:
22:
15:
12:
11:
5:
3186:
3176:
3175:
3173:Web frameworks
3158:
3157:
3155:
3154:
3149:
3148:
3147:
3142:
3137:
3127:
3122:
3121:
3120:
3110:
3109:
3108:
3103:
3093:
3087:
3085:
3081:
3080:
3077:
3076:
3074:
3073:
3068:
3063:
3058:
3053:
3039:
3037:
3033:
3032:
3029:
3028:
3026:
3025:
3020:
3019:(formerly W3C)
3014:
3009:
3003:
3001:
2997:
2996:
2994:
2993:
2988:
2982:
2980:
2974:
2973:
2971:
2970:
2965:
2960:
2955:
2950:
2945:
2940:
2935:
2930:
2925:
2920:
2915:
2909:
2907:
2901:
2900:
2898:
2897:
2895:XMLHttpRequest
2892:
2887:
2882:
2877:
2872:
2867:
2862:
2857:
2852:
2847:
2841:
2839:
2830:
2824:
2823:
2821:
2820:
2815:
2810:
2805:
2804:
2803:
2793:
2788:
2787:
2786:
2781:
2770:
2768:
2759:
2753:
2752:
2749:
2748:
2746:
2745:
2740:
2739:
2738:
2728:
2723:
2718:
2709:
2699:
2697:
2693:
2692:
2690:
2689:
2684:
2679:
2674:
2669:
2664:
2659:
2654:
2649:
2644:
2639:
2634:
2628:
2626:
2624:Apache modules
2620:
2619:
2617:
2616:
2615:
2614:
2604:
2599:
2594:
2589:
2584:
2579:
2574:
2569:
2568:
2567:
2557:
2552:
2547:
2542:
2536:
2534:
2528:
2527:
2525:
2524:
2519:
2514:
2509:
2504:
2499:
2494:
2493:
2492:
2487:
2482:
2477:
2466:
2464:
2455:
2449:
2448:
2445:Web interfaces
2441:
2440:
2433:
2426:
2418:
2409:
2408:
2406:
2405:
2395:
2381:
2371:
2361:
2351:
2340:
2338:
2334:
2333:
2331:
2330:
2325:
2319:
2317:
2311:
2310:
2308:
2307:
2302:
2297:
2291:
2289:
2283:
2282:
2280:
2279:
2273:
2271:
2265:
2264:
2262:
2261:
2256:
2251:
2246:
2240:
2238:
2232:
2231:
2229:
2228:
2220:
2215:
2210:
2205:
2200:
2195:
2190:
2185:
2180:
2175:
2170:
2165:
2160:
2155:
2150:
2145:
2140:
2134:
2132:
2126:
2125:
2123:
2122:
2117:
2112:
2107:
2102:
2097:
2092:
2087:
2082:
2077:
2072:
2067:
2062:
2057:
2052:
2047:
2042:
2037:
2032:
2027:
2022:
2017:
2012:
2007:
2002:
1997:
1992:
1987:
1982:
1976:
1974:
1968:
1967:
1965:
1964:
1959:
1954:
1949:
1944:
1938:
1936:
1930:
1929:
1927:
1926:
1921:
1916:
1911:
1906:
1901:
1896:
1891:
1886:
1881:
1876:
1871:
1866:
1861:
1856:
1851:
1846:
1841:
1836:
1831:
1826:
1821:
1811:
1809:
1803:
1802:
1800:
1799:
1794:
1789:
1784:
1779:
1774:
1769:
1764:
1759:
1754:
1749:
1744:
1739:
1734:
1729:
1724:
1719:
1714:
1709:
1704:
1698:
1696:
1690:
1689:
1687:
1686:
1681:
1676:
1670:
1668:
1662:
1661:
1659:
1658:
1652:
1650:
1644:
1643:
1641:
1640:
1634:
1632:
1626:
1625:
1623:
1622:
1617:
1612:
1606:
1604:
1598:
1597:
1595:
1594:
1589:
1584:
1579:
1574:
1569:
1564:
1563:
1562:
1557:
1552:
1547:
1542:
1537:
1526:
1524:
1518:
1517:
1515:
1514:
1508:
1505:
1504:
1501:Web frameworks
1497:
1496:
1489:
1482:
1474:
1466:
1465:
1458:
1432:
1417:"What is AJAX"
1408:
1383:
1349:
1324:
1296:
1272:
1247:
1236:Wired Magazine
1223:
1220:on 2015-05-16.
1204:
1179:
1158:
1137:
1116:
1095:
1092:on 2013-11-07.
1076:
1052:
1031:
1010:
986:
983:on 2009-04-09.
968:
950:
947:on 2015-07-23.
926:
925:
923:
920:
918:
917:
912:
910:Solution stack
907:
906:
905:
894:
889:
883:
878:
873:
868:
863:
858:
851:
849:
846:
816:Main article:
813:
810:
802:Main article:
799:
796:
732:Ajax framework
730:Main article:
727:
724:
691:A framework's
678:
675:
623:
620:
604:authentication
596:Main article:
593:
590:
556:Main article:
553:
550:
545:Main article:
542:
539:
518:
515:
514:
513:
505:
502:
462:Main article:
459:
456:
454:
453:
451:Zend Framework
448:
443:
438:
433:
428:
423:
418:
413:
408:
403:
398:
393:
388:
383:
378:
373:
368:
363:
358:
353:
348:
342:
340:
337:
304:
301:
289:Zend Framework
284:
281:
260:
257:
251:
248:
228:user interface
224:business rules
208:Main article:
205:
202:
189:
186:
182:software stack
169:(for example,
114:World Wide Web
103:
100:
64:World Wide Web
26:
9:
6:
4:
3:
2:
3185:
3174:
3171:
3170:
3168:
3153:
3152:Web framework
3150:
3146:
3143:
3141:
3138:
3136:
3133:
3132:
3131:
3128:
3126:
3123:
3119:
3116:
3115:
3114:
3113:Web standards
3111:
3107:
3104:
3102:
3099:
3098:
3097:
3094:
3092:
3091:Microservices
3089:
3088:
3086:
3082:
3072:
3069:
3067:
3064:
3062:
3059:
3057:
3054:
3052:
3048:
3044:
3041:
3040:
3038:
3034:
3024:
3021:
3018:
3015:
3013:
3010:
3008:
3005:
3004:
3002:
2998:
2992:
2989:
2987:
2984:
2983:
2981:
2979:
2975:
2969:
2966:
2964:
2961:
2959:
2956:
2954:
2951:
2949:
2946:
2944:
2941:
2939:
2936:
2934:
2931:
2929:
2926:
2924:
2921:
2919:
2916:
2914:
2911:
2910:
2908:
2906:
2902:
2896:
2893:
2891:
2888:
2886:
2883:
2881:
2880:Web messaging
2878:
2876:
2873:
2871:
2868:
2866:
2863:
2861:
2858:
2856:
2853:
2851:
2848:
2846:
2843:
2842:
2840:
2838:
2834:
2831:
2829:
2825:
2819:
2816:
2814:
2811:
2809:
2806:
2802:
2799:
2798:
2797:
2794:
2792:
2789:
2785:
2782:
2780:
2777:
2776:
2775:
2772:
2771:
2769:
2767:
2763:
2760:
2758:
2754:
2744:
2741:
2737:
2734:
2733:
2732:
2729:
2727:
2724:
2722:
2719:
2717:
2713:
2710:
2708:
2704:
2701:
2700:
2698:
2694:
2688:
2685:
2683:
2680:
2678:
2675:
2673:
2670:
2668:
2665:
2663:
2660:
2658:
2655:
2653:
2650:
2648:
2645:
2643:
2640:
2638:
2635:
2633:
2630:
2629:
2627:
2625:
2621:
2613:
2610:
2609:
2608:
2605:
2603:
2600:
2598:
2595:
2593:
2590:
2588:
2585:
2583:
2580:
2578:
2575:
2573:
2570:
2566:
2563:
2562:
2561:
2558:
2556:
2553:
2551:
2548:
2546:
2543:
2541:
2538:
2537:
2535:
2533:
2529:
2523:
2520:
2518:
2515:
2513:
2510:
2508:
2505:
2503:
2500:
2498:
2495:
2491:
2488:
2486:
2483:
2481:
2478:
2476:
2473:
2472:
2471:
2468:
2467:
2465:
2463:
2459:
2456:
2454:
2450:
2446:
2439:
2434:
2432:
2427:
2425:
2420:
2419:
2416:
2403:
2399:
2396:
2393:
2389:
2385:
2382:
2379:
2375:
2372:
2369:
2365:
2362:
2359:
2355:
2352:
2349:
2345:
2342:
2341:
2339:
2335:
2329:
2326:
2324:
2321:
2320:
2318:
2316:
2312:
2306:
2303:
2301:
2298:
2296:
2293:
2292:
2290:
2288:
2284:
2278:
2275:
2274:
2272:
2270:
2266:
2260:
2257:
2255:
2254:Ruby on Rails
2252:
2250:
2247:
2245:
2242:
2241:
2239:
2237:
2233:
2226:
2225:
2221:
2219:
2216:
2214:
2211:
2209:
2206:
2204:
2201:
2199:
2196:
2194:
2191:
2189:
2186:
2184:
2181:
2179:
2176:
2174:
2171:
2169:
2166:
2164:
2161:
2159:
2156:
2154:
2151:
2149:
2146:
2144:
2141:
2139:
2136:
2135:
2133:
2131:
2127:
2121:
2118:
2116:
2113:
2111:
2108:
2106:
2103:
2101:
2098:
2096:
2093:
2091:
2088:
2086:
2083:
2081:
2078:
2076:
2073:
2071:
2068:
2066:
2063:
2061:
2058:
2056:
2053:
2051:
2048:
2046:
2043:
2041:
2038:
2036:
2033:
2031:
2028:
2026:
2023:
2021:
2018:
2016:
2013:
2011:
2008:
2006:
2003:
2001:
1998:
1996:
1993:
1991:
1988:
1986:
1983:
1981:
1978:
1977:
1975:
1973:
1969:
1963:
1960:
1958:
1955:
1953:
1950:
1948:
1945:
1943:
1940:
1939:
1937:
1935:
1931:
1925:
1922:
1920:
1917:
1915:
1912:
1910:
1907:
1905:
1902:
1900:
1897:
1895:
1892:
1890:
1887:
1885:
1882:
1880:
1877:
1875:
1872:
1870:
1867:
1865:
1862:
1860:
1857:
1855:
1852:
1850:
1847:
1845:
1842:
1840:
1837:
1835:
1832:
1830:
1827:
1825:
1822:
1820:
1816:
1813:
1812:
1810:
1808:
1804:
1798:
1795:
1793:
1790:
1788:
1785:
1783:
1780:
1778:
1775:
1773:
1770:
1768:
1765:
1763:
1760:
1758:
1755:
1753:
1750:
1748:
1745:
1743:
1740:
1738:
1735:
1733:
1730:
1728:
1725:
1723:
1720:
1718:
1715:
1713:
1710:
1708:
1705:
1703:
1700:
1699:
1697:
1695:
1691:
1685:
1682:
1680:
1677:
1675:
1672:
1671:
1669:
1667:
1663:
1657:
1654:
1653:
1651:
1649:
1645:
1639:
1636:
1635:
1633:
1631:
1627:
1621:
1618:
1616:
1613:
1611:
1608:
1607:
1605:
1603:
1599:
1593:
1590:
1588:
1585:
1583:
1580:
1578:
1575:
1573:
1570:
1568:
1565:
1561:
1558:
1556:
1553:
1551:
1548:
1546:
1543:
1541:
1538:
1536:
1533:
1532:
1531:
1528:
1527:
1525:
1523:
1519:
1513:
1510:
1509:
1506:
1502:
1495:
1490:
1488:
1483:
1481:
1476:
1475:
1472:
1461:
1459:0-7695-2669-1
1455:
1451:
1447:
1443:
1436:
1422:
1418:
1412:
1397:
1396:Ruby on Rails
1393:
1387:
1380:
1368:
1367:Ruby on Rails
1364:
1358:
1356:
1354:
1339:
1335:
1328:
1314:
1310:
1303:
1301:
1286:
1282:
1276:
1262:
1258:
1251:
1237:
1233:
1227:
1219:
1215:
1208:
1194:on 2011-10-11
1193:
1189:
1183:
1169:
1162:
1148:
1141:
1127:
1120:
1106:
1099:
1091:
1087:
1080:
1063:
1056:
1042:
1035:
1021:
1014:
1000:
996:
990:
982:
978:
972:
964:
960:
954:
946:
942:
938:
931:
927:
916:
913:
911:
908:
904:
901:
900:
898:
895:
893:
890:
887:
884:
882:
879:
877:
874:
872:
869:
867:
864:
862:
859:
857:(client-side)
856:
853:
852:
845:
843:
839:
836:
832:
828:
825:
819:
812:Web resources
809:
805:
795:
792:
788:
784:
780:
776:
771:
769:
766:
762:
757:
755:
751:
750:
746:
743:
738:
733:
723:
721:
720:friendly URLs
717:
712:
710:
706:
702:
698:
694:
688:
684:
674:
672:
668:
663:
661:
660:Ruby on Rails
656:
652:
651:introspection
647:
645:
641:
638:, which maps
637:
633:
629:
619:
617:
613:
609:
608:authorization
605:
599:
589:
587:
583:
580:
576:
572:
569:
565:
559:
548:
538:
536:
532:
528:
524:
512:
508:
507:
501:
499:
495:
491:
487:
483:
479:
475:
471:
465:
452:
449:
447:
444:
442:
439:
437:
434:
432:
429:
427:
424:
422:
421:Ruby on Rails
419:
417:
414:
412:
409:
407:
404:
402:
399:
397:
394:
392:
389:
387:
384:
382:
379:
377:
374:
372:
369:
367:
364:
362:
359:
357:
354:
352:
349:
347:
346:Apache Wicket
344:
343:
336:
334:
328:
326:
322:
318:
314:
310:
300:
298:
294:
293:Ruby on Rails
290:
280:
278:
274:
270:
266:
256:
247:
245:
241:
237:
233:
229:
225:
221:
217:
211:
201:
199:
195:
185:
183:
179:
174:
172:
171:Jakarta Faces
168:
164:
159:
157:
153:
149:
144:
142:
137:
135:
131:
127:
123:
119:
115:
109:
99:
97:
93:
89:
85:
81:
77:
73:
69:
65:
61:
57:
56:web resources
53:
49:
45:
41:
37:
33:
32:web framework
19:
3151:
2766:Browser APIs
2707:Web resource
2222:
2095:Silverstripe
1909:Sencha Touch
1834:Dojo Toolkit
1545:Dynamic Data
1500:
1441:
1435:
1424:. Retrieved
1420:
1411:
1399:. Retrieved
1395:
1386:
1377:
1370:. Retrieved
1366:
1341:. Retrieved
1337:
1332:Xue, Qiang.
1327:
1316:. Retrieved
1312:
1288:. Retrieved
1284:
1275:
1264:. Retrieved
1260:
1250:
1239:. Retrieved
1226:
1218:the original
1212:Jamis Buck.
1207:
1196:. Retrieved
1192:the original
1182:
1171:. Retrieved
1161:
1150:. Retrieved
1140:
1129:. Retrieved
1119:
1108:. Retrieved
1098:
1090:the original
1079:
1068:. Retrieved
1055:
1044:. Retrieved
1034:
1023:. Retrieved
1013:
1002:. Retrieved
998:
989:
981:the original
971:
962:
953:
945:the original
940:
930:
835:Semantic Web
821:
818:Web resource
807:
798:Web services
785:followed by
772:
758:
742:Asynchronous
740:
735:
713:
690:
664:
648:
625:
601:
561:
523:control flow
520:
467:
351:ASP.NET Core
329:
306:
286:
262:
253:
246:interfaces.
213:
191:
175:
160:
145:
138:
111:
43:
39:
35:
31:
29:
3145:Progressive
3140:Single-page
2948:WebAssembly
2928:Geolocation
2885:Web storage
2791:C NPRuntime
2779:LiveConnect
2757:Client-side
2703:Web service
2632:mod_include
2587:Python ASGI
2582:Python WSGI
2532:Server APIs
2453:Server-side
2085:ProcessWire
1985:CodeIgniter
1957:Mojolicious
1864:Knockout.js
1824:Backbone.js
1648:Common Lisp
1379:its tables.
1261:Atomic Spin
1145:Microsoft.
1039:Microsoft.
999:www.ibm.com
899:(obsolete)
804:Web service
677:URL mapping
511:WikiWikiWeb
470:Backbone.js
458:Client-side
406:Mojolicious
366:CodeIgniter
339:Server-side
315:, which is
244:web service
234:, promotes
126:web servers
2913:DOM events
2890:Web worker
2875:WebSockets
2736:comparison
2672:mod_python
2652:mod_parrot
2485:Encryption
2388:JavaScript
2384:SproutCore
2208:TurboGears
2065:PHP-Fusion
1995:eZ Publish
1914:SproutCore
1844:Express.js
1807:JavaScript
1630:ColdFusion
1592:WebSharper
1512:Comparison
1426:2021-05-07
1343:2016-03-06
1318:2016-03-06
1290:2016-06-04
1266:2016-03-06
1241:2018-04-02
1198:2011-09-19
1173:2011-09-19
1152:2011-09-19
1131:2011-09-19
1110:2011-09-19
1070:2011-09-19
1046:2011-09-19
1025:2007-07-29
1004:2021-05-07
922:References
745:JavaScript
681:See also:
612:web server
535:Express.js
436:Spring MVC
381:Express.js
325:JavaScript
236:code reuse
220:data model
148:ColdFusion
88:code reuse
80:templating
3071:Scripting
2933:IndexedDB
2784:XPConnect
2743:Scripting
2667:mod_proxy
2612:container
2602:Perl PSGI
2592:Ruby Rack
2565:container
2522:WebSocket
2462:Protocols
2315:Smalltalk
2138:BlueBream
2110:WordPress
2020:Gyroscope
1894:Prototype
1819:AngularJS
1792:WaveMaker
1560:Web Forms
1401:March 20,
1372:March 20,
963:StaticGen
754:usability
701:rewriting
655:Hibernate
575:bandwidth
571:documents
558:Web cache
509:WikiBase/
490:jQuery UI
474:AngularJS
317:stateless
309:protocols
240:web pages
163:libraries
118:hypertext
72:libraries
3167:Category
3096:Web page
2953:WebAuthn
2828:Web APIs
2721:Open API
2682:mod_ruby
2677:mod_wsgi
2657:mod_perl
2647:mod_mono
2642:mod_lisp
2572:CLI OWIN
2323:AIDA/Web
2305:Scalatra
2148:CubicWeb
2143:CherryPy
2070:PHP-Nuke
2000:Fat-Free
1942:Catalyst
1874:MooTools
1839:Ember.js
1772:Tapestry
1722:JHipster
1717:ICEfaces
1582:MonoRail
1166:Arokia.
1124:Oracle.
1060:Oracle.
941:Docforge
848:See also
838:ontology
592:Security
517:Features
482:Ember.js
426:Sails.js
361:Catalyst
311:such as
269:database
78:access,
76:database
60:web APIs
3106:Dynamic
3066:Web IDL
3012:GraphQL
2978:Khronos
2808:ActiveX
2796:C PPAPI
2774:C NPAPI
2726:Webhook
2662:mod_php
2607:Portlet
2555:COM ASP
2550:C ISAPI
2545:C ASAPI
2540:C NSAPI
2374:Phoenix
2364:OpenACS
2328:Seaside
2259:Sinatra
2249:Padrino
2203:Tornado
2193:Quixote
2188:Pyramid
2158:FastAPI
2100:Symfony
2075:Pop PHP
2060:Phalcon
2050:Midgard
2040:Laravel
2035:Laminas
2030:Joomla!
2010:FuelPHP
1980:CakePHP
1952:Maypole
1889:OpenUI5
1884:Node.js
1879:Next.js
1829:Closure
1815:Angular
1762:Stripes
1732:Mojarra
1702:AppFuse
1674:Servant
1666:Haskell
1656:CL-HTTP
1587:Umbraco
1530:ASP.NET
844:(RDF).
827:RESTful
824:Web 2.0
775:Web 2.0
716:shorter
640:objects
577:usage,
564:caching
552:Caching
531:Sinatra
486:ReactJS
478:Angular
431:Symfony
416:Phoenix
401:Laravel
356:CakePHP
198:pattern
141:process
102:History
84:session
46:) is a
3101:Static
3084:Topics
3061:Mashup
3036:Topics
3023:WebUSB
3000:Others
2963:WebRTC
2958:WebGPU
2850:Canvas
2837:WHATWG
2696:Topics
2637:mod_jk
2490:WebDAV
2402:Erlang
2378:Elixir
2358:Groovy
2354:Grails
2348:PL/SQL
2277:Rocket
2218:Zope 2
2213:web2py
2198:TACTIC
2183:Pylons
2153:Django
2130:Python
1990:Drupal
1962:WebGUI
1947:Dancer
1924:Vue.js
1919:Svelte
1869:Meteor
1859:jQuery
1849:Ext JS
1787:Wicket
1782:Vert.x
1777:Vaadin
1767:Struts
1757:Spring
1707:Grails
1615:Drogon
1610:CppCMS
1567:Blazor
1456:
783:Morfik
765:jQuery
718:more "
644:tuples
616:Drupal
579:server
498:Vue.js
496:, and
494:Svelte
396:Jam.py
391:Grails
376:Django
371:CppCMS
321:server
196:(MVC)
154:, and
58:, and
3051:DHTML
3007:Gears
2991:WebGL
2986:WebCL
2968:WebXR
2870:Video
2845:Audio
2287:Scala
2173:Nevow
2163:Flask
2115:XOOPS
2105:TYPO3
2090:Qcodo
2080:PRADO
2025:Horde
1904:Remix
1899:React
1752:Sling
1684:Yesod
1555:Razor
1103:IBM.
1065:(PDF)
995:"CGI"
888:(DRY)
386:Flask
273:RDBMS
222:into
38:) or
3135:Rich
3118:REST
3049:vs.
3045:and
3043:Ajax
2923:File
2855:CORS
2818:XBAP
2801:NaCl
2714:vs.
2705:vs.
2517:WSRP
2507:FCGI
2502:SCGI
2470:HTTP
2398:Yaws
2392:Ruby
2300:Play
2295:Lift
2269:Rust
2244:Merb
2236:Ruby
2224:more
2178:Pyjs
2168:Grok
2055:MODX
2015:Grav
2005:Flow
1934:Perl
1854:htmx
1747:Seam
1737:Play
1694:Java
1679:Snap
1540:AJAX
1535:Core
1522:.NET
1454:ISBN
1403:2021
1374:2021
791:Pyjs
747:and
737:Ajax
726:AJAX
709:Zope
685:and
669:and
606:and
582:load
313:HTTP
291:and
277:HTTP
167:HTML
122:HTML
74:for
2943:SVG
2938:MSE
2918:EME
2905:W3C
2865:SSE
2860:DOM
2813:BHO
2716:ROA
2712:WOA
2512:AJP
2497:CGI
2368:Tcl
2227:...
2120:Yii
2045:li₃
1972:PHP
1727:JWt
1712:GWT
1602:C++
1577:BFC
1572:DNN
1550:MVC
1446:doi
749:XML
693:URL
642:to
628:API
586:lag
568:web
566:of
446:Yii
263:In
173:).
152:PHP
44:WAF
3169::
2480:v3
2475:v2
1797:ZK
1620:Wt
1452:.
1419:.
1394:.
1376:.
1365:.
1352:^
1336:.
1311:.
1299:^
1283:.
1259:.
1234:.
997:.
961:.
939:.
777:"
756:.
673:.
646:.
500:.
492:,
488:,
484:,
480:,
476:,
472:,
200:.
158:.
150:,
98:.
36:WF
30:A
2437:e
2430:t
2423:v
2404:)
2400:(
2394:)
2390:-
2386:(
2380:)
2376:(
2370:)
2366:(
2360:)
2356:(
2350:)
2346:(
1817:/
1493:e
1486:t
1479:v
1462:.
1448::
1429:.
1405:.
1346:.
1321:.
1293:.
1269:.
1244:.
1201:.
1176:.
1155:.
1134:.
1113:.
1073:.
1049:.
1028:.
1007:.
965:.
42:(
34:(
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.