I recommend you modifie the acronym to [TEEN] Tcl Exhaustive Extension Network
Let's start with the overall architecture of this thing.It is currently composed of 3 interacting layers:
- At the lowest level we have the physical storage layer.
- Above that sits the indexing system.
- And that one is accessed through the user interface.
- It is possible to have more than one server at each level. This avoids the bottleneck a single server would be, but adds the complication of synchronizing their contents. We will deal later with that.
- The user interface might belong logically to ETEN, but IMHO a placement in the SEE is more natural. It is basically the archive explorer in the picture given on that page.
- Another point is the treatment of the locally installed packages as an archive of their own, with associated physical storage and index. This has the advantage of presenting the SEE a coherent interface without any special cases. Searching locally is no different from searching in the net.
Let us start with a one-layer architecture.There is essentially one application performing all tasks, from the management of the physical storage, the indices and up to the user interface. This architecture looks conceptually simple, but that is about its only advantage. Among the disadvantages are:
- This architecture draws heavy on the resources of the net, as it will cause the transfer of low-level mouse, keyboard and drawing events.
- Another problem is scalability. This architecture does not scale at all. The more users connect to it, the slower the system will be.
- Related to the last point: The central application is a single point of failure (= SPOF). If it goes down the whole system will be inaccessible. This is intolerable.
- We stay with the two-tier architecture, but have the user interface query all of the archives. My problem with this solution is the higher consumption of network bandwidth.
- We change the architecture. This is the path I've decided to follow, and it result in architecture from the picture above.
- The archive level is still governed by law, this architectural change does not remove the necessity to implement a framework checking the executed/requested transfers.
- The index level on the other hand is not restricted anymore by this as the information exchanged between the nodes consists of references to something, and not of the thing itself. Now the user interface can attach itself to one of the available index nodes and nevertheless sees a unified and complete index of all available packages, without care for their location.
- Synchronization, on the physical level.
- Synchronization, on the index level.
- Physical storage.
- The user interface.