ما هو نموذج Azure Cloud Service وكيف يمكنني حزمه؟

يتم إنشاء خدمة سحابية من ثلاثة مكونات، تعريف الخدمة (.csdef) وتكوين الخدمة (.cscfg) وحزمة خدمة (.cspkg). يستند كل من ملفي ServiceDefinition.csdef وServiceConfig.cscfg إلى XML ويصفان بنية الخدمة السحابية وكيفية تكوينها؛ ويسمى بشكل جماعي النموذج. ServicePackage.cspkg هو ملف مضغوط يتم إنشاؤه من ServiceDefinition.csdef ويحتوي من بين أشياء أخرى على جميع التبعيات المستندة إلى ثنائي المطلوبة. ينشئ Azure خدمة سحابية من كل من ServicePackage.cspkg وServiceConfig.cscfg.

بمجرد تشغيل الخدمة السحابية في Azure، يمكنك إعادة تكوينها من خلال ملف ServiceConfig.cscfg ، ولكن لا يمكنك تغيير التعريف.

ماذا تريد أن تعرف المزيد عنه؟

ServiceDefinition.csdef

يحدد ملف ServiceDefinition.csdef الإعدادات التي يستخدمها Azure لتكوين خدمة سحابية. يوفر مخطط تعريف خدمة Azure (ملف.csdef) التنسيق المسموح به لملف تعريف الخدمة. يوضح المثال التالي الإعدادات التي يمكن تحديدها لأدوار الويب والعامل:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyServiceName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole1" vmsize="Standard_D1_v2">
    <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>

يمكنك الرجوع إلى مخطط تعريف الخدمة) للحصول على فهم أفضل لمخطط XML المستخدم هنا، ومع ذلك، إليك شرح سريع لبعض العناصر:

المواقع
يحتوي على تعريفات لمواقع الويب أو تطبيقات الويب التي تتم استضافتها في IIS7.

نقاط نهاية الإدخال
يحتوي على تعريفات لنقاط النهاية المستخدمة للاتصال بالخدمة السحابية.

نقاط النهاية الداخلية
يحتوي على تعريفات لنقاط النهاية التي تستخدمها مثيلات الدور للتواصل مع بعضها البعض.

إعدادات التكوين
يحتوي على تعريفات الإعداد لميزات دور معين.

الشهادات
يحتوي على تعريفات الشهادات المطلوبة لدور ما. يُظهر مثال الرمز السابق شهادة تُستخدم لتكوين اتصال Azure.

LocalResources
يحتوي على تعريفات موارد التخزين المحلية. مورد التخزين المحلي هو دليل محجوز في نظام الملفات الخاص بالجهاز الظاهري حيث يتم تشغيل مثيل للدور.

الاستيراد
يحتوي على تعريفات للوحدات النمطية المستوردة. يُظهر مثال الكود السابق الوحدات النمطية لاتصال سطح المكتب البعيد واتصال Azure.

الشركات الناشئة
يحتوي على المهام التي يتم تشغيلها عند بدء الدور. يتم تحديد المهام في ملف .cmd، أو قابل للتنفيذ.

ServiceConfiguration.cscfg

يتم تحديد تكوين إعدادات الخدمة السحابية من خلال القيم الموجودة في ملف ServiceConfiguration.cscfg . أنت تحدد عدد المثيلات التي تريد نشرها لكل دور في هذا الملف. تتم إضافة قيم إعدادات التكوين التي حددتها في ملف تعريف الخدمة إلى ملف تكوين الخدمة. تتم أيضًا إضافة بصمات الأصابع لأي شهادات إدارة مرتبطة بالخدمة السحابية إلى الملف. يوفر مخطط تكوين خدمة Azure (ملف.cscfg) التنسيق المسموح به لملف تكوين الخدمة.

لم يتم حزم ملف تكوين الخدمة مع التطبيق؛ ولكن يتم تحميله إلى Azure كملف منفصل، ويتم استخدامه لتكوين الخدمة السحابية. يمكنك تحميل ملف تكوين خدمة جديد بدون إعادة نشر الخدمة السحابية الخاصة بك. يمكن تغيير قيم التكوين للخدمة السحابية أثناء تشغيل الخدمة السحابية. يوضح المثال التالي إعدادات التكوين التي يمكن تحديدها لأدوار الويب والعامل:

<?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>

يمكنك الرجوع إلى مخطط تكوين الخدمة لفهم مخطط XML المستخدم هنا بشكل أفضل، ومع ذلك، إليك شرح سريع للعناصر:

الحالات
يكون عدد مثيلات التشغيل للدور. لمنع احتمال عدم توفر الخدمة السحابية أثناء الترقيات، يوصى بنشر أكثر من مثيل واحد من الأدوار التي تواجه الويب. من خلال نشر أكثر من مثيل واحد، فإنك تلتزم بالإرشادات الواردة في اتفاقية مستوى خدمة حساب Azure (SLA)، والتي تضمن اتصالا خارجيا بنسبة 99.95٪ للأدوار التي تواجه الإنترنت عند نشر مثيلين أو أكثر من مثيلات الأدوار لخدمة ما.

إعدادات التكوين
يعمل على تكوين الإعدادات الخاصة بالمثيلات قيد التشغيل لدور ما. يجب أن يتطابق اسم <Setting> العناصر مع تعريفات الإعداد في ملف تعريف الخدمة.

الشهادات
تكوين الشهادات التي تستخدمها الخدمة. يوضح مثال الكود السابق كيفية تعريف الشهادة لوحدة RemoteAccess. يجب تعيين قيمة سمة بصمة الإبهام إلى بصمة الإبهام للشهادة لاستخدامها.

إشعار

يمكن إضافة بصمة الإبهام للشهادة إلى ملف التكوين باستخدام محرر نص. أو، يمكن إضافة القيمة في علامة التبويب Certificates في صفحة Properties للدور في Visual Studio.

تحديد المنافذ لمثيلات الدور

يسمح Azure بنقطة إدخال واحدة فقط لدور الويب. بمعنى أن كل حركة المرور تحدث من خلال عنوان IP واحد. يمكنك تكوين مواقع الويب الخاصة بك لمشاركة منفذ عن طريق تكوين رأس المضيف لتوجيه الطلب إلى الموقع الصحيح. يمكنك أيضًا تكوين تطبيقاتك للاستماع إلى المنافذ المعروفة على عنوان IP.

يوضح النموذج التالي التكوين لدور ويب مع موقع ويب، وتطبيق ويب. تم تكوين موقع الويب كموقع الإدخال الافتراضي على المنفذ 80، وتم تكوين تطبيقات الويب لتلقي الطلبات من رأس مضيف بديل يسمى "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>

تغيير تكوين الدور

يمكنك تحديث تكوين الخدمة السحابية الخاصة بك أثناء تشغيلها في Azure، دون قطع اتصال الخدمة بالخدمة. لتغيير معلومات التكوين، يمكنك إما تحميل ملف تكوين جديد، أو تحرير ملف التكوين في مكانه وتطبيقه على الخدمة قيد التشغيل. يمكن إجراء التغييرات التالية على تكوين الخدمة:

  • تغيير قيم إعدادات التكوين
    عندما يتغير أحد إعدادات التكوين، يمكن لمثيل الدور أن يختار تطبيق التغيير أثناء اتصال المثيل بالإنترنت، أو إعادة استخدام المثيل بأمان، وتطبيق التغيير عندما يكون المثيل غير متصل.
  • تغيير مخطط الخدمة لمثيلات الدور
    لا تؤثر تغييرات الطوبولوجيا على المثيلات قيد التشغيل، باستثناء المكان الذي تتم فيه إزالة مثيل. لا تحتاج جميع المثيلات المتبقية عمومًا إلى إعادة التدوير، ومع ذلك، يمكنك اختيار إعادة استخدام مثيلات الأدوار استجابةً لتغيير الطوبولوجيا.
  • تغيير بصمة إبهام الشهادة
    يمكنك فقط تحديث شهادة عندما يكون مثيل الدور غير متصل. إذا تمت إضافة شهادة أو حذفها أو تغييرها أثناء اتصال مثيل الدور، فإن Azure ينقل المثيل برشاقة إلى وضع عدم الاتصال لتحديث الشهادة، وإعادة الاتصال بالإنترنت بعد اكتمال التغيير.

معالجة تغييرات التكوين مع أحداث وقت تشغيل الخدمة

تتضمن مكتبة وقت تشغيل Azure مساحة الاسم Microsoft.WindowsAzure.ServiceRuntime، والتي توفر فئات للتفاعل مع بيئة Azure من دور. تحدد فئة RoleEnvironment الأحداث التالية التي يتم رفعها قبل وبعد تغيير التكوين:

  • تغيير الحدث
    يحدث هذا قبل تطبيق تغيير التكوين على مثيل محدد للدور مما يمنحك فرصة لإزالة حالات الدور إذا لزم الأمر.
  • حدث تم تغييره
    يحدث بعد تطبيق تغيير التكوين على مثيل محدد للدور.

إشعار

نظرًا لأن تغييرات الشهادة تأخذ دائمًا مثيلات الدور دون اتصال، فإنها لا ترفع الأحداث RoleEnvironment.Changing، أو RoleEnvironment.Changed.

ServicePackage.cspkg

إشعار

الحد الأقصى لحجم الحزمة التي يمكن نشرها هو 600 ميغا بايت

لنشر تطبيق كخدمة سحابية في Azure، يجب عليك أولاً حزم التطبيق بالتنسيق المناسب. يمكنك استخدام أداة سطر الأوامر CSPack (المثبتة مع Azure SDK) لإنشاء ملف الحزمة كبديل ل Visual Studio.

يستخدم CSPack محتويات ملف تعريف الخدمة وملف تكوين الخدمة لتعريف محتويات الحزمة. ينشئ CSPack ملف حزمة تطبيق (.cspkg) يمكنك تحميله إلى Azure باستخدام مدخل Microsoft Azure. بشكل افتراضي، يتم تسمية الحزمة [ServiceDefinitionFileName].cspkg، ولكن يمكنك تحديد اسم مختلف باستخدام /out خيار CSPack.

يقع CSPack في
C:\Program Files\Microsoft SDKs\Azure\.NET SDK\[sdk-version]\bin\

إشعار

يتوفر CSPack.exe (على النوافذ) عن طريق تشغيل اختصار موجه أوامر Microsoft Azure المثبت مع SDK.

قم بتشغيل برنامج CSPack.exe بمفرده للاطلاع على الوثائق المتعلقة بجميع المفاتيح، والأوامر الممكنة.

تلميح

قم بتشغيل الخدمة السحابية محليا في Microsoft Azure Compute Emulator، استخدم الخيار /copyonly . ينسخ هذا الخيار الملفات الثنائية للتطبيق إلى تخطيط دليل يمكن من خلاله تشغيلها في محاكي الحساب.

مثال أمر لحزم خدمة سحابية

يقوم المثال التالي بإنشاء حزمة تطبيق تحتوي على معلومات لدور ويب. يحدد الأمر ملف تعريف الخدمة المراد استخدامه والدليل؛ حيث يمكن العثور على الملفات الثنائية، واسم ملف الحزمة.

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

إذا كان التطبيق يحتوي على دور ويب ودور عامل، فسيتم استخدام الأمر التالي:

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

حيث يتم تعريف المتغيرات على النحو التالي:

المتغير القيمة‬
[اسم الدليل] الدليل الفرعي ضمن دليل المشروع الجذر الذي يحتوي على ملف .csdef الخاص بمشروع Azure.
[ServiceDefinition] اسم ملف تعريف الخدمة. بشكل افتراضي، يسمى هذا الملف ServiceDefinition.csdef.
[OutputFileName] اسم ملف الحزمة الذي تم إنشاؤه. عادة، يتم تعيين هذا على اسم التطبيق. إذا لم يتم تحديد اسم ملف، فسيتم إنشاء حزمة التطبيق بالشكل [ApplicationName].cspkg.
[RoleName] اسم الدور كما هو محدد في ملف تعريف الخدمة.
[RoleBinariesDirectory] موقع الملفات الثنائية للدور.
[VirtualPath] الدلائل المادية لكل مسار افتراضي محدد في قسم المواقع من تعريف الخدمة.
[PhysicalPath] الدلائل المادية لمحتويات كل مسار افتراضي محدد في عقدة الموقع لتعريف الخدمة.
[RoleAssemblyName] اسم الملف الثنائي للدور.

الخطوات التالية