Sunday, November 25, 2012

WPF vs Win Form الفرق بين


في غضون السنوات الخمس الماضية قامت شركة Microsoft بتحويل ستراتيجيتها التي أعتبرها بعض المختصين بالعالم البرمجي والتقني بأنها ستراتيجية كلاسيكية وذلك بسبب عدم وجود تطوير كبير يحول قواعد لعبة برمجة التطبيقات التي تعمل تحت منصة .Net فنشاهد استخدام تقنية Windows Form(Win Form) لسنوات طويلة بالرغم من أضافة بعض الخصائص والوظائف بين فترة وأخرى لكن في كل الأحوال مشاكل عانى منها مطوري .Net ومنها :
v      صعوبة فصل الكود البرمجي الداخلي (Code behind) عن كود التصميم .
v      صعوبة استخدام التصاميم والالوان والواجهات وتحويلها الى لغة C# , VB .
v      صعوبة تصميم الواجهات ذات الأبعاد   3D , 2D .
v      غياب لغة قياسية شبيه بلغة HTML , XML لبناء تصميم الواجهات الرسومية (User interface) .
v      عدم وجود بيئة منفصلة للمصمم والمطور .
كل هذه المشاكل تم حلها من خلال أضهار تقنية   Windows Presentation Foundation WPF بحيث تم اصدار أول  نسخة (WPF 3.0) في Nov 2006 , ركزت على توفير نموذج برمجي (programming model) لأجل بناء التطبيق وتزويد فاصل مابين واجهات المستخدم (User interface) والمنطق التجاري (Business logic)  .تعتبر تقنية WPF من التقنيات الحديثة والمرنة بسبب أعتمادها على لغة   Extensible Application Markup Language (XAML) وهي لغة شبيهة بلغة HTML , XML وكان الغرض الرئيسي من خلق هذه اللغة هو عمل تكامل لعمل المطور والمصمم وأحتوائها على الكثير من الخصائص والمميزات.
تطبيقات WPF يمكن ان تكون عبارة عن تطبيقات تنصب على الكمبيوتر الشخصي standalone desktop programs او تضيف على المتصفح  hosted as an embedded object in a website.
الصور التالية توضح الفرق مابين التقنية الكلاسيكية (Win Form) والتقنية الحديثة (WPF) 

تقنية Win Form





نلاحظ من نوافذ تقنية (Win Form) ابتعادها عن الألوان الزاهية أضافة الى تداخل الكثير من الأمور في النافذة الواحدة وافتقارها الى المرونة بسبب اعتمادها على لغة VB, C# في بناء الواجهات الرسومية , وذا رأينا الكود الداخلي للتطبيق سوف نشاهد حجم الكود المكتوب الكبير بسبب عدم فصل الكود البرمجي عن الكود التصميم.النوافذ المببينة اعلاه عبارة عن نوافذ جامدة.

تقنية WPF




من الوهلة الاولى نرى تحول كبير من حيث الألوان الزاهية والأزرار الجميلة والترتيب الأنيق أضافة الى شكل النوافذ وأنطلاقها من دون التأثير على النوافذ المصاحبة, والأهم من هذا هو فصل الكود البرمجي الداخلي(C#/VB) عن الكود التصميم (XAML) مما يقلل من حجم الكود وزيادة كفاءة التطبيق.أضافة الى وجود الكثير من الخصائص التي تتوفر في هذه التقنية ومنها :

Direct3D

Media services

Data binding

 Style and Templates

Animations

Effects

 

 علما اني لم اتطرق عن الفروقات من حيث الخواص والادوات المستخدمة للتقنيتين بل اكتفيت بأضهار الجانب الظاهري واقصد الفرق من حيث  الواجهات الرسومية.            

 


2 comments: