The Windows Azure service model is determined by the service definition file. The service definition defines what kind of code the role is made of. This is specified when building the service, and can't be changed dynamically when the application is running. The service definition file defines the roles that comprise a service, optional local storage resources, configuration settings, and certificates for SSL endpoints. The service definition details goes into the ServiceDefinition.cscfg file. This file acts as a simplified service model for the Role. If lays out a few critical components of the role like:
- Options for these roles (virtual machine size, whether native code execution is supported)
- Input endpoints for these roles.
- Local disk storage that the role will need.
- Configuration settings that the role will use.
The service configuration file sets values for the service that can be configured while the service is running in the fabric. The values that can be specified in the service configuration file include the number of instances that needed to be deployed for each role. The service configuration contains tweakable settings which can be changed on-the-fly without having to rebuild and redeploy the application. Service configuration file (ServiceConfiguration.cscfg) contains two key elements:
- Number of role instances used by the role.
- Value for the settings defined in the Service definition file.