Overview



 InstantKB is a C# ASP.NET 4.x web forms application designed to be installed on a Windows Server 2012 or above operating system. InstantKB can be hosted upon any IIS 8 or above server with .NET 4;0, 4.5, 4.6 or 4.7 installed.For the data store InstantKB uses SQL Server 2012, 2014 or SQL Azure. All express editions of SQL Server are also supported.

InstantKB was developed within Visual Studio 2017 and consists of well structured object oriented.source code following many common best practices & known design patterns.

Architecture

InstantKB is separated into 3 distinct areas.

Business Layer

The business layer acts as a middle man between the user interface layer and our data access layer. The business layer provide s a complete .NET based API which you can use to interfact with the InstantKB database.The business layer also provides various utility classes and deals with input validation before data is passed to the data access layer.

All business logic within the InstantKB Visual Studio solution can be found within the "InstantASP.Common" and InstantASP.InstantKB" projects.

The InstantASP.Common project contains shared business logic that is used across both InstantKB and InstantForum. The InstantASP.InstantKB project contains the various objects and data repositories specific to InstantKB.

Data Access Layer

The data access layer deals exclusively with executing database queries and stored procedures. The data access layer follows a factory design pattern.

For performance reasons InstantKB usees native SqlClient classes that exist within the .NET framework to talk directly with SQL Server. InstantKB does not use any form of ORM or micro ORM to abstract this login in favor of performance. .

All data access code can be found within the "InstantASP.Common.Data" and "InstantASP.InstantForum.Data" projects.

With both InstantForum & InstantKB 2015 we introduced a new data access layer which can be found within the InstantASP.Common.Data project. Whilst not fully utilized throughout InstantKB just yet we are in the process of moving to this new data access layer as this requires significantly less boiler plate code and supports LINQ expressions.

User Interface (UI) Layer

 The user interface layer within InstantKB consists of all code behind used for the various .aspx web form pages and .ascx user controls used within InstantKB Skins.  All code behind for the InstantKB skin files can be found within the "InstantASP.InstantKB.UI" project.

The directory structure of the InstantASP.InstantKB.UI projects mirrors the structure found within each InstantKB Skin folder. For example if you wanted to add a new button on our "Default.aspx" page you'll need to first locate the corresponding "Default.ascx" user control within your choose InstantKB Skin and add your <asp:Button/>  to the Default.ascx user control.

To wire up an event to this new button you'll need to then open the corresponding code behind file for the "Default.ascx" skin file. You'll find a corresponding "Default.cs" or "Default.vb" file within the root of the "InstantASP.InstantKB.UI" project. This acts as the code-behind for the "Default.ascx" skin file / user control.

In addition all shared server controls and derived base server controls are located within the "InstantASP.Common.UI" project.

Folder Structure

When you download InstantKB you'll be presented with a number of folders. Further information on each of these folders is provided below.

InsantASP.Common (Source Code)

This folder is only available with our developer license. This contains all the source code for our InstantASP.Common framework. There are 3 sub folders InstantASP.Common (contains the core InstantASP.Common business code), InstantASP.common.Data (contains the core data access code) & InstantASP.Common.UI (contains the core UI server controls).

InstantASP.InstantKB(Source Code)

This folder contains the source code for InstantKB. There are 3 sub folders InstantASP.InstantKB (contains InstantKB business logic), InstantASP.InstantKB.Data (contains the InstantKB data provider) & InstantASP.InstantKB.UI (contains the code-behind for the various InstantKB skin controls)

InstantKB20xx (Web Site Files)

This folder contains all the web site files & folders. This is the only folder you will need to copy into production or upload to your shared hosting provider. The source code folders are only required for local development when working with InstantKB within Visual Studio. Upon compilation within Visual Studio the source code is compiled into the various assemblies within the InstantKB2014\Bin directory.

Visual Studio Solution (InstantKBDeveloper.sln / InstantKBEndUser.sln)

This file will depend on the license you purchased. To work with the Visual Studio solution file copy all the folders listed above & this solution file into your web site root directory typically c:\inetpub\wwwroot\ . You should now be able to double click the solution file to open all the required projects within Visual Studio. Currently the Visual Studio solution file provided with InstantKB 2018 targets Visual Studio 2017.