Harmedia wrote in post #955752:
> For an enterprise project a small section is on 3 tier architecture
> and intergrating RoR into it. I have researched RoR and found that as
> standard it uses MVC which is a similar architecture except MVC allows
> the client to interact directly with the database. I was wondering
> however, is the "MVC" that I've read about different to the 3 tier
> architecture or is it a 3 tier system within a 3 tier system? Sorry if
> it sounds a really stupid question. Also from my research I've
> detained that the RoR would be most suited to the server level of the
> 3 tier architecture, does this sound correct?

My suggestions to you is this. Forget all this nonsense about "tier 
architectures" and "enterprise  buzzwords" that have no real value in 
getting work done. Instead concentrate on how to use the tools to aid 
you in building applications that provide value to your customers. 
Understand what a framework is designed to do, and take advantage of it.

Rails is based on an old and established design pattern (a sort of 
compound, or meta-design-pattern) called Model-View-Controller. MVC is 
not really directly related to the "tier" based architecture you 
mentioned, other than it is a way to organize complex systems and 
separate responsibilities.

An oversimplification of MVC is this. The Model is responsible for 
manipulating and managing data. The View is responsible for presenting 
that data to users (humans). And, the Controller is the "glue-code" 
responsible for retrieving data from, and sending data to the Model, and 
making that data available to the View. In an ideal MVC system the Model 
objects never directly interact with the View objects and vise-versa.

The goal of this pattern is to make the Model and View objects as 
reusable as possible. One should be able to extract the Model objects 
from one application and drop them, unmodified, into a completely 
separate application. There should be no direct dependencies on either 
of the other two layers. Ideally the same holds true for View objects.

One problem with thinking in terms of "tiers" is that the nature of them 
keeps changing. At one point you could say that you had the "server 
tier" the "client tier" and some "middle-ware tier." In the past this 
probably meant having some sort of client application running locally on 
a user's computer like a Java applet. And then a server-side piece that 
interacted with the database on the back end.

Today, however, this is not so much the case. I can't remember the last 
time I used a Java applet or a similar client-side application who's 
sole purpose in life was to communicate to some server-side application.

* Does this three-tier architecture still exist (or rather is it still 
prominent and important)?
* If so what is the nature of these systems today?

As I see it the lines are starting to blur. Today we have things like 
iTunes and the iTunes music store. Is that a "three-tier" architecture? 
In a sense, sure it is. The client is iTunes and server is the iTunes 
Music Store application along with the "middle-ware" to glue it all 
together. Does any of this matter to the person listening to music in 
iTunes, or buying music in iTunes?

Not only do we have these emerging architectures like iTunes, we have an 
ever expanding "three-tier" design we call AJAX. In this environment the 
client tier is the web browser itself, running client software written 
in JavaScript. How is this any different than the so called "enterprise 
three-tier architecture?" I say it isn't really any different at all. 
Does that matter?

At the end of the day it's all just application code. Today we employ 
many different architectures to provide value to our customers. All this 
buzzword labeling of things just confuses the issue.

So I've said all that to say this...

Rails is a framework created to aid in the development of web 
applications. It is based on an MVC design pattern for organizing code 
and responsibilities. Typical Rails deployments involve a web server 
(Apache, Nginx, etc.), a piece of software to "connect" the web server 
with the application server (usually Phusion Passenger, but there are 
other ways to do this), a "middle-ware" piece to facilitate handling of 
requests and responses (Rack), and finally the Rails application itself. 
These applications often contains client-side application code typically 
written in JavaScript using AJAX techniques.

How you choose to break all that into "tiers" is up to you. As far as 
I'm concerned it's more important to understand how these fit together 
in order to create valuable applications for customers, than it is to 
attach buzzwords to them in order to appease "C" level executives.

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to