In recent years, this topic is one of the most discussed in the world. In this article, I will not try to explain again and again the obvious. This is my humble attempt to get into Office 365 and analyze what is relevant for our jobs.
This article, therefore, is only an overview of Office 365 for programmers and is not meant to go very deep into programming of different components of Office 365. My desire is to produce a series of articles that will try to open your eyes to this new and very modern technology as we can see a strong move towards the Office 365 and cloud technologies with most of our clients in recent times.
If this is an overview of the Office 365 technology for programmers, how can we start if not by explaining first the journey that Microsoft has taken to get here? Let’s look at the following image.
Indeed, as the name says, Office 365 comes from the well-known Microsoft Office suite, launch as a suite of client / desktop applications used for producing various documents, from Word, Excel, Powerpoint, to helping people communicate using e-mail: Outlook. Let’s not forget Access, the first serious attempt to get into the programming area and for storing structured data. I am sure many of you still struggle to get Access databases migrated to SQL and more serious enterprise alternatives for databases. From 2000, Microsoft’s focus was to provide server versions for these applications, and we can remember this period as the Exchange, SQL, Lync and last but not least important: SharePoint. I will explain in a future article what SharePoint is and how we can work with the platform, as more that 90% of Furtune 500 companies use this platform and it’s becoming from “nice to have” into a full blown critical platform for many organizations across the globe.
During the last 5-6 years, Microsoft’s focus shifted toward a new vision, along with their statement “Cloud First, Mobile First”. This shows an increased orientation towards cloud offers, which also shifts the Microsoft offering in the Office space towards Office 365, or offering the Microsoft Office Suite of applications directly from the cloud on a subscription basis. With this offer, Microsoft offers a product for which you pay monthly / yearly subscription fee to use the applications either directly from the cloud, or by downloading the applications on a number of different devices and use them offline.
However, in addition, now users also can work with the services they have built in years around the Office suite, such as Lync / Skype for business communications, Exchange Online e-mail systems and also SharePoint Online platforms to be used as collaboration platforms for teams and departments in organizations.
For us, programmers, there is also an important shift. While in the 90’s we were programming for Office suite using Visual Basic for Applications or VBA, after 2000 the focus changed towards full trust code using Microsoft .NET framework. The cloud technologies change the programming space again where developers must focus on client side development and the use of open standards. This opens the Office 365 platform to target not only the Windows PC market but also can tap into the mobile devices market, the Apple and android platforms.
The “cloud” comes with huge opportunities:
- More than 1 billion people connected and use the Office 365 services
- Over 400 PetaBytes of data stored
- Estimated of over 1.8 billion mobile devices connecting to the cloud by 2018
- Research shows that right now, in average, every user in the enterprise space is using
2-3 hours / day the Office Apps.
The easy conclusion to draw from here is that the Office 365 platform is now a quite mature platform accessible to us for extending and integrating with. The opportunity is not only to target the client applications but also the enterprise server technologies and we as ISV’s should be able to talk to our clients and understand their necessities for applications to use their huge amount of data and automate business processes.
Some of the interesting scenarios where our work might be required is around building extensions to these office applications or add-ins for customers in the Enterprise space by bringing more capabilities and features for their day to day work.
Other solutions would be full mobile apps targeting people productivity and better experience for employees.
An important direction for developers will be to use the new Office 365 API which allows developers to connect into user’s emails, calendars, communications from different mobile platforms, Windows, Android, iOS.
The more recent opportunity for developers is to build an application once, targeting one platform, for example a desktop and running this application on mobile devices, such as Android tablets, mobile phones and of course, Internet, via applications running in a browser.
Probably the most important thing with Office 365 development is that we are not stuck into a desktop app development model anymore, the developers can build on their platform of choice, be it Ruby on Rails, php, or NodeJs. The Office applications become more valuable and more popular the more they are interconnected with other technologies. As developers, we are not interested in learning new languages or new technologies every time we work on a new project for a customer. Office 365 comes with this flexibility of allowing us to continue to work with the tools and technologies we are most familiar with and extend the Office / SharePoint platform the way we need.
With all these said, we can now jump into the new development model used for Office 365, called the Office 365 App Model.
Office 365 App Model
Very important when building apps for the cloud: an app can run outside the firewall in the cloud and from inside the firewall in a data centre. Our apps can be hosted on any platform giving us complete freedom. We can re-use existing services and assets within our apps.
Using the app model, we can build applications for two major products or platforms:
- Office 365
and use data and services from:
- Windows Azure
- SQL server
So, how do we develop with the app model?
The answer is quite simple, “if you know general development, you also know Office 365 development”.
How can you distribute these applications?
You can either use the Office Store or use the SharePoint App Catalog.
These options will give your application exponential growth from In-Store visits. The Store already contains hundreds of business apps and is available in 142 markets.
Well, well, what do we actually use to develop for Office 365?
The answer to this question is: Office 365 API. Indeed, everything you want to access from the cloud, will have to be through the Office 365 API.
As I already mentioned the main platform to use for web applications in the cloud is, and will be even more in future, the SharePoint Online platform. In short, the SharePoint platform is a web based, extensible, collaboration platform used by many organizational employees to exchange information in teams, departments, business units with certain common goals.
How do they do this?
Through a set of lists, libraries, sites, workflows, services and many various components. As a developer, to access these components of the platform, you will be using the SharePoint Client APIs, or simply the SharePoint API. In all previous, on-premise SharePoint platforms, working with various components of the platform could have been performed using the .net Framework, and the full trust SharePoint Object Model (previous name for API). The Office 365 App Model, eliminates completely the option to build full trust code for their platform. This is done for security, scalability and stability reasons. A full trust code could render unusable not only a one or a few servers, but can also bring down the whole cloud platform. In the next image, it is presented the way to use the SharePoint API on the new App Model.
The roadmap for this Office 365 API is to also include access and authentication against the Azure Active Directory, to provide access to emails, calendars and contacts, accessing Sites, Lists, Libraries, Workflow, Search, Taxonomy and other various services in SharePoint Online. The last, but not the least important, is to provide access through the API to OneDrive and OneDrive for Business.
The future of Office 365 API will bring more new endpoints, more APIs (one important to mention is Office Graph which we will present and discuss in a future article), iOS SDK, fully embracing the Open Integrating platform and also creating or improving the tools for empowering developers to create more applications and extend the platform.
In the next article, I will present how you can immediately start using the platform and developing for Office 365 and some of the Patterns and Practices to use for building applications for the cloud.