It is quite logical at this spore of time to briefly touch frameworks, foundations and web applications.
Framework
Framework is an abstraction set to tools that generally provide all the necessary functionalities without much detailed know-hows for developers. Frameworks are reusable, consistent and usually backward compatible across incremental versions.
Framework is an abstraction set to tools that generally provide all the necessary functionalities without much detailed know-hows for developers. Frameworks are reusable, consistent and usually backward compatible across incremental versions.
With frameworks, user written code gets reduced substantially, as because most of the functionalities are implemented by the framework itself and wisely abstracted from the developer sight. Frameworks include code libraries, tool sets, CLI (Command Line Interface) and API (Application Programming Interface) that make it possible for a developer to develop a larger system with minimum SLOC (Source Lines of Code).
Frameworks typically set the control flow and allow developers to "hook into" that flow by exposing various events. This IoC (Inversion of Control) design pattern is considered to be the building block of frameworks. Some Frameworks let developers inject Middleware in the code that is handled by framework. Others employ reactive model like Event Driven Programming. WordPress falls in this later category.
Foundation
Even frameworks need underlying frameworks itself at its core. This is Foundation. Frameworks are developed on Foundations and lets developers extend the Foundation while it doesn’t let users change the Framework at all.
Foundations are closely related to Operating Systems. For example, to implement Non-Blocking I/O, the framework might expose an identifier called syspoll function, which might call epoll on Linux, but kqueue on FreeBSD. Developers need not worry at all how this will be handled, rather, all s/he needs to know is how to call the syspoll function.
Web Application Framework
Among all the definitions of Web Application Framework, probably, Wikipedia nailed it better by stating, “A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web.
Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.” Precise!
It further emphasized that, most Web Application Frameworks follow the MVC (Model-View-Controller) architectural pattern. We will discuss on MVC in brief shortly.
The salient features of a good Web Application Framework are, yet not limited to functionalities like Web Template System, Caching, Security; Database access, mapping and configuration; URL mapping, AJAX, Web services and Web resources. We will elaborate each terms as and when appropriate.
A good Framework has plethora of functions, classes including methods in its library to aid developers on Rapid Application Development (RAD). Built-in features of frameworks help developers address the common and repetitive task at ease. Usually, popular frameworks are accompanied by larger communities with active development and support.
Frameworks provide stable ground for building robust web applications faster.
Web Application
At its base, Web Applications are essentially client/server applications. Unlike traditional client/server applications, where client application part is an standalone executable program that runs on client machines, a web application needs a host application on the client side. This is usually a browser, coined as Thin Client.
This approach eliminates installing, updating, maintaining and uninstalling client applications on client machines. Rather, the web developer updates the software, deploys it on the server or server cluster, and all the clients access the updated version of the application without worrying anything about redeployment.
Web applications has other benefits over traditional client/server applications. Traditional client/server applications communicate with each other using TCP/IP or Socket Layers. This requires substantial effort to be employed in the client as well as server application. Network Programming using TCP/IP or Socket is more or less related to operating systems programming. It not a fight that everyone can win. Moreover, if the client applications are intended to run on different operating systems like Windows, GNU/Linux, Unix variants like FreeBSD, NetBSD, Darwin, Solaris; the application development becomes more involving and costly.
In Web Application paradigm of client/server computing architecture, the network propagation is completely transparent and abstracted. Rather than programming TCP/IP protocols, web application clients and servers solely rely on HTTP and such other protocols to communicate with each other. This is less involving, less demanding, budget friendly and resource efficient.
Some of the generally associated features of web application are discussed here below.
Authentication
Web applications rely on HTTP Session for authentication. Authentication is required for signup, login and logout processing. Clients send authentication information to the server. Upon successful authentication, the server and clients maintain the authentication in a session cookie that traverses along with HTTP Request/Response headers whenever clients and servers propagate.
Authorization
Authorization and user access rights are controlled by the web application business logic. An example of authorization is user roles. Any WordPress user knows that not all users are the same in WordPress. Some are admins, some are moderators, while some others are just subscribers. They have their own limits and boundaries. This is authorization.
Information rather than Content
Whereas CMS works with contents, yes, you know, content is king; web applications rather works with data or information. Each user of a typical web application either GETs or POSTs some sort of data from/to the web application servers. Examples may vary application to application, but suffice it is to say - users either fill and post some sort of forms accompanying relevant fields, or get the same data from the server in various data formats such as XML, JSON or HTML.
More specifically, web applications lets users perform tasks instead of content. Need examples? Okay. Gmail lets users send or check emails. What users do to send an email is fill up a form that has mandatory fields like recipient email address, email body message. Email could be title is optional. In addition to the user provided information, gmail client adds some more relevant information in the HTTP Request Header and sends to the server.
When checking emails, all that a user has to do is click or tap on the Check Email button or link. The Gmail client fetches the newly received emails from server for the user. Some. Awesome. Life is good.
Device Access Capabilities
Web apps access device hardware resources. This is not limited to screen, RAM, microprocessor and GPU, but expands to microphone, GPS, geo-location, camera, contact information like address book and many more. Web Applications running in handhelds access more hardware resources than web applications running in a browser. Web apps are usually aware of different screen size resolutions and capabilities, thus become responsive accordingly.
Offline Mode
Web applications are expected to work seamless offline, when online connectivity is not available. When connectivity is sparse, Google Keep, Evernote and many such applications let users continue working, saving the data offline until the device goes online and synchronizes with the server.
Mashup
Web applications can work in unison with other web applications passing information through a web application variants like webservices, microservices and REST API. Any web application can be programmed to push pull data with many other web services or web applications. You can develop a web application that will server user request and at the same time collect location information from online web services using the user IP. The possibilities and endless.
APPENDIX I - Articles of the Series
This article is a part of the series "WordPress Web Application Development".
Read all the articles of the series:
- Preamble - WordPress Web Application Development
- Chapter 1 - Introduction to Web Application Development with WordPress
- Chapter 2 - Fundamentals of Architectures for Web Application Development with WordPress
- Chapter 3 - Why Consider WordPress Ecosystem for Web Application Development
- Chapter 4 - WordPress Web Application Development Features for Project Managers
- Chapter 5 - Features and Components of WordPress for Web Application Developers
- Chapter 6 - Thoughts on WordPress Web Application Development