كيف يمكنني أن تقرر ما إذا كان استخدام MFC ATL, Win32 أو CLR جديد C++ المشروع ؟

StackOverflow https://stackoverflow.com/questions/821676

  •  03-07-2019
  •  | 
  •  

سؤال

أنا بدأت للتو أول C++ المشروع.أنا باستخدام Visual Studio 2008.إنه واحد شكل ويندوز التطبيق الذي يصل إلى بضع قواعد البيانات و يبدأ WebSphere MQ الصفقة.أنا في الأساس فهم الاختلافات بين ATL, MFC, Win32 (أنا مشوش قليلا على واحد في الواقع) و CLR, ولكن أنا في حيرة كيف يجب أن تختار.

هو واحد أو أكثر من هذه هناك فقط من أجل التوافق مع الإصدارات السابقة?

هو CLR فكرة سيئة?

أي اقتراحات موضع تقدير.

تحرير: لقد اخترت C++ على هذا المشروع لأسباب لم ندخل في ما بعد ، والتي كلية التقنية.لذلك ، على افتراض C++ هي فقط/أفضل خيار ، والتي يجب أن أختار ؟

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

المحلول

ذلك يعتمد على الاحتياجات الخاصة بك.

باستخدام CLR سوف توفر لك مع الأكثر تعبيرا عن مجموعة من المكتبات (كامل .NET framework) ، على حساب تقييد القابل للتنفيذ إلى اشتراط .NET framework المثبتة في وقت التشغيل ، وكذلك الحد إلى منصة ويندوز (ومع ذلك ، كل 4 المدرجة التكنولوجيات ويندوز فقط ، بحيث منصة القيد هو على الأرجح أقل مزعجة).

ومع ذلك ، CLR يتطلب منك استخدام C++/CLI ملحقات C++ لغة, لذلك عليك في essense, بحاجة إلى معرفة المزيد من ميزات اللغة من أجل استخدام هذا.بذلك يوفر لك العديد من "كومبارس" ، مثل الوصول إلى .صافي المكتبات الكاملة جمع القمامة ، إلخ.

ATL & MFC إلى حد ما اصعب أن تقرر بين.كنت أود أن أشير لك MSDN صفحة لاختيار من أجل أن تقرر بينهما.الشيء الجميل في ATL/MFC هو أنك لا تحتاج .NET framework, فقط VC/MFC أوقات التشغيل ليتم تثبيتها للنشر.

باستخدام Win32 مباشرة يوفر أصغر التنفيذية, مع أقل عدد من التبعيات ، ولكن هو المزيد من العمل كتابة.لديك أقل قدر من مساعد المكتبات حتى الانتهاء من كتابة أكثر من رمز.

نصائح أخرى

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

MFC يستند إلى Win32 لتوفر لك وسيلة وجوه المنحى بناء التطبيق الخاص بك.انها ليست بديلا عن Win32 بل التعزيز هو الكثير من العمل الشاق بالنسبة لك.

النظام.يقوم نظام ويندوز.أشكال (وهو ما أفترض أنك تعني CLR) هي مختلفة تماما ولكن التشابه كبير إلى MFC من بنيتها الأساسية.انها أسهل بكثير للاستخدام ولكن يتطلب .NET framework ، والتي قد تكون أو لا تكون عائقا في قضيتك.

توصيتي:إذا كنت تحتاج إلى تجنب .صافي, ثم استخدام MFC استخدام خلاف ذلك .صافي (في الواقع, في هذه الحالة, كنت استخدم C# كما انها أسهل بكثير للعمل مع).

بقدر C++ يذهب, وأود أن استخدام WTL.إنه lightweght و سيكون لديك عدد قليل (إن وجدت) تبعيات مما يجعل من السهل السفينة وتثبيت.أجد أنه مرضية جدا عندما بلدي التطبيق يتكون من EXE واحد من شأنها أن تعمل على معظم إصدارات ويندوز, ولكن هذا قد لا يكون مصدر قلق لك.

إذا اخترت أن تذهب .صافي بدلا من ذلك ، ثم C# هو بالتأكيد الطريق للذهاب.

المزيد في WTL هنا:

http://www.codeproject.com/KB/wtl/wtl4mfc1.aspx

سأكون غريبة جدا لماذا كنت تفعل هذا في C++ على الإطلاق.استنادا إلى وصف مختصر, C# يبدو أكثر من ذلك بكثير الاختيار المناسب.

فقط للتوضيح قليلا ، أنظر الرابط الذي أعطى واصفا C++ CLR.الجواب الأعلى تصنيفا الملاحظات (بدقة ، في رأيي) أن C++ المناسب "نواة, ألعاب, عالية الأداء ملقم التطبيقات" - أي التي يبدو أن تصف ما تفعله.

MFC, ATL, الخ سوف تكون معتمدة في معنى ذلك ، نعم عليك أن تكون قادرا على ترجمة التطبيق الخاص بك في المستقبل الإصدارات من Visual Studio و تشغيلها في المستقبل إصدارات ويندوز.لكنها لا تدعم بمعنى أن ليس هناك الكثير من التطور الجديد في API أو اللغة بنفس الطريقة هناك في CLR و C#.

لا يوجد شيء خاطئ مع CLR.مثل الآخرين هنا أقترح C# ولكن لديك أسباب الخلاف مع C++ ثم استخدام .NET framework عدة آلاف المرات أسهل من العبث مع ATL/MFC إذا كنت لا بالفعل على دراية بها (المنظمة البحرية الدولية).

قد يكون من الجدير بالذكر أنه إذا كنت تستخدم C++/CLR ثم كنت حقا لا تستخدم C++ على الإطلاق.C++/CLR برمجيا إلى CIL مثل C#.لم يسبق لي استخدامه نفسي ولكن أعتقد أن الغرض منه هو السماح لك ترجمة التعليمات البرمجية القديمة وجعلها متاحة بسهولة الجديدة .صافي رمز بدلا من السماح القانون الجديد العمل مع C++ التنفيذية.هناك أساليب أخرى من استدعاء التعليمات البرمجية الأصلية من .الصافية التي, ربما, يجب أن استكشاف.

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