Platform architecture
Here is a high level component overview of the Bulksign platform :
Here are main components of the Bulksign platform :
WebSign : the signing web application, this is used by the signers to read and sign the documents.
Dashboard : the main dashboard, this is the application used to send documents for signing.
WebApi : the application that exposes the SOAP and REST Bulksign API.
BackgroundService : always running Windows service that is processing background tasks.
Deployment
We offer maximum flexibility when deploying Bulksign : from all components deployed together on same machine to deploying each component separately. Or load balancing one or all user facing components. The only component which is required to be single instance is
BackgroundService
Components Visibility
The most common deployment scenario is to make WebSign publicly accessible (so it will be accessible to everyone) and make the Dashboard and WebApi components private (accessible only to your organization intra-net).
Load Balancing
Sticky sessions
Sessions is kept in-memory, just provision and deploy Bulksign on the servers you need and added them to load balancer.
No sticky sessions
For no sticky sessions, the session state must be kept in a database. For this scenario, please follow these steps :
-
create an empty SQL Server database.
-
connect to the database and run the following SQL script to create the schema :
CREATE TABLE [dbo].[SQLSessions]( [Id] [nvarchar](449) NOT NULL, [Value] [varbinary](max) NOT NULL, [ExpiresAtTime] [datetimeoffset](7) NOT NULL, [SlidingExpirationInSeconds] [bigint] NULL, [AbsoluteExpiration] [datetimeoffset](7) NULL, CONSTRAINT [pk_Id] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [Index_ExpiresAtTime] ON [dbo].[SQLSessions] ( [ExpiresAtTime] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) GO
- modify the appsettings.json file of WebDashboard and/or WebSign and enabled DB session storage like this :
"Session": { "EnableShared" : true "SharedConnectionString" : "session_db_connection_string" }