http://cs.lmu.edu/~rayweb
Here's five (of many, I'd guess):session
See this page.app
Distributed algorithms are designed for programming distributed systems. They differ from centralized algorithms because they are unaware of any global state or a global time frame.echarts
Issues:dom
Enterprise applications are applications that run on large servers with multiple (simultaneous) users communicating over a network via clients like web browsers, PDAs, cell phones, or desktop applications. These applications generally read from and write to big databases.ide
Some people say enterprise applications are only for business functions (accounting, customer management, product tracking, etc.); some say any big distributed application counts as "enterprise".oop
There's legacy code out there — COBOL, IMS, CICS. But most current work is done in two:fetch
They didn't start off terribly different, and they're probably evolving toward each other. (Just like Java and C# are.)ui
Java EE | .NET |
---|---|
|
|
In the old days, and today for the most trivial of applications, we see client-server organizations.this
Two tier architectures are almost always way too fragile. They soon gave way to three-tier architectures:
The idea here is that any one of the three layers can be completely re-implemented without affecting the others.
The middle layer completely isolates the front end from any knowledge of the database. The UI doesn't even know what the data source is. It just makes calls like fetchCustomerById(24337)
.
Software running in the middle tier is called middleware. Middleware products are also called containers, since they host and manage the business objects. They can manage lifecycles, transactions, memory, authentication, concurrency, distribution, security, sessions, resource pooling, logging and lots of other "system-level plumbing things" so developers only have to concentrate on business logic.
There's no need to stop at three tiers. You'll often hear the term n-tier.
Sometimes applications are classified by the complexity of the client:
Thick Client | Thin Client |
---|---|
|
|
The term grid computing refers to the computation of highly compute-intensive algorithms (protein folding, SETI, earthquake simulation, climate modeling) over many computers across administrative domains. Most of the computers run similar code; they're all contributing bits toward the overall solution.