قم باحتواء الخدمات الموثوقة لنسيج الخدمة والجهات الفاعلة الموثوقة على Windows

يدعم نسيج الخدمة خدمات مايكروسوفت لنسيج الخدمة في الحاويات (خدمات موثوقة، وخدمات تعتمد على الجهات الفاعلة الموثوقة). لمزيد من المعلومات، راجع حاويات نسيج الخدمة .

يوفر هذا المستند إرشادات لتشغيل الخدمة داخل حاوية Windows.

ملاحظة

تعمل هذه الميزة حاليًا مع Windows فقط. لتشغيل الحاويات، يجب تشغيل المجموعة على Windows Server 2016 باستخدام الحاويات.

خطوات وضع تطبيق نسيج الخدمة خاصتك في حاويات

  1. افتح تطبيق نسيج الخدمة في Visual Studio.

  2. أضف فئة SFBinaryLoader.cs إلى مشروعك. الرمز في هذه الفئة هو مساعد لتحميل ثنائيات وقت تشغيل نسيج الخدمة بشكل صحيح داخل التطبيق خاصتك عند التشغيل داخل حاوية.

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

    namespace MyApplication
    {
       internal static class Program
       {
           static Program()
           {
               SFBinaryLoader.Initialize();
           }
    
           /// <summary>
           /// This is the entry point of the service host process.
           /// </summary>
           private static void Main()
           {
    
  4. قم ببناء حزمة مشروعك. لإنشاء حزمة وإنشائها، انقر بزر الماوس الأيمن فوق مشروع التطبيق في مستكشف الحلول واختر الأمر حزمة.

  5. لكل حزمة شفرة تحتاج إلى تعبئتها، قم بتشغيل البرنامج النصي PowerShell CreateDockerPackage.ps1 . الاستخدام هو كما يلي:

    شبكة .NET كاملة

      $codePackagePath = 'Path to the code package to containerize.'
      $dockerPackageOutputDirectoryPath = 'Output path for the generated docker folder.'
      $applicationExeName = 'Name of the Code package executable.'
      CreateDockerPackage.ps1 -CodePackageDirectoryPath $codePackagePath -DockerPackageOutputDirectoryPath $dockerPackageOutputDirectoryPath -ApplicationExeName $applicationExeName
    

    .NET Core

      $codePackagePath = 'Path to the code package to containerize.'
      $dockerPackageOutputDirectoryPath = 'Output path for the generated docker folder.'
      $dotnetCoreDllName = 'Name of the Code package dotnet Core Dll.'
      CreateDockerPackage.ps1 -CodePackageDirectoryPath $codePackagePath -DockerPackageOutputDirectoryPath $dockerPackageOutputDirectoryPath -DotnetCoreDllName $dotnetCoreDllName
    

    ينشئ البرنامج النصي مجلدًا يحتوي على تحف Docker في $ dockerPackageOutputDirectoryPath. قم بتعديل ملف Dockerfile الذي تم إنشاؤه إلى expose أي منافذ، وقم بتشغيل برامج نصية للإعداد وما إلى ذلك بناءً على احتياجاتك.

  6. بعد ذلك، تحتاج إلى بناء و دفع حزمة حاوية Docker إلى مستودعك.

  7. قم بتعديل ApplicationManifest.xml وServiceManifest.xml لإضافة صورة الحاوية ومعلومات المستودع ومصادقة التسجيل وتعيين منفذ إلى مضيف. لتعديل القوائم، راجع إنشاء تطبيق حاوية نسيج خدمة Azure. يجب استبدال تعريف حزمة الكود في بيان الخدمة بصورة الحاوية المقابلة. تأكد من تغيير نقطة الدخول إلى نوع ContainerHost.

    <!-- Code package is your service executable. -->
    <CodePackage Name="Code" Version="1.0.0">
    <EntryPoint>
     <!-- Follow this link for more information about deploying Windows containers to Service Fabric: https://aka.ms/sfguestcontainers -->
     <ContainerHost>
       <ImageName>myregistry.azurecr.io/samples/helloworldapp</ImageName>
     </ContainerHost>
    </EntryPoint>
    <!-- Pass environment variables to your container: -->
    </CodePackage>
    
  8. أضف تعيين المنفذ إلى المضيف لوحدة النسخ المتماثل ونقطة نهاية الخدمة. نظرًا لأنه يتم تعيين كلا هذين المنفذين في وقت التشغيل بواسطة نسيج الخدمة، يتم تعيين منفذ الحاوية إلى صفر لاستخدام المنفذ المخصص للتعيين.

    <Policies>
    <ContainerHostPolicies CodePackageRef="Code">
     <PortBinding ContainerPort="0" EndpointRef="ServiceEndpoint"/>
     <PortBinding ContainerPort="0" EndpointRef="ReplicatorEndpoint"/>
    </ContainerHostPolicies>
    </Policies>
    
  9. لتكوين وضع عزل الحاوية، راجع تكوين وضع العزل. يدعم نظام التشغيل Windows وضعين لعزل الحاويات: المعالجة و Hyper - V. توضح المقتطفات التالية كيفية تحديد وضع العزل في ملف بيان التطبيق.

    <Policies>
    <ContainerHostPolicies CodePackageRef="Code" Isolation="process">
    ...
    </ContainerHostPolicies>
    </Policies>
    
    <Policies>
    <ContainerHostPolicies CodePackageRef="Code" Isolation="hyperv">
    ...
    </ContainerHostPolicies>
    </Policies>
    

ملاحظة

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

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

      {
        "name": "Hosting",
        "parameters": [
          {
            "name": "FabricContainerAppsEnabled",
            "value": "true"
          }
        ]
      }
    
  2. التالي نشر حزمة التطبيق المعدلة في هذه المجموعة.

يجب أن يكون لديك الآن تطبيق نسيج الخدمة المعبأ في حاويات لتشغيل مجموعتك.

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