Microsoft Teams Desktop Client - Part One


In my previous article, we have seen  best practices while creating a new Channel, in this article we will explore Teams Client Architecture.
If you are new to the Microsoft Teams, please visit my previous articles to get more understanding on teams: Introduction, Teams Differently, Guest Users in Teams ,best practices while creating new team.
Understanding of Microsoft Teams client architecture
Microsoft Teams is collaboration software and it has a lot of integration of tools externally as well as internally. External means we can fetch data from external sources and show it in Teams using Tabs, Apps, actional messages, etc.
Let’s see how Teams desktop client is designed. Teams is designed with the help of the below open source tools to achieve platform independence without restart updates and more.

High Level Architecture

High Level Architecture of Microsoft Teams Desktop / Mobile client
Figure 1: High Level Architecture of Microsoft Teams Desktop / Mobile client
Microsoft Teams desktop client is designed in different layers like client devices and services. Services are directly called by clients.
Service Layer uses microservices architecture to serve clients for each connected functionality.
Let’s examine how desktop client is designed as a cross platform application.
Electron - Link
MS-Teams client is designed for Desktop as well as Mobile devices using open source project called “Electron”. Electron is an open source framework developed by GitHub. It gives reusability to use same web components like HTML, CSS and JavaScript to create desktop applications. For e.g., visual studio code is also designed with help of Electron but it's half cooked.
We don’t need to maintain “Windows” client or “Mac” client or “Linux” client to run Teams application on each platform. Instead we just need to maintain a single set of HTML with CSS and JavaScript files, which then wraps separately for different platform execution. No need to hire separate web or desktop developers / teams.
Squirrel - Link
Electron uses Squirrel to bundle and send updates to desktop clients internally. Squirrel has a different set of tools and libraries to manage installation as well updates for desktop applications. Microsoft Teams uses squirrel to send auto updates in background and does not need any application restart. It avoids UI interruption to the user on device.
Squirrel uses NuGet packages internally to install or perform application updates. You can check NuGet packages on your desktop folders as shown below path –“C:\Users\<user>\AppData\Local\Microsoft\Teams\current” The same files and folders can be seen in NuGet package generated in “Packages” folder. Rename Nuget package extension to Zip. Go to lib folder.
NuGet structure NuGet structure
NuGet structure
Figure 3: NuGet structure


Microsoft Teams  runs on any device, anywhere, and is used to provide frequent updates in teams without interruption of any software packing maintenance overheads. 
In the next article we will see what technologies are used to design desktop client. Stay tuned 😊
For more information on best practices, please refer to Microsoft sites.