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