I have built SharePoint applications from SharePoint 2003 and dealt with all great and some less great developer aspects of SharePoint since then. The most recent step for us developers is moving to the AddIn model and also the more recent SharePoint (client) Framework. It forces me as a developer to build SharePoint applications in a new different and more modern way. The application I build are usually somewhat more complex application than a HelloWorld AddIn, and I need to write lots of logic on the server. In the AddIn-model that code runs on a different machine than my SharePoint farm. That means I can no longer touch the SharePoint server to add application pages in the _layouts or WCF-services in the _vti_bin folder, which I am used to.

As a SharePoint developer, I have sharpened my ASP.Net Forms skills for the last decades but the recent years realized that ASP.Net MVC is a superior method of building my web application. In the light of ASP.Net MVC I also realize that I need a complete framework on the client side to build a great user experience. When looking around my first choice was Knockout.js which does a great job with databinding in JavaScript. A lot of Microsoft UI is built with Knockout.js, the new Azure Portal, the new library/list experience in SharePoint Online to name a few. But that framework is missing some vital pieces and it also is very invasive in my JavaScript model. Knockout led to Durandal and that led to Aurelia and all pieces came together.

image

So, our modus operandi is to build a SharePoint AddIn with ASP.NET MVC Web API serving the logic and all UI handled by Aurelia. The bullet points for using this setup is:

  • Aurelia with TypeScript is beautiful and non-invasive compared to anything
  • Performance is great
  • Binding syntax is similar to Knockout so our learning curve was flat
  • Dependency injection makes developing/testing easier
  • Auerlia-CLI bundles everything
  • The dev-build-test loop is very fast
  • Separation of concerns at so many levels
  • REST API is easy to build with C# and MVC Web API
  • UI is not built with server side code, at all

In our strive for perfection we have solved some specific hurdles around SharePoint/Web API/Auerlia that I would like to share. There are a few things we need to get working before we feel full control, and the steps we have taken so far is:

  • Render the Aurelia AddIn as full page communicating with SharePoint
  • Render the Aurelia AddIn as a Web Part communicating with SharePoint and rest of the page
  • Render Aurelia directly on the SharePoint page without WebParts
  • Render Auerlia in the SharePoint Client Framework

Points above will be updated for future posts.