Knowledge

Web framework

Source 📝

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:(

Index

software framework
web applications
web resources
web APIs
World Wide Web
web development
libraries
database
templating
session
code reuse
dynamic web sites
static websites
Rich web application
World Wide Web
hypertext
HTML
web servers
Common Gateway Interface
dynamic web page
process
ColdFusion
PHP
Active Server Pages
libraries
HTML
Jakarta Faces
web development
software stack
model–view–controller

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.