|
|
Web development covers both the client side (browser)
development, and the server side (application)
development of web sites. Poised Solutions has been
developing websites for well over a decade and has kept
abreast of the latest development practices and techniques
of building full web application solutions.
Web client side development revolves around the trinity of HTML, CSS, and JavaScript, Poised Solutions offers the full
spectrum of these browser based skills along with ActionScript (Flash) and Java Applets.
Web server side development is a fairly varied environment,
Poised Solutions tends to develop using Perl in mod_perl embedded into Apache, FastCGI, or CGI.
Python is the preferred web server side language for
mid level projects, and like Perl, Python is used alongside mod_python, FastCGI, and CGI,
(proxying to web aware application servers is also used).
For larger web applications that require high scalability
and distribution Erlang is the language and environment of choice.
Web Development Benefits
Web Development offers many benefits to most
organisations as HTTP (HyperText Transport Protocol) and
HTML are so ubiquitous development methods for Web Development abound and cover most of the possible
scenarios. The World Wide Web (WWW) via the Net gives
graphical multi user access to computer systems from nearly
anywhere on the planet. And Intranets (Web sites inside an
organisation) allow for applications to be accessed multi
user from any attached computer system. The flexibility
coupled with the accessibility that web applications offer
is unparalleled in the field of development. Web applications are generally the
first port of call when considering new projects or
converting legacy systems.
Web Development Elements
Web Development Diagram
Web Development Elements Explained
Web Development as can be seen from the above diagram
is actually quite a complex system. The complexity
aids the actual production, but it should be realised
that web development is perhaps one of the more advanced
forms of Information Technology projects, there generally
are quite a few distinct components to a web application
build. The operating system also plays a large part in
a stable web application project.
Web development is very modular, and by approaching the
challenge in this way it can also be split into a number of
distinct and interrelated elements to allow many experts to
work on the various parts.
Web Development Elements Explained Client Side
- Web Browser
- The web browser is often termed the client program or just
client. The web browser is responsible for making requests
to the web server and then receiving information back which
it then renders and displays, or executes (runs). Web
browsers have become quite central to modern day computing,
and not only can they retrieve information using either the
HTTP or HTTPS protocol, but they can also do various other
tasks such as file browsing and file transfer.
- HTML Document
- An HTML document is generated or delivered over HTTP from a
web server. The HTML document (or XHTML or even XML) is
parsed by the web browser and the content is then rendered.
The HTML document can cause other documents or objects such
as images, Cascading Style Sheet (CSS), JavaScript programs,
flash movies to also be downloaded and included in the
render of the document.
- JavaScript Program
- JavaScript Programs are generally small scripts that allow
manipulation of the document object model (can change look
and feel of the document) to allow more advanced interface
techniques to be used, that are dynamic and event related.
JavaScript can also be created to do basic network
communication, this allows for extra information to be
requested or for information to be sent without having to
drive that request by the user.
- CSS Config
- CSS (Cascading Style Sheet) is a set of style configuration
rules, that can be applied to elements in an HTML document.
CSS is the primary way the layout, and look and feel of a
document is created and standardised across a web site.
Efficient and effective use of CSS can improve development
times significantly as well as making the project as whole
more understandable for all parties involved.
- Flash Movies
- Flash was one of the first readily accepted vector graphic
and timeline based plugin for web browsers. Instead of
transmitting raster based imagery, vector imagery instead
was sent which generally occupied a much smaller space.
Flash can be scripted using action script commands, and
it is possible to have a site completely in Flash (no
HTML required). There are some drawbacks to Flash, it
tends to be harder to maintain and to optimise for SEO (Search Engine Optimisation), but if it is treated in
the same way as JavaScript, and used in moderation it can
lend itself to quite compelling elements of an
interface.
- Media Stream
- Media Stream is a bit of a catchall for the elements not
fully described above, it most accurately refers to media
such as movies, films, and audio, but to be complete it
could also refer to elements such asPython and Java applets. Again used in moderation
these elements can be quite compelling, but they generally
require the browser to have some non default
capability.
- Browser Plugins
- Browser Plugins are modules that can extend the
functionality of a browser. Browser plugins tends to be
specific to the type of browser targeted, and generally have
to be rewritten for different web browsers. Plugins though
can change the browser and make it capable of doing more
things and reacting in different ways to the data delivered
to a browser. Common plugins are generally freely available,
and plugins for intranets are an interesting way of
distributing workload off main servers and onto the client
nodes (which is something that JavaScript and Applets can
also do, though perhaps in a more limited fashion).
Web Development Elements Explained Server Side
- Web Server
- A Web Server is an application server or daemon that binds to a network port and listens for
incoming requests. Examples of general purpose web servers
are Apache, Lighttpd and IIS (Internet Information Services). A
general webserver is capable of doing a lot of tasks, it can
deliver static documents and media, it can fork or thread to
service more than one client at a time (concurrency), it can
also use various features to send and receive information
from programs running behind it. A web servers primary
function though is to deliver content to the client which is
normally a web browser, the web server generally forms the
gateway between the client and the server side application
or documents.
- Module
- A module in this instance is a piece of code used to
extend the functionality of a web server, it can be a
complete web application coded in C, Perl, Python or Lua. The module becomes part of the web server, and
this has its advantages and disadvantages; the advantage is
the code doesn't have to be written in a concurrent style,
as the web server forks or threads the modules is also
duplicated (note you still need to be aware of concurrency
but only in how it pertains to the web server API), the
disadvantage is the same as the advantage, each duplicating
web server will tend to carry over the module even if it is
not being used for that transaction. mod_php is perhaps the best known module,
and it allows for programs written in PHP to also be included in the web server. To avoid
some of the overhead on duplication when large modules are
used, web server can be split into serving different
requests often by the use of virtual hosts. mod_fastcgi
should all get a mention, as this is quite a lite weight way
of communicating with an application server sitting being
the web server, here CGI environment variables are passed to
an application server that then communicates back to the web
server over the fastcgi module.
- CGI
- CGI (Common Gateway Interface) is a way in which a web
server can start an application and pass CGI environment
variables to the application and then read back the results
from stdout (standard out). This method is quite quick to
implement, but it comes with the overhead of restarting the
application on each request, on some operating system such
as those with Linux kernels the application is often stored
in memory, so a restart can actually be very fast, in some
instances faster than a daemon blocking on a port.
- Proxy
- Proxying is where the request is just sent though the web
server to another web server, and when the other web server
communicates back it sends to the first web server. This
method may seem odd at first, but it is highly portable, and
building a basic web server as an application server is not
too onerous a task. Another advantage is the use of
standard principles, other methods tend to introduce yet
another protocol, whereas HTTP is a well known protocol.
Proxying can be used for other tasks as well such as load
balancing.
- IPC
- IPC (InterProcess Communication), is another catchall, this
is a general term to describe a web server communicating to
an application, or any application communicating to another
application. The lower the overhead of communication
generally the better an application can perform. And how the
communication is switched is also a factor. IPC allows for
the creation of a pipe line of general applications to
produce a specific result, and is the main stay of modern
development, building on the "shoulder's of giants".
- Media
- Media refers to both documents and images, in particular it
highlights documents and images that are static in nature.
One of the important things to realise in web development is
that most information is static in nature, and that dynamic
information that is calculated for each request generates
additional overhead in the system. If you deliver static
media in a dynamic way, then there is room in the system to
improve the performance. Caches, not shown on the diagram,
are often used to improve performance where some media is in
fact more static than it is dynamic, but still there an
overhead is introduced. Poised Solutions specialises in
producing systems that run with minimal overhead, and it is
by understanding this element that the biggest savings are
found.
- Template
- Templates or template systems, match well with the idea of
delivering static information as explained above. It is
generally better to template as much as possible in a
development environment to produce static information using
dynamic techniques, and just upload as static media. A
template system has many extra advantages, beyond the above,
and is used also to deliver dynamic content. A template
allows for Rapid Application and Document Development
(RADD), as any repeated elements can be or systems, can be
reduced to minimal amounts of typing or identification.
Templating also allows for fast changes to be made across a
number of documents. Poised Solutions makes extensive use of
templating and it cannot be understated just how effective
proper templating can be for a web project.
- Database
- A database is used to separate data from business logic,
a database allows for tight control of a system's data,
and also allows for many systems to pull from the same
data source. A database is generally an application in
its own right, but databases such as SQLite can also be embedded directly into a web server,
application or daemon. Whilst the instructions coded to work
on data are obviously very important, data is perhaps more
important for a running business, as data is much harder to
replace than code in most instances, as such it is wise
to use a datastore.
- Web App
- Web App or Web Application is the core of the system, this
is where most of the business logic is expressed. Most
programming language are capable of acting as some form of
web application, the IPC is a common factor that allows a
web application to communicate with a web server, and any
Turing complete language is generally capable of achieving
this. Selection of web application programming language is
based on a number of criteria, such as in-house knowledge,
existing infrastructure, performance requirements,
maintenance requirements, stability and security
requirements, also speed of development and mathematical
proof can also play a part in the selection of a web
application programming language or environment.
Web Developer Services Poised Solutions
Web Development Resources
Web Development Resources
| |
|