This document provides detailed technical information about NetServer’s internal architecture. For a general overview of SuperOffice APIs and how to choose the right one for your needs, see the SuperOffice API Overview.
NetServer Components and Architecture
NetServer has several extensibility points. Some extensibility points show up in clients, such as the Document Plug-in, while others like the Sentry Plug-in do not.
SuperOffice Sales, SuperOffice Service and SuperOffice Mobile are examples of clients that use NetServer. All applications listed in the SuperOffice Online App Store do too.
At its core, NetServer contains database-independent abstractions, and has database-specific implementations that API consumers never have to think about. The only indication is during configuration when the target database server is set.
NetServer enables developers to perform lookups, create, read, update and delete (CRUD) operations towards SuperOffice. Whether deploying a solution in an onsite domain environment or accessing SuperOffice via web services, NetServer exposes an array of application programming interfaces (APIs) that enable virtually unlimited access to the data in SuperOffice.
Although the details can be somewhat intimidating at first, NetServer APIs accommodate a wide variety of developers. There are several facades to gain access, and the following section will help guide you through the various layers of NetServer.
Persistence layers
SuperOffice NetServer provides several persistence layers, each one allowing more fine-grain control the closer they get to the database.
You can choose to work at the level that suits you best. Webhooks are supported at both the low and high levels of NetServer.
Domain-level APIs (NetServer Core)
The lowest layer of NetServer is only used by clients or an application server in an onsite domain environment. This level does the heavy lifting and is responsible for serializing all model-based instructions into SQL.- SQL data objects (OSQL): low-level, high-performance, database-independent objectified SQL.
- Row and Rows: medium-level data table and row-level access.
- Entities: high-level business model classes that abstract multiple table joins.
- Archive providers and MDO Providers: provide read-only search capabilities.
Web service APIs
NetServer web service data access is provided by the following types of web service endpoints- RESTful: ASP.NET WebAPI
- SOAP: WCF-based IIS application
Web services layer
At the highest level, encapsulated in the SuperOffice.Services namespace, is an agent pattern-derived API that in terms of deployment is quite flexible. Access and modification to data in the database, using service objects, will always be coded the same, whether the application and database are located on the same server, or operating in a distributed environment. This flexibility does come at a performance price though. Read more about web services.Programming with NetServer APIs
Every solution that uses NetServer packages directly needs a SuperOffice section in the application configuration file. This only pertains to the following nuget packages:- SuperOffice.NetServer.Core (onsite clients and plugin development)
- SuperOffice.NetServer.Services (SOAP proxy and utility classes)
- SuperOffice.WebApi (HTTP RPC proxy and utility classes)
- @SuperOffice/WebApi (NPM package for JavaScript/TypeScript applications)
- Windows applications must add a SuperOffice section to the app.config file.
- ASP.NET web applications must add a SuperOffice section to the web.config file.
The more control over the queries you have, the more responsibility you take on for handling ensuring that relationships and keys are maintained properly.