Distribware Haven is a secure collaboration tool consisting of a fully encrypted knowledgebase with integrated discussion threads/forums, written in C#/.NET and built on top of the Distribware distributed multi-computer platform.
The application serves three main purposes:
- to provide a useful, fully encrypted knowledgbase and collaboration tool with features not found in other alternatives,
- to more thoroughly test the underlying functionality of the Distribware platform at scale, and
- to provide a real-world tutorial (via the open source code) showing developers how to build a custom software system based on the Distribware platform.
I think the best way to describe Haven is to describe what I want it to do for me (as a user), in plain English.
What I want is a place to store all kinds of information. ANY kind of information. Information about people, all types of files, images, documents, notes, articles, diagrams, useful links to content on the web, passwords to other systems… any and all information that is worth storing because it is likely to be useful sometime in the future. It must also be very easy to store information no matter where I am, or what type of computer I am using at the time. Ideally it would provide at least partial functionality when offline as well.
Even more importantly, it must have truly awesome/easy to use browsing and search capabilities, because all that information is absolutely useless if you can’t find it when you need it. Just like the storage of new information, it must allow browsing and searching no matter where I am or what type of computer I am using… and again would ideally work offline (not necessarily on a phone, but definitely on a laptop).
Next, all of the above has to be well suited for both individuals and groups, with full privacy (via the security system and encryption) in all situations. It must have ways to store and share information related to the content, such as discussion threads and notes. The discussion threads need to also be able to be used for generic questions and answers that are not necessarily tied to a specific piece of content.
The system must be extremely reliable, with no downtime due to either crashes or maintenance. It must be completely fault-tolerant, with multiple redundant copies of the content automatically and continuously backed up in real time to several different locations so there is no way the data could ever be completely lost. It should not matter if the copies of the content are on-premise, in the cloud, or both.
In addition, the repository itself should never “fill up” to the point where no more data can be stored. It needs to be able to always incrementally add more capacity to the system, as it is needed.
Finally, the entire system must be inexpensive, built from commodity hardware and free open-source software, easy to configure, easy to use, easy to maintain. Complexity is always very expensive, so everything about the system must be as simple as humanly possible.
In summary, Haven provides the knowledgebase, discussion threads and forums, while the Distribware platform provides the underlying security/encryption, reliability, fault-tolerance, scalability and low cost.
The target operating system for Haven is Windows 10, although it runs on earlier versions of Windows as well. In general, the system is designed so that client applications built using a wide range of tools and devices are all able to use a single instance of the ASP.NET web services (which are implemented as both ASP.NET Web API REST and WCF SOAP). Haven and Distribware are both intended primarily for the small-to-medium business market, providing good security, reliability, performance and scalability as integral parts of the platform itself, all at a very low cost due to the extensive use of free open-source tools.
Haven consists of the following components:
- The Haven ASP.NET web application, with both mobile and tablet/laptop/desktop UI’s hosted under IIS
- The Distribware AppLib SDK, available as a NuGet package (use of the SDK is purely optional)
- The Haven ASP.NET Web Api REST and WCF SOAP web services, also hosted under IIS
- A windows service acting as a scheduler
- A database server (either MySql or Postgresql) accessed from the web services using ADO.NET drivers
- A WinForm admin and end-to-end testing application (to run on Windows and hopefully Mac OS X via Mono)
Note 1: the components of Haven can run on Windows Server, but do not require any of the server functionality. Haven NewSQL data storage is based on the concept of redundant storage nodes that scale out to increase both capacity and performance (mirrors, replicas and shards). A free or very low cost database is necessary under those circumstances.
Note 2: A Windows 10 universal app will use SQLite to provide offline capabilities, while also adding additional functionality and security compared to the web version of the UI. This universal app will be available sometime in the late summer of 2015 in the Windows 10 unified app store.
The Haven web application has been designed and built following Google’s performance guidelines for sub-second rendering of web pages in a mobile browser over a 3G connection ( http://googlewebmastercentral.blogspot.com/2013/08/making-smartphone-sites-load-fast.html ) ( https://www.youtube.com/watch?v=Il4swGfTOSM ). These same techniques have also been used for the tablet/laptop UI as well, resulting in even better performance. Meeting these performance guidelines required modifications to all 3 tiers of the system, not just the web application itself (the time budget for all server-side processing is a maximum of 100 milliseconds). Many of the web service and data access performance improvements have been based on techniques borrowed from the books “Writing High Performance .NET Code” by Ben Watson – 2014 ( writinghighperf.net ) and “Ultra-Fast ASP.NET 4.5” by Richard Keissig – Apress – 2012 ( 12titans.net ).
Please refer to the other Haven pages for more specific details regarding its functionality, and the DW pages for more information about the underlying Distribware platform.