الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

انشئ تطبيقاتك على السحب باستعمال فيجوال ستديو 2010 (Windows Azure)

بدأه عبد العظيم بخاري في 17 مارس 2011 · 3 رد · 5,775 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

logo-windows-azure.jpg

محتويات المقالة :

- التعرف على منصة Windows Azure.

- بناء وتجريب ونشر التطبيقات باستعمال Windows Azure.

- تخزين البيانات في الجداول والblobs والqueues الخاصة ب Windows Azure.

- استعمال SQL Azure في استضافة قواعد بياناتك على السحب.

- فهم طبيعة عمل AppFabric.

ازداد في الفترة الاخيرة الإهتمام بمبدأ الحوسبة السحبية Cloud Computing , وقد تبنى هذا النوع من التقنيات عدة شركات عالمية مثل جووجل وامازون اضافة لوجود عدة شركات تستعد للدخول لهذا السوق . اما دخول شركة مايكروسوفت اكبر شركة برمجية في العالم فقد كان عن طريق منصة عمل Windows Azure حيث اصبح بإمكانك انشاء تطبيقات جديدة يتم استضافتها على السحابة أو تحويل تطبيقاتك وبرامجك الجاهزة واي service قمت بانشاءها سابقا لكي يتم استضافتهم على السحابة, وكل ذلك باستعمال Visual Studio 2010.

لن نتطرق كثيراً لمعنى الحوسبة السحبية بتفاصيلها لكن من الضروري أن تعرف عزيزي القارئ أن مايكرسوفت قد حضرت سيرفرات خارقة الأداء في احدى المناطق المجهولة في الولايات المتحدة الأمريكية , حيث يمكنك تشغيل تطبيقاتك على تلك السيرفرات "والتي سنسميها بالسحابة".

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

احد الأسباب الاخرى المهمة هو امكانية زيادة وانقاص حجم موارد النظام من اجل تلبية الطلب على تطبيقك, بمعنى أنه في حال زيادة استعمال تطبيقك فإنك لن تحتاج للخوف على موارد النظام لإنها ستزداد بشكل ديناميكي لتلبية حاجة تطبيقك .

يبقى السبب الأهم لنمط الحوسبة السحبية هو تقليل التكلفة عليك بكل تأكيد.

سنتكلم في هذه المقالة عن ثلاثة امور رئيسية : منصة عمل Windows Azure و SQL Azure و AppFabric.

تقوم منصة عمل Windows Azure باستضافة تطبيقات الويب الخاصة بك وتعطيك امكانية تغيير عدد الinstances التي تعمل في ان واحد بشكل ديناميكي. وتقدم لك هذه المنصة ايضاً خدمات تخزين على شكل جداول وblobs و queues .

يقدم لك SQL Azure خدمة استضافة قواعد بيانات على السحب.

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

منصة عمل Windows Azure

كما هو الحال مع اغلب تقنيات مايكروسوفت فإن البدء في العمل على منصة Windows Azure سهل جداً ولا يحتاج منك إلا لانشاء تطبيق جديد في الفيجوال ستديو 2010 ومن ثم بناء هذا التطبيق وبعدها تقوم بتشغيله وتجريبه ونشره للسحب.

عند النقر على New Project في الفيجوال ستديو 2010 ستلاحظ وجود خيار جديد باسم Cloud والذي يحتوي على قالب واحد اسمه Windows Azure Project.

اذا لم تجد قالب المشروع عليك تحميل الأدوات من هذا الرابط :

http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010

final1.png

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

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

فWeb Roles تقبل مدخلات المستخدم عن طريق اتصال inbound (مثل http على البورت 80). بينما لا تقبل Worker Roles ذلك. ولهذا الأمر يجب علينا استخدام Web Role من اجل قبول البيانات خاصة عندما نريد انشاء موقع أو خدمة ويب.

اذاً فمهمة Web Role هي تسليم البيانات الواردة من المستخدم إلى queue على سبيل المثال أو إلى Worker Role والتي تحتوي على اي عملية معالجة نحتاج لتنفيذها على تلك البيانات.

وجود هذا الفصل بين الطبقتين يعطينا امكانية تطوير وتحسين وتكبير برنامجنا كالمطاط.

نعود الان لمشروعنا ونختار ASP.NET Web Role و Worker Role عن طريق اختيارهم من القائمة على اليسار والضغط على السهم الأيمن.

final2.png

عند الضغط على رمز التعديل edit على الrole المختار فإنه يسمح لنا بتغيير اسمه قبل الضغط على OK لاتمام عملية انشاء المشروع.

كما تلاحظ في الصورة التالية فإن التطبيق الذي تم اضافته يحتوي على مشروع لكل role قمنا باختياره في الخطوة السابقة (CloudFront و CloudWorker). هناك ايضاً مشروع اضافة اسمه MyAzureApplication والذي يقوم بتعريف قائمة الroles اضافة لمعلومات اخرى تتعلق بتطبيقك.

final3.png

مشروع CloudFront هو ببساطة عبارة عن تطبيق ويب ASP.NET, فإذا قمت بالضغط بالزر الأيمن على اسم هذا المشروع واخترت Set as Startup Project فإن تطبيقك سيتحول لمشروع ASP.NET عادي.

اما مشروع CloudWorker قهو عبارة عن class library بسيطة تحتوي على كلاس واحد اسمه WorkerRule والذي يحتوي على نقطة الدخول للworker.

حتى نشغل تطبيقنا يجب أن نتأكد أن مشروع MyAzureApplication هو المشروع الإبتدائي في تطبيقنا (يكون لون اسمه غامق فإذا لم يكن كذلك قم بالضغط بالزر الأيمن على اسم هذا المشروع واختار Set as Startup Project).

بعد ذلك نقوم بالضغط على مفتاح F5 من اجل بدء الdebugging.

في حال كانت هذه المرة هي الأولى في تشغيل تطبيق Azure فسوف تلاحظ ظهور صندوق حوار يقوم بتهيئة الDevelopment Storage وهذه العملية تحتاج لدقيقة أو دقيقتين حتى تنتهي, وعندما تنتهي ستلاحظ ظهور ايقونتين على الtaskbar الخاص بالويندوز.

تسمح لك الأيقونة الأولى بالتحكم في خدمات الDevelopment Storage والتي هي عبارة عن مجموعة تتكون من ثلاث خدمات محلية تمثل طرق التخزين المتوفرة في بيئة استضافة Azure وهم الجداول tables و blobs و queues.

اما الأيقونة الثانية فتسمح لك بمراقبة الDevelopment Fabric وهو نسخة محلية طبق الأصل لبيئة استضافة Azure الموجودة على السحب حيث تسمح لك بتشغيل تطبيقك وعمل debug له.

ملاحظة هامة: تم تغيير بعض التسميات في الإصدار الأخير للفيجوال ستديو 2010 , فاصبح اسم الDevelopment Fabric هو Windows Azure Compute Emulator واصبح اسم الDevelopment Storage هو Storage Emulator . ويمكن الوصول للخياران الذين دمجا في ايقونة واحدة عن طريق الضغط بالزر الايمن على تلك الأيقونة ومن ثم اختيار احد منهما لتشغيله. هذا الشرح تم عمله على التسميات القديمة مع العلم أنه لا فرق في الوظائف بينهم.

بعد أن يتم تهيئة الDevelopment Storage فإنك ستلاحظ أن صفحة Default.aspx الموجودة في مشروع CloudFront قد تم عرضها في المتصفح, وعلى الرغم من أنك ترى صفحة واحدة فقط قد تم عرضها في المتصفح إلا أنه في الواقع يوجد عدة instances من الwebrole تعمل كلها في ما يسمى Development Fabric.

التعرف على Development Fabric

لو نظرت لمشروع MyAzureApplication فإنك سترى ملفين يقومان بتعريف الattributes الخاصة بتطبيقك. يقوم الملف الأول ServiceDefinition.csdef بتعريف التركيب والattributes للroles التي قمت بانشاءها في تطبيقك, فعلى سبيل المثال لو احتاج احد الroles الذين انشأتهم للكتابة على نظام الملفات في القرص فيمكنك وضع شرط على الproperty المسماة LocalStorage ومن ثم تحدد صلاحيات وصول الrole إلى كمية صغير من مساحة القرص من اجل كتابة وقراءة الملفات المؤقتة.

يقوم هذا الملف ايضاً بتعريف اي اعدادات تحتاجها الrole في وقت التشغيل, فبمجرد تعريف الإعدادات فإنك ستحصل على طريقة عظيمة لجعل الroles الخاصة بك متكيفة في وقت التشغيل دون الحاجة لاعادة بناءهم ونشرهم.

يعرف الملف الثاني ServiceConfiguration.cscfg اعدادات وقت التشغيل للroles وهذا يتضمن عدد الinstances التي يجب أن تعمل لكل role اضافة لاي اعدادات قمت بتعريفها في ملف ServiceDefinition.

اذا قمت بتعديل لأي من القيم الموجودة في ملف الإعدادات هذا (على سبيل المثال قمت بتغيير قيمة الattribute المسمى count للعنصر Instances إلى 4 لكل الroles) ثم قمت باعادة تشغيل التطبيق فسوف يتم العمل بالإعدادات الجديدة في الDevelopment Fabric المحلي.

اذا قمنا بالضغط بالزر الأيمن على ايقونة Development Fabric الموجودة في شريط مهام الويندوز ثم قمنا باختيار Show Development Fabric UI فسوف ترى تمثيل ترتيبي للتطبيقات التي تعمل ضمن Development Fabric كما هو مبين في الصورة التالية:

final4.png

لاحظ MyAzureApplication الذي يتضمن الroles الذين قمنا بانشائهم CloudFront و CloudWorker.

لاحظ أنه يمكنك رؤية عدد الinstances التي تعمل في كل من الroles وذلك على شكل نقاط خضراء والتي قمنا بتحديد عددها إلى 4.

لو نظرت للنافذة اليمنى فسترى سجلاً لمخرجات الinstances العاملة, فإذا قمنا بالضغط على شريط العنوان لأي من الinstances فسوف يتم عرضها بشكل كامل.

تشير الأيقونة الموجودة في اعلى اليمين لكل instance إلى logging level ويمكنك تعديل هذا الأمر عن طريق الضغط بالزر الأيمن على العنوان واختيار القيمة المطلوبة من عناصر قائمة Logging Level.

مخزنات الجداول والBlobs والQueues

الذي قمنا به فعلياً لحد الان هو انشاء web role (لا تحتوي على اي شيئ) وworker role لا تعمل أي شيئ.

يمكننا اضافة محتوى إلى الweb role بكل بساطة عن طريق اضافة controls إلى صفحة Default.aspx بنفس طريقة انشاء تطبيقات الويب الإعتيادية.

سنبدأ باضافة textbox باسم JobDetailsText وزر باسم SubmitJob, ثم نضغط بشكل مزدوج على الزر من اجل الذهاب لملف الcode behind .

يمكنك تمرير البيانات بين كل من الweb role والworker role عن طريق كتابتها إلى مخزنات tables (بيانات مهيكلة) أو blobs (كائنات binary منفردة) أو queues (رسائل).

يمكنك العمل مع هذه المخزنات ضمن منصة عمل Azure عن طريق انترفيس REST الذي لها.

ورغم أن هذه الطريقة ليست جيدة بناءً على خبرتنا في .NET إلا أن فريق عمل Azure قام بوضع تغليف لهذا الأمر مما جعل استعمال التطبيقات لمخزنات Windows Azure امراً في غاية السهولة.

لو نظرت للreferences الموجودة في مشاريع Web Role و Worker Role فستجد رفرنس لملف Microsoft.WindowsAzure.Storage.dll والذي يحتوي على كلاسات التغليف التي تحتوي على methods يمكنك استعمالها ضمن مشروعك.

قم باضافة الكود التالي في ملف الcode behind التابع لصفحة Default.aspx والذي ينشئ رفرنس لqueue ويضيف عليها رسالة بسيطة.

ملاحظة: هناك بعض جمل using يجب أن تضيفها لمشروعك حسب الحاجة.

C#
 //انظر لملف Default.aspx.cs
 protected void SubmitJob_Click(object sender, EventArgs e){
 // read account configuration settings
 var storageAccount = CloudStorageAccount.
 FromConfigurationSetting("DataConnectionString");
 // create queue to communicate with worker role
 var queueStorage = storageAccount.CreateCloudQueueClient();
 var queue = queueStorage.GetQueueReference("sample");
 queue.CreateIfNotExist();
 queue.AddMessage(new CloudQueueMessage(this.JobDetailsText.Text));
 }

VB
 'انظر لملف Default.aspx.vb
 Protected Sub SubmitJob_Click(ByVal sender As Object,
 ByVal e As EventArgs) Handles SubmitJob.Click
 ’ read account configuration settings
 Dim storageAccount = CloudStorageAccount.
 FromConfigurationSetting("DataConnectionString")
 ’ create queue to communicate with worker role
 Dim queueStorage = storageAccount.CreateCloudQueueClient()
 Dim queue = queueStorage.GetQueueReference("sample")
 queue.CreateIfNotExist()
 queue.AddMessage(New CloudQueueMessage(Me.JobDetailsText.Text))
 End Sub

يقوم هذا الكود بأخذ القيمة الموجودة في الtextbox المسمى JobDetails ويضيفه على الqueue وينفذ الأعمال المناسبة.

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

في حال لم تقم بحذف تلك الرسالة من الqueue فسيتم دفعها للخلف بعد انتهاء الtimeout والذي يمكن تعديله.

C#
 //انظر لملف WorkerRole.cs
 private CloudQueue queue;
 public override bool OnStart(){
 DiagnosticMonitor.Start("DiagnosticsConnectionString");
 Microsoft.WindowsAzure.CloudStorageAccount.
 SetConfigurationSettingPublisher((configName, configSetter) =>{
 configSetter(Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.
 GetConfigurationSettingValue(configName));
 });
 Trace.TraceInformation("Worker entry point called");
 // read account configuration settings
 var storageAccount = CloudStorageAccount.
 FromConfigurationSetting("DataConnectionString");
 // create queue to communicate with web role
 var queueStorage = storageAccount.CreateCloudQueueClient();
 var queue = queueStorage.GetQueueReference("sample");
 queue.CreateIfNotExist();
 return base.OnStart();
 }
 public override void Run(){
 Trace.TraceInformation("CloudWorker entry point called");
 while (true){
 try{
 // Pop the next message off the queue
 CloudQueueMessage msg = queue.GetMessage();
 if (msg != null){
 // Parse the message contents as a job detail
 string jd = msg.AsString;
 Trace.TraceInformation("Processed {0}", jd);
 // Delete the message from the queue
 queue.DeleteMessage(msg);
 }
 else{
 Thread.Sleep(10000);
 }
 Trace.TraceInformation("Working");
 }
 catch (Exception ex){
 Trace.TraceError(ex.Message);
 }
 }
 }

VB
 'انظر لملف WorkerRole.vb
 Private queue As CloudQueue
 Public Overrides Function OnStart() As Boolean
 DiagnosticMonitor.Start("DiagnosticsConnectionString")
 CloudStorageAccount.SetConfigurationSettingPublisher(
 Function(configName, configSetter)
 configSetter(RoleEnvironment.
 GetConfigurationSettingValue(configName)))
 Trace.TraceInformation("Worker entry point called")
 ’ read account configuration settings
 Dim storageAccount = CloudStorageAccount.
 FromConfigurationSetting("DataConnectionString")
 ’ create queue to communicate with web role
 Dim queueStorage = storageAccount.CreateCloudQueueClient()
 queue = queueStorage.GetQueueReference("sample")
 queue.CreateIfNotExist()
 Return MyBase.OnStart()
 End Function
 Public Overrides Sub Run()
 Trace.TraceInformation("CloudWorker entry point called.")
 Do While (True)
 Try
 ’ Pop the next message off the queue
 Dim msg As CloudQueueMessage = queue.GetMessage()
 If (msg IsNot Nothing) Then
 ’ Parse the message contents as a job detail
 Dim jd As String = msg.AsString
 Trace.TraceInformation("Processed {0}", jd)
 ’ Delete the message from the queue
 queue.DeleteMessage(msg)
 Else
 Thread.Sleep(10000)
 End If
 Trace.TraceInformation("Working")
 Catch ex As StorageClientException
 Trace.TraceError(ex.Message)
 End Try
 Loop
 End Function

لاحظ أن الكود السابق يقوم بعمل override لاثنتين من الmethods وهما OnStart و Run.

يتم استعمال الاولى لتحميل قيم الإعدادات ولوضع المتغيرات المحلية من اجل العمل مع مخزنات Windows Azure.

اما ميثود Run فتحتوي على حلقة while غير منتهية تقوم بالاستمرار في معالجة الرسائل الموجودة في الqueue.

قبل أن نشغل الroles التي قمنا باعدادهم فإننا نحتاج لتحديد موقع تخزين الqueue التي سوف نستعملها .

سيتحول هذا الأمر في النهاية لعضوية Azure Storage عند نشر التطبيق على السحابة لكن الان نحتاج لوضع تفاصيل الDevelopment Storage المحلي وذلك في ملف ServiceConfiguration:

<?xml version="1.0"?>
 <ServiceConfiguration serviceName="MyAzureApplication"
 xmlsn="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
 <Role name="CloudFront">
 <Instances count="2" />
 <ConfigurationSettings>
 <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" />
 <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />
 <!-- <Setting name="DeploymentConnectionString" value="DefaultEndpointsProtocol=
 https;AccountName=[YOUR_ACCOUNT_NAME];AccountKey=[YOUR_ACCOUNT_KEY]" /> -->
 </ConfigurationSettings>
 </Role>
 <Role name="CloudWorker">
 <Instances count="2" />
 <ConfigurationSettings>
 <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" />
 <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />
 </ConfigurationSettings>
 </Role>
 </ServiceConfiguration>

لاحظ أننا قمنا بتعريف اعدادات DataConnectionString و DiagnosticsConnectionString في كل من CloudFront role و CloudWorker role . وفي اثناء عملنا على المنصة المحلية سيتم وضع القيم من اجل استعمال عضوية Development Storage. لكن عندما تصل لمرحلة نشر تطبيقك إلى Windows Azure فإنك تحتاج لاستبدال هذه القيم باسم حسابك والمفتاح في المكان الموضح في DeploymentConnectionString.

يجب علينا تحديث ملف ServiceDefinition من اجل التصريح بالإعدادات المعرفة من قبل كل role وذلك لكي تتمكن الroles من الوصول للقيم السابقة.

<?xml version="1.0" encoding="utf-8"?>
 <ServiceDefinition name="MyAzureApplication"
 xmlsn="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
 <WebRole name="CloudFront" enableNativeCodeExecution="false">
 <InputEndpoints>
 <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
 <InputEndpoint name="HttpIn" protocol="http" port="80" />
 </InputEndpoints>
 <ConfigurationSettings>
 <Setting name="DataConnectionString" />
 <Setting name="DiagnosticsConnectionString" />
 </ConfigurationSettings>
 </WebRole>
 <WorkerRole name="CloudWorker" enableNativeCodeExecution="false">
 <ConfigurationSettings>
 <Setting name="DataConnectionString" />
 <Setting name="DiagnosticsConnectionString" />
 </ConfigurationSettings>
 </WorkerRole>
 </ServiceDefinition>

نقوم الان لتجربة تشغيل تطبيقنا بعد كل هذه التغيرات ولاحظ أنه كلما قمنا بالضغط على زر "ادخال" فإنك سوف ترى رسالة "Processed" تظهر في احد الinstances التابعة للworker role وذلك في واجهة Development Fabric.

نشر التطبيق

بعد أن ننتهي من بناء تطبيقنا باستعمال Development Fabric و Development Storage فإن هدفنا الان هو نشر هذا التطبيق للسحب أي لمنصة Windows Azure التابعة لمايكروسوفت.

سنحتاج اولاً لعمل حساب في منصة Windows Azure لكل من خدمة الإستضافة hosting وخدمة التخزين storage.ونبدأ ذلك بالذهاب لموقع http://www.azure.com ونسجل الدخول باستعمال Live ID إلى حساب Windows Azure الخاص بنا وبعد ذلك نضغط على رابط "Go to the Windows Azure Developer Portal" والذي سيفتح لنا بوابة Windows Azure كالاتي:

1.png

نضغط على Project Name وبعدها على زر New Service ونختار نوع الخدمة التي نريد اضافتها.

في حال قمت باضافة Storage Account Service فإنك سترى شاشة اعدادات كالاتي:

storage.jpg

ستحتاج لنسخ معلومات العضوية والendpoints إلى داخل ملف ServiceConfiguration. وبعد ذلك يمكنك تشغيل تطبيقك.

سيبقى تطبيقك هذه المرة يعمل على Development Fabric المحلي لكنه سيستعمل Azure Storage بدلاً من Development Storage وهذا امر جيد لتجريب تطبيقك والتأكد منه قبل نشره بشكل كامل للسحب.

عندما تقوم بوضع عضوية hosting service فسوف ترى شاشة كالاتي:

3-1.png

لاحظ وجود بيئتين عمل يمكنك النشر لهما باسم Production و Staging. فكما هو الحال مع جميع تقنيات النشر الجيدة فAzure تدعم النشر إلى Staging وبعد ان تشعر بأن تطبيقك يعمل بارتياح يمكنك الإنتقال لProduction.

نعود إلى Visual Studio 2010 ونضغط بالزر الأيمن على مشروع MyAzureApplication ونختار Publish حيث سيتم بناء تطبيقنا وانشاء حزمة نشر development package اضافة لملف اعدادات.

يتم عرض هذه الملفات في صندوق Windows Explorer عند الإنتهاء.

نعود الان إلى Windows Azure ونضغط على زر Deploy الموجود تحت بيئة Staging (لاحظ الصورة السابقة) سيطلب منك بعدها تحديد حزمة النشر development package اضافة لملف الإعدادات.

بعد الإنتهاء من عملية الupload ستم ارجاعك إلى صفحة hosting service حيث ستلاحظ تحديث المعلومات عند بيئة Staging كما في الصورة التالية:

4.jpg

يجب أن تعلم أنه لا يمكنك تشغيل مشاريع Azure مباشرة بعد الإنتهاء من نشرها كما هو الحال مع تطبيقات الويب المبنية ب ASP.NET. فيجب عليك الضغط على زر Run من اجل بدء تشغيلها حيث سيتم تحديث الشاشة لكل الroles لتعلمك بتهئيتها وفي النهاية سيتم تحديثهم من اجل البدء حيث تكون كل الroles جاهزة لاستقبال المدخلات والبدء في العمل.

المرحلة الأخيرة في هذه العملية هي تطوير ونقل التطبيقات التي تعمل على بيئة عمل Staging إلى Production حيث أن هذا الإنتقال يتم بتوجيه معالج ذكي وسريع بحيث يضمن عدم حدوث خطأ 404 (أو صفحة غير موجودة) للمستخدمين اثناء طلبهم لصفحات مشروعك في تلك اللحظة.

حتى ننتقل من Staging إلى Production نقوم باختيار الزر الذي يحتوي على سهمين والموجود بين البيئتين في نافذة الAzure.

تعديل اعدادات تطبيقك بعد النشر

قد يتغير الطلب على تطبيقك مع مرور الوقت فتحتاج لتعديل بعض اعدادات مشروعك الموضوع في ملف ServiceConfiguration.

يمكنك عمل ذلك بشكل ديناميكي عن طريق الضغط على زر Config (الموضح في الصورة السابقة). بعدها ستظهر لك شاشة للاعدادات تمكنك من تعديلها بنمط XML أو عن طريق عمل upload لملف اعدادات بديل.

tuningnew.png

عليك استعمال هذه الطريقة فقط مع Staging حتى لا تقوم بالتأثير على الProduction الذي يعمل حالياً. حيث أن الطريقة الأفضل للتعامل مع تطبيقات Azure هي بانشائها وتعديلها اولاً على بيئة Staging وثم السماح بتهيئتها وبدءها وبعد ذلك يتم التحويل للنشر إلى Production.

تسمح لنا هذه الشاشة ايضاً بتصدير السجلات المولدة من قبل الroles الموجودة ضمن تطبيقنا إلى Storage account وبعد القيام بعملية النسخ فإننا نقوم بجلب تلك السجلات من تلك الstorage account. ويتم ذلك عن طريق استعمال مثال CloudDrive الموجود في Azure SDK والذي يمكن استعماله لربط عضوية storage account مع القرص المحلي والذي يمكنك استعلامه في Powershell.

التعرف على SQL Azure

تقدم لنا منصة عمل Windows Azure ايضاً خدمة استضافة البيانات على شكل SQL Azure وذلك اضافةً إلى مخزنات Azure tables و الblobs والqueues.

يمكنك أن تعتبر كل قاعدة بيانات من SQL Azure هي عبارة عن instance مستضاف من قاعدة بيانات SQL Server 2008 , ويعمل ذلك الinstance بوضعية high-availability.

هذا يعني أنه في اي لحظة من الزمن سيكون هناك ثلاثة instances متزامنين من قاعدة بياناتك وفي حال حصول فشل لأي منهم سيتم مباشرة جلب instance جديد مع مزامنة البيانات له من اجل ضمان توفر مصدر بياناتك وعدم انقطاعه عن المستخدمين.

حتى نستطيع انشاء قاعدة بيانات SQL Azure نقوم بتسجيل الدخول لبوابة Windows Azure ونذهب لخيار SQL Azure حيث تستطيع هناك ادارة عضوياتك في SQL Azure فيمكنك انشاء وحذف قواعد البيانات بكل سهولة.

بعد انشاء قاعدة بيانات جديدة يمكنك الحصول على الConnection String الخاص بها (والذي نحتاجه من اجل الإتصال بها) عن طريق اختيار قاعدة البيانات والضغط على زر Connection String كما في الصورة التالية:

azure.png

يوجد (حتى هذه اللحظة) عدة طرق للتعامل مع قاعدة بيانات SQL Azure. فمع أن SQL Azure تعتمد على SQL Server 2008 إلا أن هناك عدد من المحددات تعيقك من استعمال اغلب الأدوات المرئية مثل SQL Server Management Studio (Object Browser) وفيجوال ستديو 2010.

يمكنك على اي حال الإتصال بقاعدة بيانات SQL Azure عن طريق SQL Management Studio ويمكنك بعدها تنفيذ جمل T-SQL Query Window على تلك القاعدة.

هناك ايضاً عدة ادوات من الthird-party أو اضافات الفيجوال ستديو 2010 تساعدك في التعامل مع SQL Azure مثل SQL Azure Migration Wizard و SQL Azure Manager و SQL Azure Explorer.

أما من داخل تطبيقك فيمكنك الإتصال ب SQL Azure باستعمال الConnection String الذي قمنا بجلبه من بوابة Windows Azure .

يمكنك بعدها استعمال اغلب اطارات العمل المبنية على ADO.NET مثل LINQ to SQL و Entity Framework أو حتى استعمال ADO.NET نفسها لانشاء وتعديل وقراءة وحذف البيانات في قاعدة بيانات SQL Azure التي قمت بانشاءها.

التعرف على AppFabric

المكون الثالث الرئيسي في منصة عمل Windows Azure هو AppFabric وهو المسؤول عن تكوين Access Control Serving و Service Bus , أي قضايا التواصل والإتصال بين التطبيقات اضافة لقضايا الأمان Security.

Service Bus

تمتلك الغالبية العظمى من الشركات اتصالاً مع الإنترنت, لكن هذا الإتصال قد يكون محدداً في كثير من المرات بمعنى أن هناك تحديد لتدفق الترافيك في الشركات .

يحصل ذلك عن طريق استخدام اجهزة firewall تعمل ايضاً على عمل translation لعناوين الشبكة بمعنى أنه من الصعب اعطاء اجهزة الحاسوب القابعة خلف جدران الحماية تلك عناوين من خارج الشبكة. وبما أن عدد عناوين IPv4 يتضائل فيتم تخصيص عدة connections على عنوان IP بشكل ديناميكي, الأمر الذي يجعل استضافة تطبيق داخل شبكة الشركة والوصول إليه من الخارج امراً مستحيلها.

يسمح الService Bus بتسجيل خدمة في URL معين قابل للعنونة عن طريق service registry فالطلبات التي تتم لهذا الURL يتم تحويلها للخدمة عن طريق outbound connection يتم ايجاده من قبل الخدمة نفسها.

يمكن أن يكون العمل مع Service Bus سهلاً بنفس درجة سهولة تغير WCF bindings الى bindings تقوية جديدة.

عندما يتم تشغيل الخدمة يتم تسجيلها في service registry وتبدأ بعمل توجيه للإتصال المطلوب من قبل الإتصالات الاخرى.

Access Control Service (ACS)

في حين ارادت شركة أو منظمة ما مكاملة عدة تطبيقات لها تعمل على السحب فمن الضروري ايجاد طريقة للتحقق من الوصول لتلك التطبيقات عن طريق توفير عدة مصادر للauthorization.

هذا هو في الوقاع مهمة Access Control Service والذي ما زال في بداياته ويتوقع أن يتطور كثيراً في المستقبل.

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

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

بعدها يقوم التطبيق الذي دخلته بأخذ معلومات الواردة من ACS ويثق فيها بناء على العلاقة المبنية سابقاً بين ذلك التطبيق و Access Control Service.

خلاصة المقالة:

تكلمنا في هذه المقالة عن منصة عمل Windows Azure وعن كيفية انشاء التطبيقات والخدمات ووضعها على السحب باستعمال Visual Studio 2010.

تعتبر كل من Development Storage المحلية والFabric ادوات عظيمة لفحص المشاريع محلياً قبل نقلها للسحب دون مواجهة اي مشاكل.

اذا لم ترد نقل مشروعك للعمل على السحب فيمكنك على الأقل الإستفادة من SQL Azure و AppFabric من اجل استضافة بياناتك أو حل مشاكل ربط العناوين أو توحيد نظام الامن لتطبيقاتك.

لمزيد من المعلومات:

http://www.microsoft.com/windowsazure/windowsazure/

ملفات مشروع المقالة:

http://www.4shared.com/file/sR1FObes/MyAzureApplication-El-bukhari.html

عبد العظيم بخاري

http://www.el-bukhari.com/2011/03/2010-windows-azure.html

4
#2

شرح مبسط ورائع .... تسلم ايدك .... وجزاك الله كل خير

وفعلا ال Cloud Computing تقنية من التقنيات المثيرة فى هذه الفترة

وستكون محل الحديث لفترة طويلة باذن الله رب العالمين

كما انها نقطة بحث رائعة ايضا

والله الموفق

#3

اخي العزيز

بصراحه انت مبدع بكل ما للكلمه من معنى

لان هذه التقنيه هي التي سيكون المستقبل لها من وجهة نظري

لذلك اخي العزيز

ارجو موافاتنا بكل ما يتيسر لديك من معلومات حول هذه التقنيه

و جعل الله عملك في ميزان حسناتك

و مره اخرى

مشكوووووووووووووووور

جدااااااااااااااااااااااااااااااا

المهندس

#4

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

فلقد استفدت من هذا الموضوع ولكن صعب على قليلا فلو كان مجزءا Step by Step

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…