صدر أورليانز 3.0

هذا موقع ضيف من فريق Orleans. إن Orleans هو إطار عمل مشترك بين الأنظمة الأساسية لإنشاء تطبيقات موزعة باستخدام .NET. انظر https://github.com/dotnet/orleans لمزيد من المعلومات.

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



تغييرات كبيرة بالمقارنة مع اورليانز 2.0


تم إصدار Orleans 2.0 منذ ما يزيد قليلاً عن 18 شهرًا ، وحقق الإطار تقدمًا كبيرًا منذ ذلك الحين. بعض التغييرات مقارنة بـ 2.0:

  • المعاملات الحمضية الموزعة
  • برنامج جدولة جديد أدى في بعض الحالات إلى زيادة الإنتاجية بأكثر من 30٪
  • مولد رمز يستند إلى Roslyn جديد
  • إعادة كتابة عضوية الكتلة لتحسين سرعة الاسترداد
  • دعم الاستضافة المشتركة

وكذلك العديد من التحسينات والإصلاحات الأخرى.

استبدال طبقة الشبكة بـ ASP.NET Bedrock


كان الحفاظ على الاتصالات الآمنة باستخدام TLS مصدر قلق كبير لبعض الوقت. علاوة على ذلك ، سواء من المجتمع أو من الشركاء الداخليين. في الإصدار 3.0 ، نضيف دعم TLS ، المتاح من خلال حزمة Microsoft.Orleans.Connections.Security . انظر المثال TransportLayerSecurity لمزيد من المعلومات.

كان تطبيق دعم TLS مصدر قلق كبير بسبب كيفية تطبيق طبقة الشبكة في الإصدارات السابقة من Orleans: لا يمكن تكييفها بسهولة لاستخدام SslStream ، وهي الطريقة الأكثر شيوعًا لتنفيذ TLS. باستخدام TLS كقوة دافعة ، نعيد كتابة طبقة شبكة Orleans.

في Orleans 3.0 ، يتم استبدال طبقة الشبكة بالكامل بطبقة تم إنشاؤها على أساس Project Bedrock ، وهي ميزة مجموعة ASP.NET. هدف Bedrock هو مساعدة المطورين على إنشاء عملاء وخوادم شبكة سريعة وموثوق بها.

عمل فريق ASP.NET وفريق Orleans معًا لإنشاء أعمال تجريدية تدعم كلاً من عملاء الشبكة وخوادمها ، وهي غير ملائمة ويمكن تهيئتها باستخدام البرامج الوسيطة. تتيح لنا هذه التجريدات تغيير "نقل" الشبكة من خلال التكوين دون تغيير رمز الشبكة الخاص بشركة Orleans. يتم تطبيق دعم Orleans TLS كبرنامج Bedrock وسيط ، ونعتزم جعله عالميًا بحيث يمكن مشاركته مع الآخرين في النظام البيئي .NET.

على الرغم من أن الحافز لهذا الابتكار كان إضافة دعم TLS ، إلا أنه في اختبارات الحمل الخاصة بنا في الليل ، يرتفع معدل الإنتاج في المتوسط ​​بنسبة 30٪ تقريبًا.

تتضمن إعادة كتابة طبقة الشبكة أيضًا استبدال تجمع المخزن المؤقت المخصص الخاص بنا بـ MemoryPool<byte> ، ومع هذا التغيير ، تستفيد التسلسل الآن من Span<T> . تستخدم الآن بعض مسارات التعليمات البرمجية التي كانت تعتمد في السابق على القفل عبر مؤشرات ترابط مخصصة تستدعي BlockingCollection<T> Channel<T> لتمرير الرسائل غير المتزامنة. ينتج عن هذا مؤشرات ترابط أقل مخصصة ، بدلاً من نقل العمل إلى تجمع مؤشرات ترابط .NET.

الاستضافة المشتركة من خلال مضيف عام


أصبح الاستضافة المشتركة لـ Orleans مع الأنظمة الأساسية الأخرى مثل ASP.NET Core في نفس العملية أسهل من ذي قبل بفضل .NET Generic Host .

فيما يلي مثال على إضافة Orleans إلى جانب ASP.NET Core إلى مضيف باستخدام UseOrleans :
 var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => { //  ASP.NET Core webBuilder.UseStartup<Startup>(); }) .UseOrleans(siloBuilder => { //  Orleans siloBuilder.UseLocalHostClustering(); }) .ConfigureLogging(logging => { /*   ,    */ }) .ConfigureServices(services => { /*    */ }) .UseConsoleLifetime() .Build(); //      . await host.RunAsync(); 

يمكن استخدام هذه الوظيفة لتبسيط طبولوجيا النشر أو لإضافة ميزات إضافية إلى تطبيق موجود. تستخدم بعض الفرق الاستضافة المشتركة داخليًا لإضافة اختبارات Kubernetes إلى مشاريعها في Orleans باستخدام ASP.NET Core Health Checks .

تحسينات الموثوقية


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

التمدد المحسن


يمكن أن يكون للتدفقات الآن محولات بيانات خاصة بها ، مما يسمح لها بتلقي البيانات بأي تنسيق. هذا يمنح المطورين المزيد من التحكم في كيفية تمثيل عناصر التدفق في المستودع. كما أنه يمنح موفر الدفق التحكم في كيفية كتابة البيانات ، مما يسمح للتيارات بالتكامل مع الأنظمة الحالية و / أو خدمات غير تابعة لأورليانز.

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

انضم الآن!


الآن بعد إصدار الإصدار 3.0 من Orleans ، فإننا نحول انتباهنا إلى الإصدارات المستقبلية - ولدينا بعض الخطط المثيرة! انضم إلى مجتمعنا الدافئ والمرحّب على جيثب .



انظر أيضا: 7 دورات مجانية للمطورين

Source: https://habr.com/ru/post/ar474240/


All Articles