مرحباً أيها المواطنون هابروفسك!
لقد عدنا من مؤتمر
لمطوري DotNext .NET
وشاركنا بصراحة انطباعاتنا حول أكثر التقارير التي لا تنسى. نأمل أن تكون مراجعتنا مفيدة لأولئك الذين سيشاهدون مقاطع فيديو للأداء.
تم نشر جزء من العروض التقديمية على موقع المؤتمر ، لذلك قمنا باستكمال بعض المراجعات بروابط لها.

اليوم الأول
استخدام Tarantool في مشاريع .NET - Anatoly Popov ( عرض تقديمي )
بدأ التقرير بمراجعة تطور SQL -> NoSQL -> قواعد بيانات NewSQL ، إيجابياتها وسلبياتها. أخبر Anatoly لماذا ، في الواقع ، نضجت الحاجة إلى NewSQL - هذه محاولة لعبور أداء NoSQL ولغة استعلام SQL ، والتي تتوفر لها مليار أداة مفيدة.
تم ذكر الميزة التالية حول Tarantool - يتم تخزين السجلات على شكل مجموعات ذات طول تعسفي. تحت الغطاء ، يستخدم تارانتول أشجار LSM.
الجزء الرئيسي من التقرير ، تحدث أناتولي عن النضال من أجل الأداء في تنفيذ برنامج تشغيل Tarantool لـ .NET. تم عمل تجريدات جديدة من Readonly Span و IMemoryOwner pool. يتم أخذ المعيار 200 كيلوبايت في الثانية ، مما يمنح سائق جولانج ، وتمكن حتى الآن من تحقيق 1/3 من النتيجة. وأكد المتحدث أنه سيحسن المؤشرات تدريجيًا ، لكن الخطط والتوقعات المستقبلية المحددة لا تزال في الضباب.
التحسينات داخل .NET Core - Egor Bogatov
أحاط إيجور بقصته عن أحشاء الأحادية والريوجيت بروح الدعابة المناسبة ، على عكس نفس الوحدة من موتيل ، التي كانت نائمة إلى حد ما للاستماع إليها.
غطى Egor موضوع التحويل التلقائي للحسابات في أحادية ، وتحدث أيضًا عن تعليمات SSE-AVX ، المتاحة الآن مباشرة من C #.
بالنظر إلى المستقبل ، أخبرنا أنه في مجموعة .Net Core 3 تنتظرنا ، أي سوف تظهر طائرة ثقيلة منفصلة في وقت التشغيل مثل الخادم في جافا. في ryuJIT ، من المتوقع إجراء تحسينات جديدة لتحليل الالتفاف والهروب (يتم نشر الأخير بواسطة طالب ، دع github يساعده).
تعليقنا: اليوم ، لا يزال هناك احتياطي مثير للإعجاب لزيادة أكبر في أداء النظام الأساسي ، نظرًا لأن العديد من التحسينات المهمة من عالم جافا والمجمعين الاستاتيكيين الكلاسيكيين لا تزال غير مطبقة في .Net.
تطوير الويب الحديث مع SAFE-Stack - Steffen Forkmann
ستيفان هو مدافع متحمس للغة F #. في التقرير ، شارك تجربته في تطوير الويب ، مبنية بالكامل على قوانين وظيفية. هنا لديك كلاً من إطار عمل MVC للويب (زحل) و Fable لترجمة F # إلى JS ، وواجهة مستخدم تشبه Elm ، ومتبلة بعبارات جميلة وجيدة جدًا. التقرير ككل ليس سيئًا ويؤكد القدرات الخارقة للديانات البديلة.
إنشاء تطبيقات Xamarin دليل على وضع الطائرة - Gerald Versluis ( عرض تقديمي )
وفقًا لطريقة العرض التقديمي ، فإن التقرير يشبه إلى حد كبير تقرير SAFE-Stack ويشبه برنامج "Smack": أولاً نضع مكون Essentials لاكتشاف الوصول إلى الإنترنت على لوحة مع التطبيق ، ثم نمرر REST API عبر Refit ، ونبرد البيانات في ذاكرة التخزين المؤقت Akavache ، ونرش Polly في الأعلى لمعالجة الأخطاء الذكية لطلبات الشبكة. لم يكن ذلك بدون سخرية ذاتية هولندية ، لأن التطبيق تعطل باستمرار بشكل عشوائي في جهاز المحاكاة.
بنية ASP.NET Core متعددة المستأجرين: التحديات والحلول - خليل إبراهيم كالكان ( عرض )
يصف التقرير جميع الميزات الرئيسية لبنية التطبيقات متعددة المستأجرين.
الفكرة الرئيسية هي أنه عندما تقوم شركة بتطوير تطبيقات SAAS ، فإنها تريد استخدام البنية التحتية على أكمل وجه. لذلك ، لديها العديد من العملاء على نفس الخادم بحيث لا يقف الخادم في وضع الخمول. هذا يسبب مشكلة تتعلق بحقيقة أن جميع بيانات العملاء المختلفة كما لو كانت في نفس المرجل. يركز التقرير على الحلول التي تمكن من الوصول الموثوق إلى هذه البيانات.
تقرير ممتاز يتم فيه وضع كل شيء على الرفوف. أمثلة بسيطة ومفهومة دون تفاصيل غير ضرورية - تتم كتابتها بأناقة شديدة ، باستخدام الأنماط والأساليب الحديثة. شاهدت بسرور.
تصميم مدفوع بالمجال: وصفة للبراغماتي - أليكسي ميرسون ( عرض )
تقرير ممتاز عن المفاهيم الأساسية لل DDD. أي كتاب تقرأ أولاً: "أزرق" أو "أحمر"؟ كيف يمكن للفريق بأكمله التحدث بنفس اللغة؟ هل من الممكن استخدام التسمية السيريلية في برامج C #؟ كيف تتوقف أخيرًا عن الخوف من الواجهة المنفصلة وتجعل رمز المجال مستقلاً عن بقية التطبيق؟ يتم تسليط الضوء على جميع هذه النقاط مع أمثلة في هذا التقرير.
يؤكد أليكسي على أهمية اللغة (لغة واحدة) لتنفيذ سياق واحد محدد. أخبر كيفية اختيار حجم السياق المحدود وأنواع النطاقات الفرعية التي يمكن أن تكون. وقال التقرير أيضًا إن سياقًا محدودًا يساوي خدمة واحدة - وهذا يرتبط جيدًا بتجربتنا في تنفيذ المشاريع.
كان من المثير للاهتمام أن نسمع عن جوهر العمارة المنتفخة والإيجابيات مقارنة بالهندسة المعمارية المكونة من ثلاث طبقات / أربع طبقات.
يعتبر التقرير مثاليًا لأولئك الجدد على DDD ويريدون نقل متجانساتهم إلى الخدمات الصغيرة ، ولأولئك الذين يبدأون في تطوير حلول الخدمات الصغيرة.
اليوم الثاني
اختبار الوحدة الواقعية - فلاديمير خوريكوف ( عرض )
من أفضل التقارير والمتحدثين برأينا.
رتب فلاديمير من خلال الرفوف الغرض الحقيقي من الاختبارات للمشروع ، وما هي المقاييس التي تحدد جودة الاختبارات ، وكيف تتوافق أنواع مختلفة من الاختبارات مع هذه المقاييس. لا يمكن للمرء أن يختلف مع كل الأفكار ، لذلك يجب أن نرى.
سجل خوريكوف العديد من الدورات في Pluralsight - ابحث عنه هناك. لديه أيضا
مدونة جيدة.
التصميم الفوري - مكسيم Arshinov ( عرض )
استمرارًا لتقرير ميرسون عن DDD ، تحدث مكسيم عن الانتقال من الطبقات الكلاسيكية للكود إلى بنية البصل ، طوال التقرير يعيد صياغة طريقة تحديث البريد الإلكتروني للمستخدم. وكانت النتيجة خط أنابيب من الديكور (hi ، yegor256) بأسلوب CQRS مع كتابة DTO الأكثر صرامة (hi ، FSharpForFunAndProfit).
ونتيجة لذلك ، تلقينا دليلًا جاهزًا للإجراء ، والذي يمكن استخدامه في المشروع للحصول على نفس الرمز الأنيق مثل Max.
بشكل عام ، التقرير مليء للغاية بالأفكار المفيدة. كان لخبرة مكسيم في التدريس تأثير إيجابي على مستوى مهاراته كمتحدث - وكان الاستماع إلى العرض التقديمي جميلًا.
وراء مترجم الاندفاع ، تحويل NET IL إلى كود أصلي محسن للغاية باستخدام LLVM - Alexandre Mutel
على ما يبدو ، فإن Unity قد جردت أسنانها من ألعاب الفئة A ، وبالتالي فإن igrodelov يحتاج إلى أداء أقرب بكثير من C ++. أخبر موتيل كيف يحققون نتائج جيدة من خلال تسليط الضوء على مجموعة فرعية من لغة C # (HPC #) ، التي لديها هياكل جاهزة للعمل الفعال مع الذاكرة بدون GC وبعض تركيبات اللغة المألوفة.
تكمن الفكرة في تطبيق هذه المجموعة الفرعية فقط للأساليب الأكثر تكلفة ، بحيث تكون الأيدي في أماكن أخرى غير مربوطة كما هو الحال دائمًا (بقدر ما هو مسموح به في تطوير اللعبة). يجري تطوير مترجم جديد AOT / JIT لتجميع HPC #. الاندفاع بالمقارنة مع ryuJIT يعطي بالفعل 10x على بعض الاختبارات الاصطناعية.
توضح الأمثلة الموضحة للمجمّع الذي تم إنشاؤه مدى تعقيد المترجم. والحل وحده ولا يفاجأ أحد - يتم إدخال رمز IL إلى LLVM. تُكتب الجوهرية أيضًا للرياضيات باستخدام مكتبة خارجية عالية الأداء.
من الصعب فهم التقرير ، المتكلم قاسي للغاية.
حياة الممثلين في مجموعة: لماذا ومتى وكيف - فاجيف أبيلوف ( عرض )
كشف التقرير أن نصف الجمهور يجلس على F #. ربما يكون هذا أكثر شيء ممتع في هذا التقرير. انتهى الأداء بهتاف حي حول انقسام الدماغ في كتلة. إنه مجيد.
كيفية البقاء تحت الحمل: خادم متسامح مع الأخطاء ، عميل ذكي - Igor Lukanin ( عرض تقديمي )
تحدث إيغور عن المطبخ عالي الحمولة في مشاريع Kontur. لقد فوجئت بأن الشركة تستخدم "موازنًا" على العميل: ترسل واجهة برمجة التطبيقات معلومات حول تحميل عقد الكتلة والحالات 429 ، اعتمادًا على فهم العميل لكيفية توزيع الطلبات. كما أظهر مقاييس استخدام الموارد وكيفية تحديد ما إذا كان كل شيء جيدًا أو كل شيء سيئًا. أخبر كيف يقتبس الطلبات حسب المهلة والعميل ، ولماذا من الأفضل معالجة قائمة الانتظار بترتيب LIFO.
كان الميكروفون مملوكًا لسماعة من ذوي الخبرة ، وكان الاستماع إلى إيغور مريحًا.
Dodo IS Performance Architecture - Georgy Polevoy ( عرض )
في البداية ، بدا التقرير مملًا إلى حد ما: السرعة غير المؤكدة للسرد ، والشرائح المملة مع قوائم التقنيات ، والتعريفات المعروفة. في مرحلة ما ، نشأ شك: سرعان ما سيقول المتحدث أن كل ما هو مطلوب هو خط عند المدخل. لكن ذلك لم يكن بهذه البساطة.
لوصف التقرير بإيجاز ، يمكننا القول أنه كان مخصصًا لميزات مكتبة
Polly ، مثل Retry Policy ، Bulkhead Isolation ، Fallback ، وهو محنك بأمثلة ممتازة من حياة Dodo Pizza.
اتجاه السنوات الأخيرة هو استخدام التزامن في كل مكان. لكن هذا الاتجاه له تأثير غير واضح - وهذا يؤدي إلى حقيقة أن موارد الخادم "مسدودة". في السابق ، كان كل شيء يقتصر على تجمع مؤشرات الترابط. يحتوي خادم الويب على مجموعة ثابتة من سلاسل العمليات التي تعالج الطلبات الواردة التي تؤدي عمليات متزامنة. هذا يحد من الحمل على الخادم. تم تحرير كل مؤشر ترابط وتلقى طلبًا آخر للمعالجة عند الانتهاء من جميع الأعمال حقًا.
اليوم ، غالبًا ما يكتب المطورون رمزًا غير متزامن دون التفكير في العواقب. ونتيجة لذلك ، يتم تحرير تدفقات خادم الويب ، التي تبدأ المهمة غير المتزامنة التالية ، وتستمر في معالجة المزيد والمزيد من الطلبات الجديدة. بمرور الوقت ، يتزايد عدد العمليات غير المتزامنة التنافسية ، ويستمر خادم الويب في قبول المزيد والمزيد من الطلبات.
يخبر المؤلف في تقريره فقط ما هو التزامن ولماذا يجب أن يكون محدودًا. بالمناسبة ، هذه المكتبة وغيرها من المهام الخاصة بإدارة الحمل والتسامح مع الخطأ تساعدها مكتبة بولي.
بشكل عام ، حتى إذا كنت لا تطور خدمات محملة بشكل كبير ، فراجع هذا التقرير على أي حال.
بناء تطبيقات سريعة الاستجابة وقابلة للتطوير - جيفري ريختر ( عرض تقديمي )
هذا تقرير قديم إلى حد ما بقلم جيفري ريختر. يمكن العثور عليه على الإنترنت لمدة عام على الأقل ، ولا يدعي الموضوع أنه جديد. لكن الجحيم ، إنه جيفري ريشتر! لا يسعنا إلا أن نستمع إلى مؤلف الكتاب ، الذي يعتبر بحق الكتاب المقدس لأي مطور C #. كان جيفري القديم شخصًا لطيفًا ومتحدثًا جيدًا. لقد استمتعنا للتو.