Project description

The Traveler application is a like Windows Explorer with some unique features including working mapping playlists to file selections and duplicate file finding.

  • Work directly with playlist (.M3U file) contents in a folder explorer manner. Playlists may be turned into item selections of folder contents and item selections may be turned into playlists.
  • Locate duplicate files within a folder hierarchy by maintaining hashes of files.
  • Unlike windows explorer, there is no locking of folders.
  • Optionally shows contents of all subfolders.


Traveler is written in the C# language using the Visual Studio 2010 Ultimate. It is architected using the Strict MVC pattern. Currently the only implemented windowing library is WinForms.

Strict MVC architecture overview

Strict MVC is a variation of the popular MVC architecture. The Strict MVC variation enforces a stronger separation of concerns than MVC. A strong separation of concerns facilitates easier testing, promotes better security, eases division of labor, and simplifies porting to alternate user interface environments.

Each letter of "MVC" represents a primary component of the architecture. These are:
  • Model: The domain of the problem that the application addresses. No direct knowledge of the user interface is represented in the model. Indirectly, the model is reponsible for notifying the view of state changes using the observer/subscriber pattern. The model contains a subset called the modelbase that is the portion of the model that is visible to the view component. The modelbase excludes the change interface that the model provides to the controller. Likewise, the model, as visible to the controller, excludes the observer mechanism that is provided to the view.
  • View: Processes observed model changes and updates the controller accordingly. A component of the view provides an interface to the Modelbase that serves functionality beyond simple event handling.
  • Controller: The actual user interface which is responsible for dispatching input to the model.

Representing Strict MVC architecture in the C# language

Microsoft's C# language provides all the constructs for creating strongly typed applications based on the Strict MVC architecture. The Traveler application provides a demonstration of such an application. Namespaces and access modifiers are used to isolate components. An interface is used to define the presenter protocol. Inheritance is used to provide a subset of the model to the controller. Below is a top-level class diagram as created from Visual Studio.


Last edited Nov 11, 2012 at 3:59 AM by KaseWick, version 5