البرنامج التعليمي: نشر تطبيق C# ASP.NET إلى Azure وقاعدة بيانات Azure SQL

توفر خدمة تطبيقات Azure خدمة استضافة ويب قابلة للتطوير بدرجة كبيرة وذاتية التصحيح. يوضح لك هذا البرنامج التعليمي كيفية نشر تطبيق ASP.NET بالاستناد إلى البيانات في App Service وتوصيله بـ قاعدة بيانات Azure SQL . عند الانتهاء، سيكون لديك تطبيق ASP.NET قيد التشغيل في Azure ومتصل بقاعدة بيانات SQL.

Published ASP.NET application in Azure App Service

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء قاعدة بيانات في Azure SQL Database
  • توصيل تطبيق ASP.NET بقاعدة بيانات SQL
  • توزيع التطبيق على Azure
  • تحديث نموذج البيانات وإعادة نشر التطبيق
  • دفق سجلات من Azure إلى المحطة الطرفية الخاصة بك

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي:

ثبت Visual Studio 2022 باستخدام ASP.NET وتطوير الويب و أحمال العمل الخاصة بـ تطوير Azure.

إذا كنت قد قمت بتثبيت Visual Studio بالفعل، فأضف أحمال العمل في Visual Studio بالنقر فوق Tools> وGet Tools وFeatures.

تنزيل العينة

  1. تحميل نموذج المشروع.

  2. استخرِج (فك ضغط) ملف dotnet-sqldb-tutorial-master.zip.

يحتوي نموذج المشروع على تطبيق أساسي ASP.NET MVC لإنشاء-قراءة-تحديث-حذف (CRUD) باستخدام Entity Framework Code First.

تشغيل التطبيق

  1. افتح الملف dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln في Visual Studio.

  2. اكتب F5 لتشغيل التطبيق. يتم عرض التطبيق في المستعرض الافتراضي الخاص بك.

    إشعار

    إذا قمت بتثبيت Visual Studio والمتطلبات الأساسية فقط، فقد تضطر إلى تثبيت الحزم المفقودة عبر NuGet.

  3. حدد الرابط إنشاء جديد وأنشئ عنصري مهام.

    New ASP.NET Project dialog box

  4. حدد روابط تعديل وتفاصيل وحذف .

يستخدم التطبيق سياق قاعدة البيانات للاتصال بقاعدة البيانات. في هذا النموذج، يستخدم سياق قاعدة البيانات سلسلة اتصال تُسمى MyDbConnection. تم تعيين سلسلة الاتصال في ملف Web.config والمشار إليها في ملف Models/MyDatabaseContext.cs. يتم استخدام اسم سلسلة الاتصال لاحقاً في البرنامج التعليمي لتوصيل تطبيق Azure بقاعدة بيانات Azure SQL.

نشر تطبيق ASP.NET إلى Azure

  1. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروع DotNetAppSqlDb وحدد Publish.

    Publish from Solution Explorer

  2. حدد Azure كهدف وانقر فوق Next.

  3. تأكد من تحديد Azure App Service (Windows) وانقر فوق Next.

تسجيل الدخول وإضافة تطبيق

  1. في مربع الحوار نشر انقر فوق تسجيل الدخول.

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

  3. في جزء App Service instances، انقر فوق +.

    Sign in to Azure

تكوين اسم تطبيق الويب

يمكنك الاحتفاظ باسم تطبيق الويب الذي تم إنشاؤه، أو تغييره إلى اسم فريد آخر (الأحرف الصالحة للاستخدام هي a-z و0-9 و-). يُستخدم اسم تطبيق الويب كجزء من عنوان URL الافتراضي لتطبيقك (<app_name>.azurewebsites.net، عندما يكون <app_name> هو اسم تطبيق الويب خاصتك). يجب أن يكون اسم تطبيق الويب فريداً عبر جميع التطبيقات في Azure.

إشعار

لا تحدد Create بعد.

Create app service dialog

إنشاء مجموعة موارد

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

  1. إلى جانب مجموعة الموارد، انقر فوق New.

    Next to Resource Group, click New.

  2. قم بتسمية مجموعة الموارد باسم myResourceGroup.

إنشاء خطة App Service

تحددخطة خدمة تطبيقاتموقع مزرعة خوادم الويب التي تستضيف تطبيقك، وحجمها، ومزاياها. يمكنك توفير المال عند استضافة عدة تطبيقات بتكوين تطبيقات الويب لمشاركة خطة خدمة تطبيقات واحدة.

تُعرف خطة خدمة تطبيقات:

  • منطقة (على سبيل المثال: شمال أوروبا أو شرق الولايات المتحدة أو جنوب شرق آسيا)
  • حجم العنصر المثيل (صغير أو متوسط أو كبير)
  • حجم المقياس (1 إلى 20 مثيلًا)
  • SKU (مجاني أو مشترك أو أساسي أو قياسي أو متميز)
  1. إلى جانب خطة الاستضافة، انقر فوق New.

  2. في مربع الحوار Configure App Service Plan قم بتكوين خطة App Service الجديدة مع الإعدادات التالية ثم انقر فوق OK:

    الإعدادات القيمة المقترحة لمزيد من المعلومات
    خطة App Service myAppServicePlan خطط App Service
    Location أوروبا الغربية مناطق Azure
    حجم مجاني مستويات التسعير

    Create App Service plan

  3. انقر فوق Create وانتظر أن يتم إنشاء موارد Azure.

  4. يظهر مربع الحوار Publish الموارد التي قمت بتكوينها. انقر فوق إنهاء.

    the resources you've created

إنشاء خادم وقاعدة البيانات

قبل إنشاء قاعدة بيانات، أنت في حاجة إلى خادم SQL منطقي. إن خادم SQL المنطقي هو بناء منطقي يحتوي على مجموعة من قواعد البيانات التي تتم إدارتها كمجموعة.

  1. في مربع الحوار Publish، قم بالتمرير لأسفل إلى قسم تبعيات الخدمة. إلى جانب قاعدة بيانات SQL Server، انقر فوق Configure.

    إشعار

    تأكد من تكوين قاعدة بيانات SQL من صفحة نشر بدلاً من صفحة الخدمات المتصلة.

    Configure SQL Database dependency

  2. حدد قاعدة بيانات Azure SQL وانقر فوق Next.

  3. في مربع الحوار Configure Azure SQL Database، انقر فوق +.

  4. إلى جانب خادم قاعدة البيانات، انقر فوق New.

    يستخدم اسم الخادم كجزء من عنوان URL الافتراضي لخادمك، <server_name>.database.windows.net. يجب أن يكون فريداً عبر جميع الخوادم في Azure SQL. تغيير اسم الخادم إلى قيمة تريدها.

  5. أضف اسم مستخدم وكلمة مرور المسؤول. للحصول على متطلبات تعقيد كلمة المرور، راجع سياسة كلمة المرور.

    تذكر اسم المستخدم وكلمة المرور هذه. ستكون في حاجة لاسم المستخدمة وكلمة المرور لإدارة الخادم لاحقاً.

    Create server

    هام

    على الرغم من أن كلمة المرور الخاصة بك في سلاسل الاتصال تكون مخفية (في Visual Studio وأيضا في App Service)، تضيف حقيقة أنه يتم الاحتفاظ بها في مكانٍ ما إلى سطح الهجوم على تطبيقك. يمكن لـ App Service استخدام هويات الخدمة المدارة للقضاء على هذا الخطر عن طريق إزالة الحاجة إلى الاحتفاظ بالأسرار في التعليمات البرمجية أو تكوين التطبيق على الإطلاق. لمزيد من المعلومات، راجع الخطوات التالية.

  6. وانقر فوق موافق.

  7. في مربع الحوار قاعدة بيانات Azure SQL، احتفظ بـ اسم قاعدة البياناتالافتراضي الذي تم إنشاؤه. حدد Create وانتظر حتى يتم إنشاء موارد قاعدة البيانات.

    Configure database

تكوين اتصال قاعدة البيانات

  1. عندما ينتهي المعالج من إنشاء موارد قاعدة البيانات، انقر فوق Next.

  2. في اسم سلسلة اتصال قاعدة البيانات، اكتب MyDbConnection. يجب أن يتطابق هذا الاسم مع سلسلة الاتصال المشار إليها في Models/MyDatabaseContext.cs.

  3. في اسم مستخدم اتصال قاعدة البياناتوكلمة مرور اتصال قاعدة البيانات، اكتب اسم المستخدم وكلمة المرور الخاصة بالمسؤول اللذين استخدمتهما عند إنشاء خادم.

  4. تأكد من تحديد Azure App Settings وانقر فوق Finish.

    إشعار

    إذا تم عرض ملفات البيانات السرية للمستخدم المحلي بدلاً من ذلك، يجب أن تكون قد قمت بتكوين قاعدة بيانات SQL من صفحة الخدمات المتصلة بدلاً من صفحة النشر.

    Configure database connection string

  5. انتظر حتى ينتهي معالج التكوين وانقر فوق Close.

انشر تطبيق ASP.NET الخاص بك

  1. في علامة التبويب Publish، مرّر لأعلى مرة أخرى وانقر فوق Publish. بمجرد نشر تطبيق ASP.NET إلى Azure. يتم إطلاق المتصفح الافتراضي الخاص بك بعنوان URL للتطبيق المنشور.

  2. إضافة بعض عناصر المهام.

    Published ASP.NET application in Azure app

    تهانينا! يتم تشغيل تطبيق ASP.NET المستند إلى البيانات مباشرةً في Azure App Service.

الوصول محلياً إلى قاعدة البيانات

يتيح لك Visual Studio استكشاف قاعدة البيانات الجديدة وإدارتها في Azure بسهولة في مستكشف عناصر SQL Server. فتحت قاعدة البياناتِ الجديدة جدار الحماية الخاص بها بالفعل لتطبيق App Service الذي قمت بإنشائه. ولكن للوصول إليه من جهاز الكمبيوتر المحلي (مثل Visual Studio)، يجب عليك فتح جدار حماية لعنوان IP العام لجهازك المحلي. إذا قام مزود خدمة الإنترنت بتغيير عنوان IP العام الخاص بك، فستحتاج إلى إعادة تكوين جدار الحماية للوصول إلى قاعدة بيانات Azure مرة أخرى.

إنشاء اتصال قاعدة البيانات

  1. في القائمة View، حدد مستكشف عناصر SQL Server.

  2. في الجزء العلوي من مستكشف عناصر SQL Server، انقر فوق الزر Add SQL Server.

تكوين اتصال قاعدة البيانات

  1. في مربع الحوار Connect، قم بتوسيع عقدة Azure. تكون جميع مثيلات قاعدة بيانات SQL في Azure مذكورة هنا.

  2. حدد قاعدة البيانات التي قمت بإنشائها مسبقاً. يتم ملء الاتصال الذي قمت بإنشائه مسبقاً في الجزء السفلي تلقائياً.

  3. اكتب كلمة مرور مسؤول قاعدة البيانات التي أنشأتها مسبقاً وانقر فوق Connect.

    Configure database connection from Visual Studio

اسمح بالاتصال بالعميل من جهاز الكمبيوتر الخاص بك

يتم فتح مربع الحوار Create a new firewall rule. بشكل افتراضي، لا يسمح الخادم إلا بالاتصالات بقواعد البيانات الخاصة به من خدمات Azure، مثل تطبيق Azure. للاتصال بقاعدة البيانات الخاصة بك من خارج Azure، أنشئ قاعدة جدار حماية على مستوى الخادم. تسمح قاعدة جدار الحماية بعنوان IP العام لجهاز الكمبيوتر المحلي الخاص بك.

تم ملء مربع الحوار بالفعل بعنوان IP العام لجهاز الكمبيوتر الخاص بك.

  1. تأكد من تحديد Add my client IP وانقر فوق OK.

    Create firewall rule

    بمجرد انتهاء Visual Studio من إنشاء إعداد جدار الحماية لمثيل قاعدة بيانات SQL، يظهر اتصالك في مستكشف عناصر SQL Server.

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

  2. قم بتوسيع >قواعد بيانات><الاتصال الخاصة بك و>>جداول قاعدة البيانات الخاصة بك. انقر بزر الماوس الأيمن على الجدول Todoes وحدد View Data.

    Explore SQL Database objects

قم بتحديث التطبيق بواسطة عمليات الترحيل الأولى من التعليمات البرمجية

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

لمزيد من المعلومات حول استخدام عمليات الترحيل الأولى من التعليمات البرمجية لـ Entity Framework، راجع دليل البدء في Entity Framework 6 Code First using MVC 5.

حدّث نموذج البيانات الخاص بك

افتح Models\Todo.cs في محرر التعليمات البرمجية. أضف الخاصية التالية إلى الفئة ToDo:

public bool Done { get; set; }

قم بتشغيل عمليات الترحيل الأولى للتعليمات البرمجية محلياً

قم بتشغيل بعض الأوامر لإجراء تحديثات على قاعدة البيانات المحلية الخاصة بك.

  1. من قائمة Tools، انقر فوق NuGet Package Manager>Package Manager Console.

  2. في نافذة Package Manager Console، قم بتمكين عمليات الترحيل الأولى من التعليمات البرمجية:

    Enable-Migrations
    
  3. أضف ترحيل:

    Add-Migration AddProperty
    
  4. قم بتحديث قاعدة البيانات المحلية:

    Update-Database
    
  5. اكتب Ctrl+F5 لتشغيل التطبيق. اختبر روابط التعديل والتفاصيل والإنشاء.

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

استخدم الخاصية الجديدة

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

  1. افتح Controllers\TodosController.cs.

  2. ابحث عن الطريقة Create() في السطر 52 وأضف Done إلى قائمة الخصائص في السمة Bind. عند الانتهاء، يبدو توقيع طريقة Create() مشابهاً للتعليمة البرمجية التالية:

    public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
    
  3. افتح Views\Todos\Create.cshtml.

  4. في التعليمة البرمجية Razor، يجب أن تشاهد عنصر <div class="form-group"> يستخدم model.Description، ثم عنصر <div class="form-group"> آخر يستخدم model.CreatedDate. بعد هذين العنصرين مباشرةً، أضف عنصر <div class="form-group"> آخر الذي يستخدم model.Done:

    <div class="form-group">
        @Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(model => model.Done)
                @Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
    
  5. افتح Views\Todos\Index.cshtml.

  6. ابحث عن عنصر <th></th> الفارغ. فوق هذا العنصر مباشرةً، أضف التعليمة البرمجية لـ Razor التالية:

    <th>
        @Html.DisplayNameFor(model => model.Done)
    </th>
    
  7. ابحث عن العنصر <td> الذي يحتوي على الطرق المساعدة Html.ActionLink(). فوق هذا <td>، أضف عنصر <td> آخر بالتعليمة البرمجية لـ Razor التالية:

    <td>
        @Html.DisplayFor(modelItem => item.Done)
    </td>
    

    هذا كل ما تحتاج إليه لمشاهدة التغييرات في طرق العرض Index وCreate.

  8. اكتب Ctrl+F5 لتشغيل التطبيق.

يمكنك الآن إضافة عنصر مهمة وحدد Done. ثم يجب أن يظهر في صفحتك الرئيسية كعنصر مكتمل. تذكر أن طريقة العرض Edit لا تُظهر الحقل Done، لأنك لم تغير طريقة العرض Edit.

قم بتمكين عمليات الترحيل الأولى من التعليمات البرمجية في Azure

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

  1. تماماً كما في السابق، انقر بزر الماوس الأيمن فوق مشروعك وحدد Publish.

  2. انقر فوق More actions>Edit لفتح إعدادات النشر.

    Open publish settings

  3. في القائمة المنسدلة MyDatabaseContext، حدد اتصال قاعدة البيانات لقاعدة بيانات Azure SQL.

  4. حدد Execute Code First Migrations (يتم تشغيله عند بدء التطبيق)، ثم انقر فوق Save.

    Enable Code First Migrations in Azure app

انشر التغييرات التي أجريتها

الآن بعد أن قمت بتمكين عمليات الترحيل الأولى من التعليمات البرمجية في تطبيق Azure الخاص بك، انشر تغييرات التعليمات البرمجية الخاصة بك.

  1. في صفحة النشر، انقر فوق Publish.

  2. قم بتجربة إضافة عناصر المهام مرة أخرى وحدد Done، ويجب أن تظهر في صفحتك الرئيسية كعنصر مكتمل.

    Azure app after Code First Migration

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

قم ببث سجلات التطبيق

يمكنك بث رسائل التتبع مباشرةً من تطبيق Azure إلى Visual Studio.

افتح Controllers\TodosController.cs.

يبدأ كل إجراء بطريقة Trace.WriteLine(). تتم إضافة هذه التعليمات البرمجية لتوضح لك كيفية إضافة رسائل التتبع إلى تطبيق Azure الخاص بك.

قم بتمكين بث السجلات

  1. في صفحة النشر، مرّر لأسفل وصولًا إلى قسم Hosting.

  2. في الزاوية اليسرى، انقر فوق ...>View Streaming Logs.

    Enable log streaming

    يتم الآن بث السجلات في نافذة Output.

    Log streaming in Output window

    ومع ذلك، لم تشاهد أياً من رسائل التتبع حتى الآن. هذا لأنه عند تحديد View Streaming Logs لأول مرة، يعيِّن تطبيق Azure مستوى التتبع إلى Error، والذي يسجل فقط أحداث الخطأ (باستخدام الطريقة Trace.TraceError()).

تغيير مستويات التتبع

  1. لتغيير مستويات التتبعِ لإخراج رسائل التتبع الأخرى، ارجع إلى صفحة النشر.

  2. في قسم Hosting، انقر فوق ...>Open in Azure portal.

  3. في صفحة إدارة المدخل الخاصة بتطبيقك، من القائمة اليمنى، حدد App Service logs.

  4. ضمن Application Logging (File System)، حدد Verbose في Level. انقر فوق حفظ.

    تلميح

    يمكنك تجربة مستويات تتبع مختلفة لمعرفة أنواع الرسائل التي يتم عرضها لكل مستوى. على سبيل المثال، يتضمن مستوى المعلومات جميع السجلات التي تم إنشاؤها بواسطة Trace.TraceInformation() وTrace.TraceWarning() وTrace.TraceError()، ولكن ليس السجلات التي تم إنشاؤها بواسطة Trace.WriteLine().

  5. في المستعرض، انتقل إلى تطبيقك مرة أخرى في http://< اسم> التطبيق الخاص بك.azurewebsites.net، ثم حاول النقر فوق تطبيق قائمة المهام في Azure. يتم الآن بث رسائل التتبع إلى نافذة Output في Visual Studio.

    Application: 2017-04-06T23:30:41  PID[8132] Verbose     GET /Todos/Index
    Application: 2017-04-06T23:30:43  PID[8132] Verbose     GET /Todos/Create
    Application: 2017-04-06T23:30:53  PID[8132] Verbose     POST /Todos/Create
    Application: 2017-04-06T23:30:54  PID[8132] Verbose     GET /Todos/Index
    

إيقاف بث السجلات

لإيقاف خدمة بث السجلات، انقر فوق الزر Stop monitoring في نافذة Output.

Stop log streaming

تنظيف الموارد

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

  1. من صفحةنظرة عامة الخاصة بتطبيق الويب، والموجودة في مدخل Azure، حدد الرابطمجموعة مواردي ضمن مجموعة الموارد.
  2. في صفحة مجموعة الموارد، تأكد من أن الموارد المذكورة في القائمة هي تلك التي تريد حذفها.
  3. حدد حذف، واكتب مجموعة مواردي في مربع النص، ثم حدد حذف.

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

في هذا البرنامج التعليمي، نتعلم طريقة القيام بما يأتي:

  • إنشاء قاعدة بيانات في Azure SQL Database
  • توصيل تطبيق ASP.NET بقاعدة بيانات SQL
  • توزيع التطبيق على Azure
  • تحديث نموذج البيانات وإعادة نشر التطبيق
  • دفق سجلات من Azure إلى المحطة الطرفية الخاصة بك

تقدم إلى البرنامج التعليمي التالي لمعرفة كيفية تحسين أمان اتصال قاعدة بيانات Azure SQL.

المزيد من الموارد:

هل تريد تحسين الإنفاق السحابي وتوفيره؟