Acute

The ubiquity of HTML with the productivity of C#.

Acute is an MVC framework for developing client-side HTML applications in C#.

Acute allows you to write MVC applications, using HTML for the views, and C# for the controllers, models, services, and whatever other components/patterns you desire. The C# portions are compiled into JavaScript, allowing your application to run in browsers everywhere.

Acute aims to pair industrial-grade concepts (templates, controllers, dependency-injection, etc) with an industrial-grade language (C#).

Warning: This project is in an early phase of development. If you wish to report issues or request features, please do so via GitHub.

What?

Acute is composed of two parts: a framework, and a compiler.

Acute.dll contains a model-view-controller framework. The concepts will be familiar if you have used any MVC previously, and are explained in more details in the Concepts section.

When you build an Acute project, two compilers are invoked:

The standard compiler ensures your C# code is valid. The Acute compiler ensures you can reference it from an HTML page, and have it execute in any browser.

Why?

Because JavaScript.

Javascript is an immensely successful scripting language. But, it has a number of flaws features that make it completely unsuitable less than optimal for typical enterprise-application development. These are well-documented, and include:

JavaScript is an astonishing language, in the very worst sense. ... JavaScript is also coupled with The DOM, a horrendous API.

You can write large programs in Javascript. You just can't maintain them.

Acute is targeted towards development teams using C# on the server. There is undeniable benefits in using the same language client-side, regardless of your opinion towards JavaScript. Each additional language in a solution brings the need for new conventions and tools; one more set of things a team must agree (or disagree) on. And there is simply only so many things we can devote the time to becoming expert in.

But we need JavaScript. It is the only language implemented in all popular web browsers. So we make the only reasonable choice: we use JavaScript for the part we want (ubiquity), discarding the part we don't (the actual language).

Javascript has become the assembly language of the web. Acute just takes this to its logical conclusion.

JavaScript is an assembly language. ... The browser can execute it, but no human should really care what's there.

JS is the x86 of the web

How?

Acute stands on the shoulders of two giants:

AngularJS

Acute is inspired by Angular. It borrows many concepts, and utilizes it for the implementation of much of the HTML-templating and DOM manipulation functionality.

Saltarelle Compiler

The Saltarelle-Compiler compiles C# into JavaScript. Without it, this project wouldn't have been possible (or at least would have taken a lot longer).

The setup page has details of what happens when you install the Acute NuGet package into your project. The walk-through shows a step-by-step introduction to building an Acute application.