Symphony Framework
Symphony Bridge
Overview > Symphony Bridge

Symphony Bridge is a powerful service based technology that enables the access of data and logic from a variety of clients. 

The Symphony Bridge offers a variety of server protocols that allow access to data and logic through powerful Symphony Data Object classes.  Symphony Harmony is the client technology that allows access via SQL like syntax to the data and .Net business logic. 

The Symphony Bridge server provides the following server protocols:

The first three server protocol are accessed though the Symphony Harmony client methods.  There is no Symphony Harmony client for the WEB API Restful protocol which enables the consumer to use any client capabilities such as JavaScript.

 Installing Symphony Bridge
Visit and from the "Download" select the required Symphony Bridge installer.  Once downloaded execute the install script.  The Symphony Bridge will be installed directly into the \Program Files (x86)\RCPConsultants\SymphonyFramework\SymphonyBrige folder.
 Configuring Symphony Bridge

 Symphony Bridge server can be run as a console application (for testing purposes) and as windows service.  The settings for each are configured independently in their respective configuration files.  The console application's configuration file is called "SymphonyBridgeServerConsole.exe.config" and the windows service configuration file is called "SymphonyBridgeServerService.exe.config".  The following settings are applicable for both servers:

Setting Remarks Example
SYMPHONY_BRDIGE_LIBRARY_FOLDER This is the base folder where the servers are installed. C:\Program Files (x86)\RCPConsultants\SymphonyFramework\SymphonyBridge
SYMPHONY_AUTHENTICATION_DATA Defines the folder where authentication data is located.  this data is volatile and is not visible outside of the server. C:\Program Files (x86)\RCPConsultants\SymphonyFramework\SymphonyBridge
SYMPHONY_BRIDGE_THROW_LICENSE_EXCEPTION If set to "True" an exception is thrown if a Synergy license cannot be allocated.  If set to "False" the runtime will pause before allocating a license. False
SYMPHONY_BRIDGE_FORCE_DOMAIN_KILL When a request has been completed force the applicaiton domain to be killed. The default is to leave the domain active for future client connetions.  False
SYMPHONY_UNIQUE_DISPATCHERS <depreciated> Force logic dispatchers to be placed on a unique thread.  True
SYMPHONY_DEBUG_VIEW Setting to a value other than "0" will cuase extensive logging to be recorded.  This setting has a significant impact on performance and should be set to "0" unless a critical issue is encountered. 0
SYMPHONY_BRIDGE_APPDOMAIN_TIMEOUT The time in seconds a domain remains active.  Clients reconnecting will be reallocated the original server they used.  This improved performance. 60
SYMPHONY_BRIDGE_LOGGING_FOLDER The folder location when client connection logging information is stored.  Each connection will create a log file.  Regularly removing old log files is recommended. C:\Program Files (x86)\RCPConsultants\SymphonyFramework\SymphonyBridge\Log
SYMPHONY_BRIDGE_SELLOGGING_FOLDER Additional Syenrgy/DE Select logging can be recorded and the resulting log files will be stored in this folder location.  Synergy/DE Select logging in not thread/domain safe and thus log files may contain details from duplicate concurrent client connections.  It is recommended only when testing individual client connections. C:\Program Files (x86)\RCPConsultants\SymphonyFramework\SymphonyBridge\SelectLog
SYMPHONY_BRIDGE_SERVER_WEB_ADDRESS This is the server and port number which the running server will allocate and listen on for inbound Web HTTP web service connections from Symphony Harmony. localhost:8081
SYMPHONY_BRIDGE_SERVER_TCP_ADDRESS This is the server and port number which the running server will allocate and listen on for inbound Net TCP-IP connections from Symphony Harmony. localhost:8082
SYMPHONY_BRIDGE_SERVER_WEBAPI_ADDRESS This is the server and port number which the running server will allocate and listen on for inboundWEB API Restful connections. localhost:8083
SYMPHONY_BRIDGE_SERVER_WEBAPI_VERSION Define the verion number of the service. 1
SYMPHONY_BRDIGE_CUSTOM_ROUTINGS Provides the ability to define the libraries containing bespoke/custom WEB API controllers.  The string should be a semi-colon separated list of assemblies including the DLL extension.  All the assemblies must exisitng in the folder defined by the SYMPHONY_BRDIGE_LIBRARY_FOLDER setting above. ExampleData.dll;CustomData.dll
SYMPHONY_BRIDGE_CORS_DOMAINS CORS or Cross Origin Resource Sharing. Define the address of the client to provide CORS enablment. http://localhost:50284
SYMPHONY_BRIDGE_SERVER_MESSAGE_SIZE Size of the message size allowed through Symphony Bridge. 2147483647
SYMPHONY_BRIDGE_SERVER_SERVICE_BUS The address of the Microsoft Azure Service Bus relay to connect to. SymphonyBridgeService
SYMPHONY_BRIDGE_SERVER_SERVICE_KEY This is the security key that is required to make the connection tot he Microsoft Azure Service Bus Relay instance. dRjiyTaojffcmd8NlJyUmrbjY65TFW8XLd/waP1Q6C0=
BRIDGEDATA The location where Symphony Bridge pulse matrix data is recorded. C:\Program Files (x86)\Synergex\SymphonyFramework\SymphonyBridge\Data\
SYMPHONY_EXPOSE_CATALOGUE_INFO Setting to "True" will allow Symphony Bridge to return information about the resources available such as table names, table field names, stored procedure method names and parameters. True
SYMPHONY_CUSTOM_MAPPING_CLASS Define the fully qualified name of the table mapping method used to map table names to physical file names.  The client connection must use the DNS: prefix to force the evaluation of this setting and the subsequent execution of the defined method to map the table name to the file name. ExampleData.CustomTableMapping.MapDSNTableToFile
SYMPHONY_AUTHENTICATION_CLASS The Symphony Bridge provides for complete authentication and authorization control of access to resources.  This setting should be the name of your class that implements the ISymphonyAuthentication interface.  ExampleData.Authenticate

The Synergy/DE file IO sub-system provide the ability to implement IO Hooks.  These hooks provide the ability to perform logic when IO is performed on the Synergy data within a file.  Symphony Bridge fully supports IO Hooks.  This setting should be set to the fully qualified name of your IO Hook class.  The name should incldue the fully namespace, class, method name and the assembly name where the method can be found.

ExampleData.Data.dataIOHookManager, ExampleData
SYMPHONY_BRIDGE_CUSTOM_HEADER_MNEMONIC Define the custom mnemonic to be returned following a POST, PUT or DELETE operation through the Symphony Bridge WEB API Restful protocol. The default value is "Symphony".  The resulting header mnemonic is "X-Symphony-Result".
SYMPHONY_EXPOSE_CATALOGUE_INFO If set to True then when using the WEBAPI server protocol the client can query the server for resource information such as the strucutre names and fields along with the store procedure method names and arguments. True
SYMPHONY_BRIDGE_POOLED_DOMAINS Specify if the Symphony Bridge Server should create a pool of application domains. Pooling application domains can improve the performance of the Symphony Bridge Server. True
SYMPHONY_BRIDGE_POOLED_DOMAINS_COUNT Define the number of pooled domains. 10
SYMPHONY_EVENT_LOG_DATABASE Define the PostgreSQL database connection string. This will be the database used to record Symphony Event log details. Server=localhost;Port=5432;User ID=symphony;Password=*************;Database=symphonydatabase;
SYMPHONY_EVENT_RECORDING Define the number of pooled domains. True


 Running the Symphony Bridge Servers

Once the required configuration settings have been defined the Symphony Bridge server can be run.  You can run the console server from a Windows Command Prompt that has Administrator privileges by simply running the SymphonyBridgeServerConsole.exe program.  The server will run and display the available connections:



To run the Symphony Bridge as a windows server you first need to register the service.  This can be done by executing the SBServiceCreate.bat script.  This script accepts a single parameter - the service number.  This allows you to create any number of services:



The service can be stopped and started using the Service application in Control Panel.