سؤال

ما هو الفرق بين OpenWrap و Nuget. وماذا تفضل؟

هل كانت مفيدة؟

المحلول

OpenWrap هو مشروع مفتوح المصدر يوفر إدارة التبعية في التطبيقات ، ليس فقط في وقت البناء ولكن أيضًا في وقت التشغيل.

على هذا النحو ، يتم استهداف ميزاتنا بدقة ديناميكية للتبعيات ، سواء كان ذلك لتطبيقات WPF المركبة أو تطوير تطبيق الويب أو الأدوات المساعدة على مستوى النظام. هذا يجعل تنفيذنا مختلفًا تمامًا عما يفعله Nuget.

لذا ، إليك الأشياء التي تختلف (ربما سأنسى كثيرًا ، لكن حسنًا).

  • لا اعتماد على Visual Studio ، والتركيز على الإنتاجية في سطر الأوامر بدلاً من واجهة المستخدم
  • لا توجد اعتماد على PowerShell ، يأتي OW مع نظام القيادة الخاص به والذي يتيح لك تطوير أوامر أو تنفيذ أوامرك الخاصة ، سواء كان ذلك من قذيفة (أداة O.Exe) أو من MSBuild نفسها.
  • يستخدم OpenWrap OpenWrap لبناء ونشر نفسه ، وهو صديق Xcopy في كل خطوة على الطريق.
  • يحتوي على مستودع على مستوى النظام للحزم ، بحيث يمكنك نشر أوامر الأداة المساعدة مرة واحدة بدلاً من مرة واحدة لكل حل
  • يدعم دقة التبعية الديناميكية في وقت التشغيل ، إذا كنت تريد القيام بذلك
  • يحتوي على تنسيق حزمة قابل للتمديد ، حتى تتمكن من إنشاء أنواع جديدة من التبعيات في حزمة وتساعدك على استخدامها في تطبيقك
  • يدعم كل من حزم OpenWrap وحزم nuget ومستودعات
  • يبقى بعيدًا عن مضاعفات XML و Odata ، ويذهب إلى DSLs بسيطة قائمة على النصوص السهلة والسريعة للتعلم
  • دعم البناء المتكامل ، حتى تتمكن من بناء وحزم الحل الخاص بك دفعة واحدة
  • يدعم المستودعات المخصصة على حصة الشبكة التي يمكنك نشرها من من OpenWrap أو مهام MSBuild
  • يوفر تسوية التبعية ، واختيار أي مجموعة من إصدارات الحزم يتم حلها تلقائيًا
  • إن تكامل Resharper يعني أن أي تغيير تقوم به في تبعياتك ينعكس في VS في الوقت الفعلي
  • يعني تكامل TeamCity أنه يمكنك إنشاء الحزمة الخاصة بك ونشرها باستخدام نفس العملية تمامًا ، من برنامج نصي MSBuild أو من سطر الأوامر
  • بناة قابلة للتمديد تعني أنه يمكنك تغيير كيفية تشغيل البناء داخل OpenWrap
  • دعم المتسابقين واختبارات الشحن إلى جانب الحزم
  • يستخدم نقاط تمديد MSBuild المدعومة لتشمل مراجع التجميع ، ويترك الرمز الذي قمت ببنائه بمفرده. بمجرد شحن الثنائيات ، ليس لديك تبعية رمز OpenWrap, ، فقط في وقت البناء.

هذا فقط من أجل الاختلافات ، لأن هذا ما طلبته ، لذلك لن أزعجك بما نفعله مثل مديري الحزم الآخرين.

نصائح أخرى

أردت فقط أن تتناغم مع بعض الأفكار من جانب Nuget من الأشياء. سيب يترك بعض التفاصيل التي تستحق الإشارة.

  • على الرغم من أن واجهة المستخدم الأساسية الخاصة بنا تستند إلى VS ، إلا أن مجموعة Nuget الأساسية لا تحتوي على أي روابط لـ VS. يحتوي منتج صفحات الويب ASP.NET على مدير حزمة قائم على الويب. كتبت منشورًا مدونة يعرض مثالًا واحدًا على استخدام Nuget لإنشاء موقع ويب يقوم بتحديث نفسه في وقت التشغيل. http://haacked.com/archive/2011/01/15/building-a-efelding-site-using-nuget.aspx
  • يوفر Nuget وحدة تحكم PowerShell قوية. يمكن أن تضيف حزم Nuget أوامر جديدة إلى وحدة التحكم. نرى http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/. كما كان من قبل ، هذا عميل واحد في Nuget و Nuget Core لا يتطلب ذلك.
  • Nuget متاح للتثبيت عبر معرض VS Extension ومن السهل جدًا البدء به على الفور.
  • يدعم Nuget توجيه العميل إلى دليل (أو مشاركة شبكة) يحتوي على مجموعة من الحزم ويعاملها تلقائيًا كمستودع. لذلك إذا كنت لا تريد التعامل مع Odata ، فلن تضطر إلى ذلك. لكننا ندرج أيضًا تنفيذ معرضنا ، لذلك ليست هناك حاجة للتعامل يدويًا مع ODATA/XML في أي حال.
  • لا يتطلب منك Nuget نشر أي جزء من Nuget كجزء من طلبك. يبقى أيديه ويركز على أتمتة الخطوات التي ستتخذها بدون Nuget للحصول على تبعياتك ونشرها. لكي نكون واضحين ، كما يشير Seb ، لا OpenWrap. أردت فقط أن أوضح أن Nuget لا يتطلب ذلك أيضًا.

واحدة من المبادئ الرئيسية لـ Nuget (وفرق مهم في OpenWrap) هو أنها لا تحاول تغيير طريقة عملك. بدلاً من ذلك ، يجعل من الأسهل بكثير القيام بالأشياء التي تقوم بها بالفعل اليوم.

قل على سبيل المثال أنك تحاول استخدام مكتبة FOO ، والتي تعتمد على مكتبة البار. اليوم ، يجب عليك العثور يدويًا على تلك المكتبات ، ونسخها إلى جهازك وإضافة إشارات إليها. بعد ذلك ، ستظهر إصدارات أحدث وستخوض حركات مماثلة لتحديثها.

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

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

إن نهج OpenWrap له مزايا أيضًا ، ولكن للذهاب إلى هذا الطريق ، يجب أن تكون على استعداد لاستخدام OpenWrap على طول الطريق ، ولا يمكنك بسهولة الابتعاد عنه.

هناك العديد من الاختلافات الأخرى (مثل دعم Rich VS في Nuget) ، ولكن هذا ما أعتبره الفرق الأساسي بين الاثنين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top