استخدم مكتبة إطار عمل WindowsAzure.ServiceBus .NET القديمة مع AMQP 1.0

إشعار

هذه المقالة مخصصة للمستخدمين الحاليين لحزمة WindowsAzure.ServiceBus الذين يتطلعون إلى التبديل إلى استخدام AMQP داخل نفس الحزمة. بينما ستستمر هذه الحزمة في تلقي إصلاحات الأخطاء الهامة حتى 30 سبتمبر 2026، فإننا نشجع بشدة الترقية إلى حزمة Azure.Messaging.ServiceBus الجديدة بدلا من ذلك المتوفرة اعتبارا من نوفمبر 2020 والتي تدعم AMQP بشكل افتراضي.

في 30 سبتمبر 2026، سنتقاعد مكتبات SDK ناقل خدمة Azure WindowsAzure.ServiceBus وMicrosoft.Azure.ServiceBus و com.microsoft.azure.servicebus، والتي لا تتوافق مع إرشادات Azure SDK. سننهي أيضا دعم بروتوكول SBMP، لذلك لن تتمكن من استخدام هذا البروتوكول بعد 30 سبتمبر 2026. قم بالترحيل إلى أحدث مكتبات Azure SDK، والتي توفر تحديثات أمان هامة وقدرات محسنة، قبل ذلك التاريخ.

على الرغم من أنه لا يزال من الممكن استخدام المكتبات القديمة بعد 30 سبتمبر 2026، إلا أنها لن تتلقى بعد ذلك الدعم والتحديثات الرسمية من Microsoft. لمزيد من المعلومات، راجع إعلان إيقاف الدعم.

بشكل افتراضي، تتصل حزمة WindowsAzure.ServiceBus بخدمة Service Bus باستخدام بروتوكول مخصص قائم على SOAP يسمى Service Bus Messaging Protocol (SBMP). في الإصدار 2.1، تمت إضافة دعم AMQP 1.0 الذي نوصي باستخدامه بدلاً من البروتوكول الافتراضي.

يتطلب استخدام AMQP 1.0 بدلاً من البروتوكول الافتراضي تكويناً صريحاً على سلسلة اتصال Service Bus، أو في منشئي العميل عبر الخيار TransportType. بخلاف هذا التغيير، يظل كود التطبيق دون تغيير عند استخدام AMQP 1.0.

هناك بعض ميزات واجهة برمجة التطبيقات التي لا يتم دعمها عند استخدام AMQP. تم سرد هذه الميزات غير المدعومة في قسم Behavioral differences. بعض إعدادات التكوين المتقدمة لها أيضاً معنى مختلف عند استخدام AMQP.

تكوين سلسلة الاتصال لاستخدام AMQP 1.0

قم بإلحاق سلسلة الاتصال بـ ;TransportType=Amqp لإرشاد العميل لإجراء اتصاله بناقل خدمة Microsoft Azure باستخدام AMQP 1.0. مثال،

Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=Amqp

مكان الحصول على namespace وSAS key من مدخل Microsoft Azure عند إنشاء مساحة اسم ناقل الخدمة. لمزيد من المعلومات، راجع إنشاء مساحة اسم ناقل الخدمة باستخدام مدخل Microsoft Azure.

AMQP عبر WebSockets

لاستخدام AMQP عبر WebSockets، اضبط TransportType في سلسلة الاتصال على AmqpWebSockets. على سبيل المثال: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets.

تسلسل الرسائل

عند استخدام البروتوكول الافتراضي، يتمثل سلوك التسلسل الافتراضي لمكتبة عميل NET. في استخدام النوع DataContractSerializer لإجراء تسلسل لمثيل BrokeredMessage للنقل بين مكتبة العميل وخدمة ناقل خدمة Microsoft Azure. عند استخدام وضع النقل AMQP، تستخدم مكتبة العميل نظام نوع AMQP لتسلسل الرسالة الوسيطة في رسالة AMQP. يمكّن هذا التسلسل من استلام الرسالة وتفسيرها بواسطة تطبيق استلام يحتمل أن يكون قيد التشغيل على نظام أساسي مختلف، على سبيل المثال، تطبيق Java يستخدم JMS API للوصول إلى ناقل خدمة Microsoft Azure.

عند إنشاء مثيل BrokeredMessage، يمكنك توفير عنصر .NET كمعامل للمنشئ ليكون بمثابة نص الرسالة. بالنسبة للكائنات التي يمكن تعيينها لأنواع AMQP البدائية، يتم تسلسل الجسم إلى أنواع بيانات AMQP. إذا كان لا يمكن تعيين العنصر مباشرة في نوع AMQP البدائي؛ أي نوع مخصص يحدده التطبيق، ثم يتم إجراء تسلسل للعنصر باستخدام DataContractSerializer، ويتم إرسال وحدات البايت المتسلسلة في رسالة بيانات AMQP.

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

نوع عنصر الجسم .NET نوع AMQP المعين نوع قسم جسم AMQP
منطقي boolean قيمة AMQP
byte ubyte قيمة AMQP
ushort ushort قيمة AMQP
uint uint قيمة AMQP
ulong ulong قيمة AMQP
sbyte byte قيمة AMQP
قصير قصير قيمة AMQP
العدد الصحيح العدد الصحيح قيمة AMQP
طويل طويل قيمة AMQP
عائم عائم قيمة AMQP
مزدوج مزدوج قيمة AMQP
عشري decimal128 قيمة AMQP
حرف حرف قيمة AMQP
DateTime الطابع الزمني قيمة AMQP
Guid uuid قيمة AMQP
byte[] binary قيمة AMQP
سلسلة سلسلة قيمة AMQP
System.Collections.IList قائمة قيمة AMQP: يمكن أن تكون العناصر الموجودة في المجموعة هي العناصر المحددة في هذا الجدول فقط.
System.Array صفيف قيمة AMQP: يمكن أن تكون العناصر الموجودة في المجموعة هي العناصر المحددة في هذا الجدول فقط.
النظام، المجموعات، القاموس map قيمة AMQP: يمكن أن تكون العناصر الموجودة في المجموعة هي العناصر المحددة في هذا الجدول فقط. ملاحظة: يتم دعم مفاتيح السلسلة فقط.
Uri السلسلة الموصوفة (انظر الجدول التالي) قيمة AMQP
DateTimeOffset وصف طويل (انظر الجدول التالي) قيمة AMQP
TimeSpan وصف طويل (انظر ما يلي) قيمة AMQP
الدفق binary بيانات AMQP (قد تكون متعددة). تحتوي أقسام البيانات على وحدات البايت الأولية المقروءة من عنصر الدفق.
عنصر آخر binary بيانات AMQP (قد تكون متعددة). يحتوي على الملف الثنائي المتسلسل للعنصر الذي يستخدم DataContractSerializer أو جهاز التسلسل الذي يوفره التطبيق.
.NET Type النوع الموصوف لـ AMQP المعين الملاحظات
Uri <type name=”uri” class=restricted source=”string”> <descriptor name=”com.microsoft:uri” /></type> Uri.AbsoluteUri
DateTimeOffset <type name=”datetime-offset” class=restricted source=”long”> <descriptor name=”com.microsoft:datetime-offset” /></type> DateTimeOffset.UtcTicks
TimeSpan <type name=”timespan” class=restricted source=”long”> <descriptor name=”com.microsoft:timespan” /></type> TimeSpan.Ticks

الاختلافات السلوكية

توجد بعض الاختلافات الطفيفة في سلوك WindowsAzure.ServiceBus API عند استخدام AMQP، مقارنة بالبروتوكول الافتراضي:

  • تم تجاهل خاصية OperationTimeout.
  • تم تنفيذMessageReceiver.Receive(TimeSpan.Zero) كـ MessageReceiver.Receive(TimeSpan.FromSeconds(10)).
  • لا يمكن إكمال الرسائل باستخدام رموز القفل إلا بواسطة مستلمي الرسائل الذين استقبلوا الرسائل في البداية.

التحكم في إعدادات بروتوكول AMQP

تعرض .NET APIs عدة إعدادات للتحكم في سلوك بروتوكول AMQP:

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

هل أنت مُستعد لمعرفة المزيد؟ قم بزيارة الروابط التالية: