الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Native CSharp... صحیح؟

بدأه C77431 في 1 مارس 2011 · 3 رد · 669 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام علیکم و رحمة الله و برکاته..

ربما انا سأبدا دراسة C# ، ولکن لدی مشکلة، یعنی لبرمجة Managed مشکلة، و هی کشف الأکواد.

کما نعلم، سیکشف الاکواد الذی کتبت بشکل Managed بسهولة و انا لا ارید هذا. رأیت کثیرا یقولون یمکننا استخدام C# بشکل Native مثلا هذا:

اقتباس

The beauty of c#/.net is it doesn't limit you to just writing in managed code. You can still use unmanaged code, if performance is an issue for instance, or if you need to share code between platforms

هل یمکننا هذا؟

ما هو کیفیة هذا الأمر

و ما هو رأیکم فی هذا الأمر،

و جزیل الشکر سلفا.

تم تعديل هذه المشاركة بواسطة C77431 في 1 مارس 2011 في 23:48

#2

بشكل عام لا يمكن استخدامها بشكل native. ما تستطيع فعله هو استخدام ما يدعى بالـunsafe code. وهو باختصار استخدام الـpointers للتحكم في الذاكرة يدوياً (كما تفعل الـ++C).

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

على العموم، موضوع فك أكواد الدوت نت (وغيرها من اللغات المشابهة) أثبت مع الزمن بأنه ليس بتلك الأهمية أو الخطورة. الدوت نت لها قرابة 10 سنوات و جافا أكثر من ذلك لذا لا تجعله يقلقك. ولكن إذا كان ولابد يمكنك استخدام الـobjuscation.

#3

المقصود أنك تستطيع استدعاء دوال طبيعية Native functions كدوال مثلا ال Win32 API وذلك بطريقة معينة مثل طريقة استحضار المنصة P\Invoke ، استخدام المؤشرات في لغة سي شارب يعتبر غير آمن بمعنى أنك لا تضمن أن يقوم مترجم CLR بحماية برنامجك من انتهاكات الوصول الى الذاكرة وما شابه ذلك.

ولا توفر لغة سي شارب أنواع بيانات غير مُدارة أو طبيعية native data type، فكل الأنواع مُنشقة من نضام يسمى نضام النوع المشترك أو Common Type System أو CTS، وتشترك جميع اللغات الموجهة لاطار العمل دوت نت في وراثة أنواع البيانات من هذا النضام.

والغريب أن ما وضعته كاقتباس هو ما ينطبق على لغة C++\CLI أو كما شاع C++ .Net ، حيث أن لهذه اللغة صفات تعاملية أو Interoperability تتفوق على جميع لغات الدوت نت الشاءعة، حيث تتعدد طرق التعاملية interoperability فيها ، فكما يمكنك استدعاء دوال طبيعية native functions باستخدام تعاملية استحضار المنصة P\Invoke، توفر هذه اللغة الأمكانية في استخدام أنواع بيانات طبيعية native data type واستدعاء دوال طبيعية native functions باستخدام وضع يُسمى Mixed mode والذي كان قديما يُسمى IJW أو It Just Works، حيث بالامكان كتابة دالة غير مدارة unmanaged function واستدعاءها مباشرة من الدالة الرءيسية المدارة، دون أدني مشكلة وبشكل جدا مرن، ليس هذا فحسب، بل يمكنك الخروج بأنواع البيانات المستخدمة في هذه اللغة إلى الأنواع الطبيعية أو native data type، وسأعطيك مثال، لو كتبت دالة بهذه الطريقة:

Func(){
int x= 3;
char c ='a';
return x;
}

وقمنا مثلا باستدعاء هذه الدالة بدالة ال main وترجمة الكود بالوضع clr أو clr:pure أو clr:safe لكان النوع int x ما هو إلا اسم آخر للنوع العام للغات الدوت نت System.Int32 والمشتق من CTS، وبالمثل النوع char ما هو إلا اسم مكافيء للنوع System.SByte الموروث كذلك من CTS. بمعنى آخر كل الدالة السابقة بجميع متغيراتها ستترجم إلى نضيرها في لغة MSIL.

بينما لو أخذنا بالاعتبار هذه الدالة:

#pragma managed (push, off)
Func(){
int x= 3;
char c = 'a'
return x;
}
# pragma managed (pop)

اذا ترجمنا هذه الدالة بالوضع clr فسوف تترجم بشكل طبيعي natively أي أن أنواع البيانات فيها data type لا علاقة لها بنضام CTS وليست مكافإة للأنواع System.Int32 و System.SByte، ولا تترجم إلى MSIL بل تعامل كأنها Classic C function أو unmanaged Function .

تم تعديل هذه المشاركة بواسطة A.S Hack في 2 مارس 2011 في 03:44

1

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#4

السلام عليكم

صراحة الموضوع اكثر من رائع

في الرابطين يشرح كيفية الدمج بين manage and unmanaged

http://www.codeproject.com/KB/cs/unsafe.aspx

http://www.codeproject.com/KB/cs/unmanage.aspx

وشكرا

تم تعديل هذه المشاركة بواسطة ayash في 29 أبريل 2011 في 08:06

1

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

مواضيع مشابهة