Wat is het Cloud service model en hoe kan ik het pakket inpakken?What is the Cloud Service model and how do I package it?

Een Cloud service wordt gemaakt op basis van drie onderdelen, de service definitie (. csdef), de service configuratie (. cscfg) en een service pakket (. cspkg).A cloud service is created from three components, the service definition (.csdef), the service config (.cscfg), and a service package (.cspkg). De bestanden ServiceDefinition. csdef en ServiceConfig. cscfg zijn gebaseerd op XML en beschrijven de structuur van de Cloud service en hoe deze zijn geconfigureerd. het model wordt gezamenlijk genoemd.Both the ServiceDefinition.csdef and ServiceConfig.cscfg files are XML-based and describe the structure of the cloud service and how it's configured; collectively called the model. ServicePackage. cspkg is een zip-bestand dat is gegenereerd op basis van de ServiceDefinition. csdef en onder andere, bevat alle vereiste op basis van binaire afhankelijkheden.The ServicePackage.cspkg is a zip file that is generated from the ServiceDefinition.csdef and among other things, contains all the required binary-based dependencies. Azure maakt een Cloud service van zowel ServicePackage. cspkg als ServiceConfig. cscfg.Azure creates a cloud service from both the ServicePackage.cspkg and the ServiceConfig.cscfg.

Zodra de Cloud service wordt uitgevoerd in azure, kunt u deze opnieuw configureren via het ServiceConfig. cscfg -bestand, maar u kunt de definitie niet wijzigen.Once the cloud service is running in Azure, you can reconfigure it through the ServiceConfig.cscfg file, but you cannot alter the definition.

Waarover wilt u meer weten?What would you like to know more about?

ServiceDefinition. csdefServiceDefinition.csdef

Het bestand ServiceDefinition. csdef geeft de instellingen op die door Azure worden gebruikt voor het configureren van een Cloud service.The ServiceDefinition.csdef file specifies the settings that are used by Azure to configure a cloud service. Het Azure service definition-schema (csdef-bestand) biedt de toegestane indeling voor een service definitie bestand.The Azure Service Definition Schema (.csdef File) provides the allowable format for a service definition file. In het volgende voor beeld ziet u de instellingen die kunnen worden gedefinieerd voor de web-en werk rollen:The following example shows the settings that can be defined for the Web and Worker roles:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole1" vmsize="Medium">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="HttpIn" endpointName="HttpIn" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InternalEndpoint name="InternalHttpIn" protocol="http" />
    </Endpoints>
    <Certificates>
      <Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    <Imports>
      <Import moduleName="Connect" />
      <Import moduleName="Diagnostics" />
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
    <LocalResources>
      <LocalStorage name="localStoreOne" sizeInMB="10" />
      <LocalStorage name="localStoreTwo" sizeInMB="10" cleanOnRoleRecycle="false" />
    </LocalResources>
    <Startup>
      <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" />
    </Startup>
  </WebRole>

  <WorkerRole name="WorkerRole1">
    <ConfigurationSettings>
      <Setting name="DiagnosticsConnectionString" />
    </ConfigurationSettings>
    <Imports>
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="tcp" port="10000" />
      <InternalEndpoint name="Endpoint2" protocol="tcp" />
    </Endpoints>
  </WorkerRole>
</ServiceDefinition>

U kunt het service definitie schema raadplegen voor een beter begrip van het XML-schema dat hier wordt gebruikt, maar hier volgt een korte uitleg van een aantal van de elementen:You can refer to the Service Definition Schema for a better understanding of the XML schema used here, however, here is a quick explanation of some of the elements:

SitesSites
Bevat de definities voor websites of webtoepassingen die worden gehost in IIS7.Contains the definitions for websites or web applications that are hosted in IIS7.

InputEndpointsInputEndpoints
Bevat de definities voor eind punten die worden gebruikt om contact op te nemen met de Cloud service.Contains the definitions for endpoints that are used to contact the cloud service.

InternalEndpointsInternalEndpoints
Bevat de definities voor eind punten die worden gebruikt door rolinstanties om met elkaar te communiceren.Contains the definitions for endpoints that are used by role instances to communicate with each other.

ConfigurationSettingsConfigurationSettings
Bevat de instellings definities voor functies van een specifieke rol.Contains the setting definitions for features of a specific role.

CertificatenCertificates
Bevat de definities voor certificaten die nodig zijn voor een rol.Contains the definitions for certificates that are needed for a role. Het vorige code voorbeeld toont een certificaat dat wordt gebruikt voor de configuratie van Azure Connect.The previous code example shows a certificate that is used for the configuration of Azure Connect.

LocalResourcesLocalResources
Bevat de definities voor lokale opslag resources.Contains the definitions for local storage resources. Een lokale opslag resource is een gereserveerde map op het bestands systeem van de virtuele machine waarin een exemplaar van een rol wordt uitgevoerd.A local storage resource is a reserved directory on the file system of the virtual machine in which an instance of a role is running.

RuslandImports
Bevat de definities voor geïmporteerde modules.Contains the definitions for imported modules. Het vorige code voorbeeld toont de modules voor Verbinding met extern bureaublad en Azure Connect.The previous code example shows the modules for Remote Desktop Connection and Azure Connect.

OpstartenStartup
Bevat taken die worden uitgevoerd wanneer de rol wordt gestart.Contains tasks that are run when the role starts. De taken worden gedefinieerd in een. cmd-of een uitvoerbaar bestand.The tasks are defined in a .cmd or executable file.

ServiceConfiguration. cscfgServiceConfiguration.cscfg

De configuratie van de instellingen voor uw Cloud service wordt bepaald door de waarden in het bestand ServiceConfiguration. cscfg .The configuration of the settings for your cloud service is determined by the values in the ServiceConfiguration.cscfg file. U geeft het aantal exemplaren op dat u wilt implementeren voor elke rol in dit bestand.You specify the number of instances that you want to deploy for each role in this file. De waarden voor de configuratie-instellingen die u in het service definitie bestand hebt gedefinieerd, worden toegevoegd aan het service configuratie bestand.The values for the configuration settings that you defined in the service definition file are added to the service configuration file. De vinger afdrukken voor beheer certificaten die zijn gekoppeld aan de Cloud service worden ook toegevoegd aan het bestand.The thumbprints for any management certificates that are associated with the cloud service are also added to the file. Het Configuratie schema van de Azure-service (. cscfg-bestand) biedt de toegestane indeling voor een service configuratie bestand.The Azure Service Configuration Schema (.cscfg File) provides the allowable format for a service configuration file.

Het service configuratie bestand is niet verpakt met de toepassing, maar wordt als een afzonderlijk bestand geüpload naar Azure en wordt gebruikt om de Cloud service te configureren.The service configuration file is not packaged with the application, but is uploaded to Azure as a separate file and is used to configure the cloud service. U kunt een nieuw service configuratie bestand uploaden zonder uw Cloud service opnieuw te implementeren.You can upload a new service configuration file without redeploying your cloud service. De configuratie waarden voor de Cloud service kunnen worden gewijzigd terwijl de Cloud service wordt uitgevoerd.The configuration values for the cloud service can be changed while the cloud service is running. In het volgende voor beeld ziet u de configuratie-instellingen die kunnen worden gedefinieerd voor de web-en werk rollen:The following example shows the configuration settings that can be defined for the Web and Worker roles:

<?xml version="1.0"?>
<ServiceConfiguration serviceName="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
  <Role name="WebRole1">
    <Instances count="2" />
    <ConfigurationSettings>
      <Setting name="SettingName" value="SettingValue" />
    </ConfigurationSettings>

    <Certificates>
      <Certificate name="CertificateName" thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption"
         thumbprint="CertThumbprint" thumbprintAlgorithm="sha1" />
    </Certificates>
  </Role>
</ServiceConfiguration>

U kunt het schema voor Service configuratie raadplegen voor een beter inzicht in het XML-schema dat hier wordt gebruikt, maar hier volgt een korte uitleg van de elementen:You can refer to the Service Configuration Schema for better understanding the XML schema used here, however, here is a quick explanation of the elements:

exemplarenInstances
Hiermee configureert u het aantal actieve instanties voor de rol.Configures the number of running instances for the role. Om te voor komen dat uw Cloud service mogelijk niet meer beschikbaar is tijdens upgrades, is het raadzaam om meer dan één exemplaar van de webfacing-rollen te implementeren.To prevent your cloud service from potentially becoming unavailable during upgrades, it is recommended that you deploy more than one instance of your web-facing roles. Door meer dan één exemplaar te implementeren, moet u zich houden aan de richt lijnen in de Azure compute service level Agreement (Sla), die 99,95% externe connectiviteit voor Internet gerichte rollen garandeert wanneer twee of meer rolinstanties voor een service worden geïmplementeerd.By deploying more than one instance, you are adhering to the guidelines in the Azure Compute Service Level Agreement (SLA), which guarantees 99.95% external connectivity for Internet-facing roles when two or more role instances are deployed for a service.

ConfigurationSettingsConfigurationSettings
Hiermee configureert u de instellingen voor de actieve instanties voor een rol.Configures the settings for the running instances for a role. De naam van de <Setting> elementen moet overeenkomen met de instellings definities in het service definitie bestand.The name of the <Setting> elements must match the setting definitions in the service definition file.

CertificatenCertificates
Hiermee configureert u de certificaten die door de service worden gebruikt.Configures the certificates that are used by the service. Het vorige code voorbeeld laat zien hoe u het certificaat voor de RemoteAccess-module definieert.The previous code example shows how to define the certificate for the RemoteAccess module. De waarde van het kenmerk vinger afdruk moet worden ingesteld op de vinger afdruk van het certificaat dat moet worden gebruikt.The value of the thumbprint attribute must be set to the thumbprint of the certificate to use.

Notitie

De vinger afdruk voor het certificaat kan worden toegevoegd aan het configuratie bestand met behulp van een tekst editor.The thumbprint for the certificate can be added to the configuration file by using a text editor. Of de waarde kan worden toegevoegd op het tabblad certificaten van de pagina Eigenschappen van de rol in Visual Studio.Or, the value can be added on the Certificates tab of the Properties page of the role in Visual Studio.

Poorten definiëren voor rolinstantiesDefining ports for role instances

Azure staat slechts één toegangs punt toe voor een webrole.Azure allows only one entry point to a web role. Dit betekent dat alle verkeer plaatsvindt via één IP-adres.Meaning that all traffic occurs through one IP address. U kunt uw websites zo configureren dat deze een poort delen door de hostheader zo te configureren dat de aanvraag naar de juiste locatie wordt geleid.You can configure your websites to share a port by configuring the host header to direct the request to the correct location. U kunt uw toepassingen ook configureren om te Luis teren naar bekende poorten op het IP-adres.You can also configure your applications to listen to well-known ports on the IP address.

In het volgende voor beeld ziet u de configuratie voor een webrole met een website en web-app.The following sample shows the configuration for a web role with a website and web application. De website is geconfigureerd als de standaard locatie voor invoer op poort 80 en de webtoepassingen worden geconfigureerd voor het ontvangen van aanvragen van een alternatieve host-header met de naam ' mail.mysite.cloudapp.net '.The website is configured as the default entry location on port 80, and the web applications are configured to receive requests from an alternate host header that is called “mail.mysite.cloudapp.net”.

<WebRole>
  <ConfigurationSettings>
    <Setting name="DiagnosticsConnectionString" />
  </ConfigurationSettings>
  <Endpoints>
    <InputEndpoint name="HttpIn" protocol="http" port="80" />
    <InputEndpoint name="Https" protocol="https" port="443" certificate="SSL"/>
    <InputEndpoint name="NetTcp" protocol="tcp" port="808" certificate="SSL"/>
  </Endpoints>
  <LocalResources>
    <LocalStorage name="Sites" cleanOnRoleRecycle="true" sizeInMB="100" />
  </LocalResources>
  <Site name="Mysite" packageDir="Sites\Mysite">
    <Bindings>
      <Binding name="http" endpointName="HttpIn" />
      <Binding name="https" endpointName="Https" />
      <Binding name="tcp" endpointName="NetTcp" />
    </Bindings>
  </Site>
  <Site name="MailSite" packageDir="MailSite">
    <Bindings>
      <Binding name="mail" endpointName="HttpIn" hostHeader="mail.mysite.cloudapp.net" />
    </Bindings>
    <VirtualDirectory name="artifacts" />
    <VirtualApplication name="storageproxy">
      <VirtualDirectory name="packages" packageDir="Sites\storageProxy\packages"/>
    </VirtualApplication>
  </Site>
</WebRole>

De configuratie van een rol wijzigenChanging the configuration of a role

U kunt de configuratie van uw Cloud service bijwerken terwijl deze wordt uitgevoerd in azure, zonder de service offline te halen.You can update the configuration of your cloud service while it is running in Azure, without taking the service offline. Als u configuratie-informatie wilt wijzigen, kunt u een nieuw configuratie bestand uploaden of het configuratie bestand op locatie bewerken en Toep assen op uw actieve service.To change configuration information, you can either upload a new configuration file, or edit the configuration file in place and apply it to your running service. De volgende wijzigingen kunnen worden aangebracht in de configuratie van een service:The following changes can be made to the configuration of a service:

  • De waarden van de configuratie-instellingen wijzigenChanging the values of configuration settings
    Wanneer een configuratie-instelling wordt gewijzigd, kan een rolinstantie ervoor kiezen de wijziging toe te passen terwijl het exemplaar online is, of om het exemplaar op de juiste wijze te recyclen en de wijziging toe te passen terwijl het exemplaar offline is.When a configuration setting changes, a role instance can choose to apply the change while the instance is online, or to recycle the instance gracefully and apply the change while the instance is offline.
  • De service topologie van rolinstanties wijzigenChanging the service topology of role instances
    De topologie wijzigingen hebben geen invloed op actieve instanties, behalve wanneer een exemplaar wordt verwijderd.Topology changes do not affect running instances, except where an instance is being removed. Alle overige instanties hoeven over het algemeen niet te worden gerecycled. u kunt er echter voor kiezen om rolinstanties te recyclen als reactie op een wijziging in de topologie.All remaining instances generally do not need to be recycled; however, you can choose to recycle role instances in response to a topology change.
  • De vinger afdruk van het certificaat wijzigenChanging the certificate thumbprint
    U kunt een certificaat alleen bijwerken wanneer een rolinstantie offline is.You can only update a certificate when a role instance is offline. Als een certificaat wordt toegevoegd, verwijderd of gewijzigd terwijl een rolinstantie online is, neemt Azure het exemplaar op de juiste manier offline om het certificaat bij te werken en weer online te zetten nadat de wijziging is voltooid.If a certificate is added, deleted, or changed while a role instance is online, Azure gracefully takes the instance offline to update the certificate and bring it back online after the change is complete.

Configuratie wijzigingen afhandelen met Service runtime-gebeurtenissenHandling configuration changes with Service Runtime Events

De Azure runtime library bevat de naam ruimte micro soft. WindowsAzure. ServiceRuntime , die klassen biedt voor interactie met de Azure-omgeving vanuit een rol.The Azure Runtime Library includes the Microsoft.WindowsAzure.ServiceRuntime namespace, which provides classes for interacting with the Azure environment from a role. De klasse RoleEnvironment definieert de volgende gebeurtenissen die worden gegenereerd voor en na een configuratie wijziging:The RoleEnvironment class defines the following events that are raised before and after a configuration change:

  • Gebeurtenis wijzigenChanging event
    Dit gebeurt voordat de configuratie wijziging wordt toegepast op een opgegeven exemplaar van een rol, zodat u zo nodig de rolinstanties kunt door voeren.This occurs before the configuration change is applied to a specified instance of a role giving you a chance to take down the role instances if necessary.
  • Gewijzigde gebeurtenisChanged event
    Deze gebeurtenis treedt op nadat de configuratie wijziging is toegepast op een opgegeven exemplaar van een rol.Occurs after the configuration change is applied to a specified instance of a role.

Notitie

Omdat certificaat wijzigingen altijd de instanties van een rol offline nemen, worden de RoleEnvironment. changed of RoleEnvironment. gewijzigde gebeurtenissen niet verhoogd.Because certificate changes always take the instances of a role offline, they do not raise the RoleEnvironment.Changing or RoleEnvironment.Changed events.

ServicePackage. cspkgServicePackage.cspkg

Notitie

De maximale pakket grootte die kan worden geïmplementeerd, is 600MBThe maximum package size that can be deployed is 600MB

Als u een toepassing als een Cloud service in azure wilt implementeren, moet u de toepassing eerst in de juiste indeling inpakken.To deploy an application as a cloud service in Azure, you must first package the application in the appropriate format. U kunt het opdracht regel programma CSPack (geïnstalleerd met de Azure- SDK) gebruiken om het pakket bestand te maken als een alternatief voor Visual Studio.You can use the CSPack command-line tool (installed with the Azure SDK) to create the package file as an alternative to Visual Studio.

CSPack maakt gebruik van de inhoud van het service definitie bestand en service configuratie bestand om de inhoud van het pakket te definiëren.CSPack uses the contents of the service definition file and service configuration file to define the contents of the package. CSPack genereert een toepassings pakket bestand (. cspkg) dat u naar Azure kunt uploaden met behulp van de Azure Portal.CSPack generates an application package file (.cspkg) that you can upload to Azure by using the Azure portal. Het pakket heet standaard [ServiceDefinitionFileName].cspkg , maar u kunt een andere naam opgeven met behulp /out van de optie CSPack.By default, the package is named [ServiceDefinitionFileName].cspkg, but you can specify a different name by using the /out option of CSPack.

CSPack bevindt zich opCSPack is located at
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\

Notitie

CSPack.exe (in Windows) is beschikbaar door de Microsoft Azure opdracht prompt snelkoppeling uit te voeren die met de SDK is geïnstalleerd.CSPack.exe (on windows) is available by running the Microsoft Azure Command Prompt shortcut that is installed with the SDK.

Voer het CSPack.exe-programma zelfstandig uit om documentatie over alle mogelijke switches en opdrachten weer te geven.Run the CSPack.exe program by itself to see documentation about all the possible switches and commands.

Tip

Voer uw Cloud service lokaal uit in de Microsoft Azure Compute-emulatoren gebruik de optie /copyonly .Run your cloud service locally in the Microsoft Azure Compute Emulator, use the /copyonly option. Met deze optie kopieert u de binaire bestanden voor de toepassing naar een directory-indeling van waaruit ze kunnen worden uitgevoerd in de compute emulator.This option copies the binary files for the application to a directory layout from which they can be run in the compute emulator.

Voorbeeld opdracht voor het inpakken van een Cloud serviceExample command to package a cloud service

In het volgende voor beeld wordt een toepassings pakket gemaakt dat de informatie voor een webrole bevat.The following example creates an application package that contains the information for a web role. De opdracht geeft het service definitie bestand op dat moet worden gebruikt, de map waar binaire bestanden kunnen worden gevonden en de naam van het pakket bestand.The command specifies the service definition file to use, the directory where binary files can be found, and the name of the package file.

cspack [DirectoryName]\[ServiceDefinition]
       /role:[RoleName];[RoleBinariesDirectory]
       /sites:[RoleName];[VirtualPath];[PhysicalPath]
       /out:[OutputFileName]

Als de toepassing zowel een webrole als een worker-rol bevat, wordt de volgende opdracht gebruikt:If the application contains both a web role and a worker role, the following command is used:

cspack [DirectoryName]\[ServiceDefinition]
       /out:[OutputFileName]
       /role:[RoleName];[RoleBinariesDirectory]
       /sites:[RoleName];[VirtualPath];[PhysicalPath]
       /role:[RoleName];[RoleBinariesDirectory];[RoleAssemblyName]

Waar de variabelen als volgt worden gedefinieerd:Where the variables are defined as follows:

VariabeleVariable WaardeValue
[DirectoryName][DirectoryName] De submap onder de hoofdmap van het project met het. csdef-bestand van het Azure-project.The subdirectory under the root project directory that contains the .csdef file of the Azure project.
[ServiceDefinition][ServiceDefinition] De naam van het service definitie bestand.The name of the service definition file. Dit bestand heeft standaard de naam ServiceDefinition. csdef.By default, this file is named ServiceDefinition.csdef.
[OutputFileName][OutputFileName] De naam voor het gegenereerde pakket bestand.The name for the generated package file. Dit wordt doorgaans ingesteld op de naam van de toepassing.Typically, this is set to the name of the application. Als er geen bestands naam is opgegeven, wordt het toepassings pakket gemaakt als [ ApplicationName ] . cspkg.If no file name is specified, the application package is created as [ApplicationName].cspkg.
[RoleName][RoleName] De naam van de rol zoals gedefinieerd in het service definitie bestand.The name of the role as defined in the service definition file.
[RoleBinariesDirectory][RoleBinariesDirectory] De locatie van de binaire bestanden voor de rol.The location of the binary files for the role.
[VirtualPath][VirtualPath] De fysieke mappen voor elk virtueel pad dat is gedefinieerd in de sectie sites van de service definitie.The physical directories for each virtual path defined in the Sites section of the service definition.
[PhysicalPath][PhysicalPath] De fysieke mappen van de inhoud voor elk virtueel pad dat is gedefinieerd in het knoop punt site van de service definitie.The physical directories of the contents for each virtual path defined in the site node of the service definition.
[RoleAssemblyName][RoleAssemblyName] De naam van het binaire bestand voor de rol.The name of the binary file for the role.

Volgende stappenNext steps

Ik maak een Cloud service pakket en ik wil...I'm creating a cloud service package and I want to...

Ik gebruik Visual Studio en ik wil...I am using Visual Studio and I want to...