khaledbelal
02-28-2010, 05:44 PM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .
موعدنا هذه الفترة مع ال .net assemblies ، لن نطيل فيها كثيراً ولكننا سنعرف النقاط الاساسية فيها فيما يمكنك الاطلاع على المزيد عنها من خلال msdn
ال namespace .
في نفس ال namespace يمكن لجميع المكونات تحته ان ترى بعضها البعض ، لذا دوماً وفي مشاريعك الجديدة اجعل namespace موحد لجميع مكونات برنامجك .
C#:
namespace example
{
class someclass
{
void method(){
}
}
}
vb.net:
Namespace example
Class someclass
Private Sub method()
End Sub
End Class
End Namespace
أما لو كان لدينا كلاس classCar في namespace باسم آخر ، فلن يمكنك كتابة الكود التالي ضمن الدالة السابقة method
C#:
void method(){
classCar x=new classCar();
}
vb.net:
Private Sub method()
Dim x As New classCar()
End Sub
لكن يمكننا عمل import لل example لتتمكن من تعريف الكلاس بالشكل التالي :
C#:
using example;
namespace example
{
class someclass
{
void method(){
}
classCar x=new classCar();
}
}
vb.net:
Imports example
Namespace example
Class someclass
Private Sub method()
End Sub
Private x As New classCar()
End Class
End Namespace
تغيير ال Default Namespace :
لتغيير مجال الاسماء الافتراضي :
http://vb4arab.com/vb/uploaded/3/01208907478.jpg
Format of a .NET Assembly
إذا قمت بفتح ملف الاسمبلي ب dumpbin.exe مثلاً يمكنك ان تلاحظ أن مكلف الاسمبلي يتكون من العناصر التالية :
Win32 file header
هنا ستجد معلومات عن نوع هذا الملف ، هل هو console ام GUI ام dll وكيفية تنفيذه على نظم التشغيل من ويندوز
CLR file header
يحتوي على المعلومات التي لا بد لأي .net application ان يدعمها ، يحتوي على طريقة كتابة ال managed file ووجود ال resources من عدمه وخلافه .
لا تهمك كثيراً المعلومات السابقة للنقطتين السابقتين ، لإنك لن تتعامل معها سوى إذا ما كنت تحتاج لبناء كومبايلر خاص بك تحت بيئة عمل .net .
CIL code
الكود الخاص ببرنامجك ، يتم ترجمته فوراً باستخدام JIT التي تحدثنا عنها سابقاً ، سيكون عنها درس مستقل إن شاء الله .
Type ****data
تحتوي على تفاصيل الانواع الخارجية التي تستخدمها في برنامجك .
An assembly manifest
الرابط بين ملفات الاسمبلي المختلفة ، تحدد اصدار الاسمبلي وخلافه .
Optional embedded resources
اي ملف اسمبلي يمكن ان يحتوي على اي عدد من ملفات الريسورس تشير إلى صور وايقونات وخلافه .
Private Assemblies
ال Private Assemblies ملف اسمبلي يعمل من خلال مسار البرنامج او التطبيق ، حيث لن يبحث ال visual studio عن هذا الملف سواء في الريجستري او في أي مكان آخر ، فقط سيبحث في مسار البرنامج عنه .
في حالة حذف برنامجك يتم حذف هذه الملفات معه ، ايضاً يمكنك نقل التطبيق بعد عمل setup له مباشرة كونه لا يتعامل مع أي شيء يخص النظام .
ملفات الاسمبلي الافتراضية او ال dll التي تقوم بعملها هي من هذا النوع .
Shared Assemblies
هذا هو النوع الثاني ، هنا لن تكون وحدك من يستخدم ملف ال dll هذا ، بل إن بإمكان الملف التعامل مع اكثر من تطبيق على نفس الجهاز ، مثلاً System.Windows.Forms.dl ، عادة ما تجدها في ملف الاسمبلي الموجود في الويندوز ولا يتم حذفها مع حذف برنامجك .
اول نقطة ستتعامل معها لإنشاء ملف اسمبلي من هذا النوع هو ضرورة وجود اسم uniqe لهذا الملف حتى لا يتضارب مع باقي الملفات الأخرى ، أيام ال COM كان هناك ما يعرف باسم COM globally unique identifier (GUID) ، حيث يتم اعطاء اسماء مختلفة لكل COM جديد ، الآن اصبح عليك اعطاءه ما يعرف باسم strong name والذي لا يعدو كونه 128 بت من الارقام تشترك المكونات التالية في تحديده :
- اسم ملف الاسمبلي .
- نسخة ملف الاسمبلي .
- public key value الموجودة في AssemblyKeyFile .
- في حالة وجود اي اعدادت اقليمية في AssemblyCulture .
- digital signature يتم تكوينه باستخدام hash بين محتويات ملف الاسمبلي وال public key .
لعمل public key نستخدم البرنامج SDK’s sn.exe بالشكل التالي مثلاً :
sn -k MyTestKeyPair.snk
يمكنك ايضاً عمل ذلك مباشرة من خلال فيجوال ستوديو.نت من خلال Properties page ثم Signing .
*** لم اقم بتجربة محتويات هذا الدرس لذا من يجد خطأ اتمنى منه ابلاغي به .
السلام عليكم ورحمة الله وبركاته .
موعدنا هذه الفترة مع ال .net assemblies ، لن نطيل فيها كثيراً ولكننا سنعرف النقاط الاساسية فيها فيما يمكنك الاطلاع على المزيد عنها من خلال msdn
ال namespace .
في نفس ال namespace يمكن لجميع المكونات تحته ان ترى بعضها البعض ، لذا دوماً وفي مشاريعك الجديدة اجعل namespace موحد لجميع مكونات برنامجك .
C#:
namespace example
{
class someclass
{
void method(){
}
}
}
vb.net:
Namespace example
Class someclass
Private Sub method()
End Sub
End Class
End Namespace
أما لو كان لدينا كلاس classCar في namespace باسم آخر ، فلن يمكنك كتابة الكود التالي ضمن الدالة السابقة method
C#:
void method(){
classCar x=new classCar();
}
vb.net:
Private Sub method()
Dim x As New classCar()
End Sub
لكن يمكننا عمل import لل example لتتمكن من تعريف الكلاس بالشكل التالي :
C#:
using example;
namespace example
{
class someclass
{
void method(){
}
classCar x=new classCar();
}
}
vb.net:
Imports example
Namespace example
Class someclass
Private Sub method()
End Sub
Private x As New classCar()
End Class
End Namespace
تغيير ال Default Namespace :
لتغيير مجال الاسماء الافتراضي :
http://vb4arab.com/vb/uploaded/3/01208907478.jpg
Format of a .NET Assembly
إذا قمت بفتح ملف الاسمبلي ب dumpbin.exe مثلاً يمكنك ان تلاحظ أن مكلف الاسمبلي يتكون من العناصر التالية :
Win32 file header
هنا ستجد معلومات عن نوع هذا الملف ، هل هو console ام GUI ام dll وكيفية تنفيذه على نظم التشغيل من ويندوز
CLR file header
يحتوي على المعلومات التي لا بد لأي .net application ان يدعمها ، يحتوي على طريقة كتابة ال managed file ووجود ال resources من عدمه وخلافه .
لا تهمك كثيراً المعلومات السابقة للنقطتين السابقتين ، لإنك لن تتعامل معها سوى إذا ما كنت تحتاج لبناء كومبايلر خاص بك تحت بيئة عمل .net .
CIL code
الكود الخاص ببرنامجك ، يتم ترجمته فوراً باستخدام JIT التي تحدثنا عنها سابقاً ، سيكون عنها درس مستقل إن شاء الله .
Type ****data
تحتوي على تفاصيل الانواع الخارجية التي تستخدمها في برنامجك .
An assembly manifest
الرابط بين ملفات الاسمبلي المختلفة ، تحدد اصدار الاسمبلي وخلافه .
Optional embedded resources
اي ملف اسمبلي يمكن ان يحتوي على اي عدد من ملفات الريسورس تشير إلى صور وايقونات وخلافه .
Private Assemblies
ال Private Assemblies ملف اسمبلي يعمل من خلال مسار البرنامج او التطبيق ، حيث لن يبحث ال visual studio عن هذا الملف سواء في الريجستري او في أي مكان آخر ، فقط سيبحث في مسار البرنامج عنه .
في حالة حذف برنامجك يتم حذف هذه الملفات معه ، ايضاً يمكنك نقل التطبيق بعد عمل setup له مباشرة كونه لا يتعامل مع أي شيء يخص النظام .
ملفات الاسمبلي الافتراضية او ال dll التي تقوم بعملها هي من هذا النوع .
Shared Assemblies
هذا هو النوع الثاني ، هنا لن تكون وحدك من يستخدم ملف ال dll هذا ، بل إن بإمكان الملف التعامل مع اكثر من تطبيق على نفس الجهاز ، مثلاً System.Windows.Forms.dl ، عادة ما تجدها في ملف الاسمبلي الموجود في الويندوز ولا يتم حذفها مع حذف برنامجك .
اول نقطة ستتعامل معها لإنشاء ملف اسمبلي من هذا النوع هو ضرورة وجود اسم uniqe لهذا الملف حتى لا يتضارب مع باقي الملفات الأخرى ، أيام ال COM كان هناك ما يعرف باسم COM globally unique identifier (GUID) ، حيث يتم اعطاء اسماء مختلفة لكل COM جديد ، الآن اصبح عليك اعطاءه ما يعرف باسم strong name والذي لا يعدو كونه 128 بت من الارقام تشترك المكونات التالية في تحديده :
- اسم ملف الاسمبلي .
- نسخة ملف الاسمبلي .
- public key value الموجودة في AssemblyKeyFile .
- في حالة وجود اي اعدادت اقليمية في AssemblyCulture .
- digital signature يتم تكوينه باستخدام hash بين محتويات ملف الاسمبلي وال public key .
لعمل public key نستخدم البرنامج SDK’s sn.exe بالشكل التالي مثلاً :
sn -k MyTestKeyPair.snk
يمكنك ايضاً عمل ذلك مباشرة من خلال فيجوال ستوديو.نت من خلال Properties page ثم Signing .
*** لم اقم بتجربة محتويات هذا الدرس لذا من يجد خطأ اتمنى منه ابلاغي به .