Technologies

TypeScript

All front-end code is implemented in TypeScript. This is because TypeScript allows for strongly typed JavaScript and an easy transition for C#/.NET developers due to its allowance for object oriented programming through the use of Classes, Interfaces, Typing and Modules. The Student Success Dashboard was developed using TypeScript 0.9.0.1.

jQuery

A strong knowledge base in this technology will be essential for maintaining and extending the current work. All front end logic can be found within the StudentSuccessDashboard project in the Applications folder. Within the StudentSuccessDashboard project all JavaScript/TypeScript can be found in the Scripts folder. Front-end code corresponding to a particular page on the site will be in a View folder inside of the Scripts folder following the MVC path convention. As an example, ~/Student/Finder corresponds to Scripts/Views/Student/.

jQuery Data Tables

We have decided to use jQuery DataTables to keep the application lightweight and responsive. All DataTable code is broken down into three separate TypeScript files.

  • DataTable.ts

    Each DataTable is backed by a class that extends a base DataTable class containing CreateColumns, Initalize and Refresh functions.

  • Filter.ts
  • When the DataTable has filters, they are handled by a subclass of this type. All Filters should implement the Initialize, PushToArray and ToJson functions.

  • Selector.ts
  • When the DataTable has selectors, they are handled by subclass of this type. This class contains the Remove, Add, Reset and SetSelections functions which perform actions on an internally managed string array that tracks the selections.

QUnit

Front-end unit testing is handled by the QUnit framework. Thanks to Chutzpah, these unit tests can be seen within the Test Explorer in Visual Studio. All front-end tests will be stored in the same directory as the piece of front-end logic they are testing. Additionally, all front-end tests will have the suffix of Test.ts.

Chutzpah

Chutzpah is a front-end test automation tool that allows for running the QUnit tests within the Visual Studio Test Explorer. Chutzpah can be downloaded through the Visual Studio Extensions and Updates manager.

Web Essentials

Web Essentials provides a variety of front-end capabilities. The primary use for it in the Student Success Dashboard is auto-compiling your TypeScript files into JavaScript files hen you save (Ctrl + s). (Note - This capability is built into Visual Studio 2013.) Like Chutzpah, you can download Web Essentials through the Visual Studio Extensions and Updates manager.

Azure

Windows Azure is the cloud computing platform offered by Microsoft. By choosing to utilize Azure, the Student Success Dashboard application now has the ability to scale as the user base grows. We've also taken advantage of a number of service offerings such as Access Control Service which simplified development and maintenance.

ASP.NET MVC

ASP.NET MVC is a technology that forces separation of concerns on web applications. MVC aligned well with the TDD practices adopted by the development team. It also yielded a more lightweight and efficient application.

Castle Windsor

Castle Windsor is an Inversion of Control framework that allows for run-time Dependency Injection. The main rationale for Castle Windsor is because it allows a greater allowance for the application to be easily unit tested and simplifies the TDD process.

Entity Framework

Entity Framework is Microsoft’s recommended Object Relational Mapper for applications. The Student Success Dashboard uses the Code First approach of Entity Framework. Code First was used because the application was a green-field project. Code First allowed us to develop Plain Old CLR Objects that represent the underlying Data Model. This allowed us to focus on application code rather than the database. Additionally, the data migrations capability allows for versioning releases and syncing up the schema.

Azure Storage Accounts

Blob

In the context of the Student Success Dashboard, Blob storage is being used primarily as a data store for file processing. Because Azure is a distributed system we can’t rely on using the file system since we can’t ensure that a user will be working on the same web role instance through their entire session. Azure Blob Storage is a distributed data store accessible across all web role instances.

Table

The Windows Azure Diagnostics module is configured, by default, to output tracing information to table storage.

Azure Access Control Service

Azure ACS is an authentication service that integrates third party identity providers with your application. ACS allows you to add Live, Google, Yahoo, and/or Facebook to Student Success Dashboard as identity providers.

Return to the wiki Home