نحن متحمسون للإعلان عن دعم .NET Core لـ Pulumi! يعني هذا الإعلان أنه يمكنك الإعلان عن البنية الأساسية السحابية - بما في ذلك كافة Azure ، مثل Kubernetes ووظائف AppService والأجهزة الظاهرية و CosmosDB والمزيد - باستخدام لغة .NET المفضلة لديك ، بما في ذلك C # و VB.NET و F #. وبذلك يرتفع السحابة بأكملها إلى أطراف أصابعك دون الحاجة إلى ترك محرر الكود الخاص بك ، مع استخدام تقنيات "البنية التحتية الجاهزة للإنتاج كرمز" الجاهزة للإنتاج.

أصبحت البنية التحتية أكثر أهمية في هذه الأيام حيث تتخلل القدرات السحابية الحديثة مثل الخدمات المصغرة والحاويات ومخازن البيانات ومخازن البيانات بنية تطبيقك. يغطي مصطلح "البنية التحتية" جميع الموارد السحابية التي يحتاجها التطبيق لتشغيله. تتطلب المعماريات الحديثة التفكير بعمق في البنية التحتية أثناء إنشاء التطبيق الخاص بك ، بدلاً من الانتظار إلى ما بعد ذلك. يساعد نهج Pulumi المطورين وفرق البنية التحتية على العمل سويًا لتوفير وظائف جديدة ومبتكرة تعزز كل ما توفره السحابة الحديثة.
أطلق Pulumi منذ أكثر من عام بقليل ووصل مؤخرًا إلى مستوى 1.0 ثابتًا. بعد العمل مع مئات الشركات لتحويل التطبيقات السحابية إلى مرحلة الإنتاج ، ارتفع .NET بسرعة إلى واحدة من أكثر ميزات المجتمع التي تطالب بها Pulumi. خاصة وأن الكثيرين منا في فريق Pulumi هم من أوائل مستخدمي .NET السابقين ، يسعدنا اليوم أن نجعل Pulumi متاحًا على .NET Core لتلبية احتياجاتك في مجال السحابة.
ما هو Pulumi؟
تتيح لك Pulumi استخدام اللغات الحقيقية للتعبير عن احتياجات البنية الأساسية للتطبيق الخاص بك ، باستخدام تقنية قوية تسمى "البنية التحتية كرمز". باستخدام البنية الأساسية ككود ، تعلن عن البنية التحتية المطلوبة ، وقواعد محرك لك ، بحيث تكون آلية وسهلة النسخ المتماثل ، وقوية بما يكفي لتلبية متطلبات الإنتاج. تأخذ Pulumi هذا النهج خطوة إلى الأمام من خلال الاستفادة من اللغات الحقيقية وجعل أنماط البنية التحتية السحابية الحديثة ، مثل الحاويات والبرامج الخالية من الخوادم ، من الدرجة الأولى وسهلة.
باستخدام Pulumi for .NET ، يمكنك:
- قم بتعريف البنية التحتية باستخدام C # أو VB.NET أو F #.
- يمكنك إنشاء الموارد السحابية أو تحديثها أو حذفها تلقائيًا باستخدام بنية Pulumi كمحرك رمز ، وإزالة الإشارة والنقر يدويًا في Azure UI والبرامج النصية المخصصة.
- استخدم أدوات IDE والأدوات المفضلة لديك ، بما في ذلك Visual Studio و Visual Studio Code ، مع الاستفادة من ميزات مثل الإكمال التلقائي وإعادة التجهيز والتوثيق التفاعلي.
- يمكنك اكتشاف الأخطاء مبكرًا مع وجود أخطاء برنامج التحويل البرمجي القياسي ومحللات Roslyn ومحرك سياسة خاص بالبنية التحتية لفرض الأمان والامتثال وأفضل الممارسات.
- إعادة استخدام أي مكتبة NuGet حالية ، أو توزيع مكتبتك ، سواء كان ذلك لصالح أفضل ممارسات البنية الأساسية أو الإنتاجية أو أنماط البرمجة العامة فقط.
- انشر باستمرار وبشكل متوقع وموثوق به باستخدام خطوط أنابيب Azure DevOps أو GitHub Actions أو واحدة من أكثر من عشرة عمليات تكامل.
- يمكنك إنشاء تطبيقات سحابية قابلة للتطوير باستخدام التقنيات الأصلية السحابية الخاصة بالبنية الأساسية مثل Kubernetes ، وحاويات Docker ، والوظائف التي لا تستخدم الخادم ، وقواعد البيانات القابلة للتطوير بدرجة كبيرة مثل CosmosDB في تجربة التطوير الأساسية الخاصة بك ، مما يجعلها أقرب إلى رمز التطبيق الخاص بك.
تتيح SDK المجانية والمفتوحة المصدر لـ Pulumi ، والتي تتضمن CLI ومجموعة متنوعة من المكتبات ، هذه الإمكانيات. تقدم Pulumi أيضًا ميزات متميزة للفرق التي ترغب في استخدام Pulumi في الإنتاج ، مثل تكامل Azure Active Directory للهوية والسياسات المتقدمة.
مثال: قاعدة بيانات عالمية مع تطبيق serverless
لنفترض أننا نريد إنشاء تطبيق جديد يستخدم Azure CosmosDB للتوزيع العالمي للبيانات بحيث يكون الأداء رائعًا للعملاء بغض النظر عن مكان وجودهم في العالم ، من خلال تطبيق C # serverless الذي يتدرج تلقائيًا إلى جانب قاعدة البيانات الخاصة بنا. عادةً ما نستخدم بعض الأدوات الأخرى لإنشاء البنية الأساسية ، مثل JSON أو YAML أو DSL أو يدويًا انقر في وحدة التحكم Azure. هذا النهج مساوٍ للدورة التدريبية ، ولكنه أيضًا أمر شاق - إنه معقد وغير قابل للتكرار ، ويعني أننا بحاجة إلى خبير في البنية التحتية لمجرد البدء.
تتمثل طريقة Pulumi في كتابة الكود بلغة .NET المفضلة لدينا ، وسوف تتعامل أداة Pulumi مع الباقي. على سبيل المثال ، يُنشئ رمز C # قواعد بيانات Azure CosmosDB مع Azure AppService FunctionApp بدون خادم يقوم تلقائيًا بالتطوير إلى جانب قاعدة البيانات:
using System; using System.Collections.Generic; using Pulumi; using Pulumi.Azure.AppService; using Pulumi.Azure.Core; using Pulumi.Azure.CosmosDB; class Program { static Task<int> Main(string[] args) { return Deployment.RunAsync(() => { var locations = new[] { "WestUS", "WestEurope", "SouthEastAsia" }; var rg = new ResourceGroup("myapp-rg", new ResourceGroupArgs { Location = locations[0], }); var app = new CosmosApp("myapp", new CosmosAppArgs { ResourceGroup = resourceGroup, Locations = locations, DatabaseName = "pricedb", ContainerName = "prices", Factory = (location, db) => { var func = new ArchiveFunctionApp("myapp-func", new ArchiveFunctionAppArgs { Location = location, Archive = new FileArchive("app"), AppSettings = new Dictionary<string, string> { ["COSMOSDB_ENDPOINT"] = db.Endpoint, }, }, ); return func.App.ID; }, }); }); }
عرض Program.cs الخام المستضافة بواسطة
GitHubبعد كتابة هذا الرمز ، تقوم بتشغيل Pulumi CLI باستخدام الأمر pulumi up وسيظهر لك أولاً معاينة لموارد البنية التحتية التي تخطط لإنشائها. بعد التأكيد ، سيتم نشر التطبيق بالكامل والبنية التحتية المطلوبة في بضع دقائق فقط.

في وقت لاحق ، إذا كنت بحاجة إلى إجراء أي تغييرات ، فكل ما عليك هو تحرير البرنامج وإعادة تشغيل CLI ، وستجري التغييرات الإضافية اللازمة لتحديث البنية الأساسية الخاصة بك وفقًا لذلك. يتم تسجيل التاريخ الكامل لعمليات النشر الخاصة بك حتى تتمكن من معرفة التغييرات التي تم إجراؤها بسهولة.
لماذا تعتبر .NET رائعة للبنية التحتية أيضًا؟
الكثير منا يحب استخدام .NET لتأليف تطبيقاتنا ، فلماذا لا نستخدمها للبنية التحتية كرمز أيضًا؟ لقد رأينا بالفعل بعض المزايا أعلاه للقيام بذلك. ربما يكون الكثير من هذه الأمور واضحًا إذا كنت تعرف بالفعل شبكة .NET وتحبها.
باستخدام أي لغة من لغات .NET ، تحصل على العديد من الميزات المفيدة لرمز البنية الأساسية لديك:
- الألفة: لا حاجة لتعلم DSL أو اللغات الترميزية الترميزية.
- التعبير: استخدم الحلقات الشرطية ومطابقة الأنماط و LINQ والرمز المتزامن وغير ذلك الكثير لإنشاء بنية أساسية تلبي احتياجات البيئة المستهدفة ديناميكيًا.
- التجريد: قم بتضمين الأنماط الشائعة في الفئات والوظائف لإخفاء التعقيد وتجنب نسخ اللصق نفسه مرارًا وتكرارًا.
- المشاركة وإعادة الاستخدام: انتقل إلى مجتمع من التطبيقات السحابية وخبراء البنية التحتية ، من خلال مشاركة وإعادة استخدام مكتبات NuGet مع فريقك أو المجتمع العالمي.
- الإنتاجية: استخدم IDE المفضل لديك واحصل على إكمال البيان ، انتقل إلى التعريف ، والتحقق من الأخطاء المباشرة ، وإعادة البناء ، والتحليل الثابت ، والوثائق التفاعلية.
- تنظيم المشروع: استخدم أساليب هيكلة التعليمات البرمجية الشائعة مثل التجميعات ومساحات الأسماء لإدارة البنية الأساسية الخاصة بك عبر مشروع واحد أو أكثر.
- دورة حياة التطبيق: استخدم أنظمة وتقنيات ALM الحالية لإدارة ونشر مشاريع البنية التحتية الخاصة بك ، بما في ذلك التحكم في المصدر ومراجعة الكود والاختبار والتكامل المستمر (CI) والتسليم (CD).
تقوم Pulumi بإلغاء تأمين الوصول إلى نظام .NET بالكامل - وهو أمر يسهل الحصول عليه كأمر مسلم به ولكنه مفقود من الحلول الأخرى القائمة على البرامج النصية JSON أو YAML أو DSL أو CLI. يعد الوصول إلى لغة كاملة أمرًا ضروريًا لتمكين مثال CosmosApp أعلاه ، وهو مكون مخصص يستخدم داخليًا الفئات والحلقات و lambdas وحتى LINQ. يساعد هذا النهج أيضًا المطورين والمشغلين على العمل معًا بشكل أفضل باستخدام مؤسسة مشتركة. أضف كل ما سبق معًا ، ويمكنك إنجاز الأمور بشكل أسرع وأكثر موثوقية.
انضم إلى المجتمع وابدأ
لقد أصدرنا اليوم أول معاينة لـ Pulumi for .NET ، بما في ذلك دعم كامل خدمات التنفس Azure. لتجربة Pulumi ،
تفضل بزيارة الصفحة الرئيسية لـ Pulumi لـ .NET .
ستجد هناك العديد من الإرشادات حول التثبيت والبدء في استخدام Pulumi for .NET. توفر الموارد التالية معلومات مفيدة إضافية:
على الرغم من أن Pulumi for .NET مدرج في حالة "المعاينة" ، إلا أنه يدعم جميع ميزات نموذج البرمجة Pulumi الأكثر أهمية (والباقي في طريقه). هدفنا هو جمع التعليقات وعلى مدار الأسابيع القليلة المقبلة ، وسنعمل جاهدين لتحسين تجربة .NET عبر اللوحة ، بما في ذلك المزيد من الأمثلة والتوثيق الأفضل.
يرجى
الانضمام إلى المجتمع في Slack لمناقشة السيناريوهات والأفكار الخاصة بك ، وللحصول على أي مساعدة مطلوبة من الفريق والمستخدمين الآخرين. Pulumi هو أيضا
مفتوح المصدر على جيثب .
هذا يوم مثير لفريق Pulumi ومجتمعنا. بدأ Pulumi من قِبل بعض الأشخاص الأوائل في .NET ، لذا من الرائع العودة إلى جذورنا والتواصل مع مجتمع .NET ، ومساعدة المطورين وفرق البنية التحتية والمشغلين على بناء برامج سحابية أفضل معًا.
نتطلع إلى رؤية التطبيقات السحابية الجديدة والمذهلة التي تنشئها باستخدام Pulumi for .NET!