No side effects.
Pure functional.
Structured objects.
Centralized implem:
root object, Session object, model object, view (component obj)
session predefined: allUsers, userName, userScreen, removeUser, addUser.
root view:
view = Views (map greetingView allUsers)
GreetingView:
view = Window (userName myId, userScreen myId) (Text greeting) (display text, IP address, displayView)
key KeyCode = modifyGreeting KeyCode.
GreetingModel:
greeting = this. modifyGreeting KeyCode = save (new greeting) initially = save "hello world"
Program consists of hierarchical components.
Root view.
View components have display = view + controller.
Model: request method + update methods.
Hierarhical scopes: scopes uses IS-PART-OF relationship. messages can only be sent to parent. constraints flow downwards. so no cycles.
support for transactions: user actions create a series of threads. user actions oredered - orders their threads - orders accesses to resources. server-based locking.
Views execute in local processes.
Distribution schemes:
Naive:
change, notified, request, response.
Request Cache:
cache responses. if cached value not changed - use cache.
server invalidates cache based on dataflow techniques. seven times improvment.
Request Prefetech:
get all invalid values in batch. speedup 1.5 to 5 times.
Request Presend:
Server remembers which values requested by each view. sends these values when it invalidates: 2 speedup.