Applying Solution Architecture Patterns to the Cloud-Based SharePoint, Office 365, and Azure Solutions

In the past few years, developers and software architects were witnessing the platform changes for their SharePoint solutions, and the pace of these changes was fast, sometimes even maybe too fast. While only few years ago, deploying own DLLs to Global Assembly Cache was a standard procedure, today, when we speak about solutions that target SharePoint Online, it is not possible at all. The business logic and data access layer are expected to “live in cloud”, alongside the UI layer. Most of the examples that can be found on the internet are focused solely on implementing the UI, and demonstrate implementing the business logic and data access as a part of that UI layer, through the MVC pattern. For any enterprise-grade solution, this avoidance of architecture can be dangerous on the long run.

This session will show how to implement the Domain Driven Design (DDD) pattern, with multitier architecture and separation of concerns for the solutions that live in the cloud and target SharePoint Online. Azure Active Directory will be used for authentication, with practical examples how and when to use app-only, and when delegated permissions. Azure App Service will be used for implementing BL and DAL components, and Azure Functions for wrapping and exposing some of the Business Layer functionality as deamons and webhooks. We will also take a look on how to use Azure Application Insights for logging and performance monitoring purposes. Such a designed solution can then have multiple front ends: web user interface exposed through the SharePoint Framework (SPFx), but also any number of native and custom user interfaces, and even bots (through Microsoft Bot framework), which will all be able to share the authentication mechanisms and reuse the same Business Layer and Data Access Layer functionality on the backend.


Date: October 25, 2017 Time: 2:15 pm - 3:30 pm Location: Room C

© 2018 BWW Media Group | Conditions of Use | Privacy Notice | Help