WPF، انقلابی در طراحی رابط های کاربری

Sarp

مدیر بازنشسته
از زمان ظهور دات نت، با اولين نسخه آن يعني دات نت فريم ورک 1.0 که همراه با ويژوال استوديو 2002 همراه بود، تا به امروز که شاهد نسخه 3.5 از اين تکنولوژي مي باشيم، تغييرت بسياري در آن به وجود آمده است. افزوده شدن کلاس هاي جديد در غالب فايل هاي DLL اي که ما آن ها را دات نت اسمبلي مي ناميم، همچنين اضافه شدن تکنولوژي هاي جديد به اين مجموعه باعث گسترش کاربرد اين مجموعه شده است.

همزمان با ظهور نسخه 3.0 دات نت فريم ورک، تکنولوژي هاي جديدي نيز به وجود آمد. اين تکنولوژي ها، که بر خلاف تصور سطحي و ابتدايي بسياري از برنامه نويسان در ابتداي ظهور آن ها، صرفا اضافه شدن تعدادي دات نت اسمبلي به دات نت اسمبلي هاي قبلي، تلقي مي شد، تغييرات بسياري را در امر برنامه نويسي دات نت به وجود آورد. تکنولوژي WPF به همراه تکنولوژي هاي WCF و WWF با نسخه 3.0 دات نت فريم ورک توسط شرکت ماکروسافت معرفي شدند.

WCF
تکنولوژي WCF که مخفف Windows Communication Foundation مي باشد، ترکيب شده تکنولوژي هاي ارتباطي مختلفي که در دات نت فريم ورک 2.0 وجود داشت، مي باشد. در دات نت فريم ورک 2.0 ، تکنولوژي هاي ارتباطي بين سيستم ها عبارت بودند از، ارتباطات بر پايه Soap ، ارتباطات دودويي بهينه شده و... . تکنولوژي WCF که با نام Indigo نيز شناخته مي شود، تمامي جنبه هاي ارتباطي بين سيستم ها را درون خود دارد. جهت مطالعه بيشتر به آدرس Windows Communication Foundation و WCF مراجعه نماييد.

WWF
تکنولوژي WWF که مخفف Windows Workflow Foundation مي باشد و بيشتر به صورت مخفف WF نشان داده مي شود، امکان پياده سازي و حل مسائل پيچيده دنياي پيرامون خود را که در حالت عادي ممکن است حل آن بسيار پيچييده و دشوار به نظر آيد، به صورت بصري و بسيار ساده ارائه مي کند. در کل دو شکل Sequential و State Machine را مي توانيد با WF پياده سازي کنيد. به عنوان نمونه بسيار ساده به راحتي مي توانيد يک دستور چند شرطي را به صورت کاملا انتزاعي و با امکاناتي که براي طراحي آن موجود است، پياده سازي نماييد. به عنوان مثال، نمونه زير، پياده سازي يک دستور چهار شرطي در سيستم WF از نوع Sequential مي باشد.


WPF
WPF سر آغاز سه کلمه Windows Presentation Foundation مي باشد. هر کسي که تا به حال در محيط هاي گرافيکي و يا به اصلاح برنامه نويسان، محيط هاي ويژوال، برنامه نويسي کرده باشد، يقينا با مفاهيم Windows Application ها که گاها به صورت مخفف WinApp نيز ناميده مي شوند، آشنا مي باشد. اين نوع برنامه نويسي همزمان با ورود سيستم عامل هاي ويندوز در دنياي کامپيوتر شروع شد و روز به روز با به وجود آمدن زبان هاي متفاوت جايگاه محبوبتري نزد برنامه نويسان پيدا کرد.

WPF
همانطور که مي دانيد، Windows Application ها، از API هاي سيستم عامل مربوطه ( که اکثرا ويندوز XP نيز مي باشد) براي ترسيم عناصر گرافيکي يا همان عناصر ويژوال، استفده مي کنند. به عنوان مثال براي ترسيم انواع دکمه ها، فرم ها و بسياري از عناصرديگري که با آن ها آشنا هستيد، از توابع API ويندوز کمک گرفته مي شود. همين مسئله باعث ايجاد محدوديت براي برنامه نويسان در ايجاد کنترل هاي سفارشي با ظاهر دلخواه خود شده بود. اگر چه با ابزار هاي گرافيکي که در دات نت فريم ورک 2.0 نيز وجود داشت، مي توانستيم تا حد خوبي اقدام به ايجاد کنترل هاي مورد دلخواه خود را بکنيم، اما اين موضوع نياز به دانستن اطلاعات زياد در مورد ايجاد کنترل هاي سفارشي و همچنين نوشتن گاها کد هاي بسيار زيادي جهت ايجاد کنترل مورد نظر مي بود. اين به آن دليل بود که قالب و اساس اوليه کنترل ها بسته بود و نمي توانستيد به راحتي کنترل ها را شخصي سازي نماييد. در بهترين حالت، يک برنامه نويس ماهر ميتوانست با ارث بري از کلاس Control اقدام به ايجاد يک کنترل جديد با ظاهر و امکانات مورد نظر خود بکند. به عنوان مثال کنترل منوي زير را اخيرا براي شرکتي طراحي کردم. تنها، يکي از کلاس هاي اين منو داراي 1000 خط کد به غير از کدهاي توليد شده توسط خود دات نت مي باشد. شايد 1000 خط، براي يه برنامه نويس بسيار ناچيز باشد. ولي چنانچه بخواهيد تمامي کنترل هاي برنامه هاي خود را، خودتان طراحي کنيد، مي بينيد که زمان زيادي از وقت شما صرف نوشتن کد ها مي گردد.

اين مسئله زماني نمود بيشتري پيدا ميکند که بخواهيد، اکثر جنبه هاي يک کنترل را در کنترل سفارشي خود قرار دهيد. به عنوان مثال به دليل قرار گرفتن حالت هاي مختلف گراديان بر روي منو، استفاده از امکانات قبلي مانند ترسيم متن آيتم به صورت اتوماتيک توسط خود منو و يا ترسيم کليد هاي ميان بر آيتم و .... از بين مي رود و تمامي اين موارد بايستي با کد و توسط شما ايجاد گردد. درست است که مي توان از کنترل هاي ايجاد شده توسط خودتان به کرات و در برنامه هاي مختلف استفاده کنيد ولي تجربه نشان داده است که گاهي نيز مجبور به ايجاد کنترل ديگري شويد. اين به اين دليل نيست که شما الزاما کنترل قبلي خود را خوب طراحي نکرده ايد. عوامل زيادي مي توانند باعث بروز اين مورد شوند که پرداختن به آن ها از حوصله اين بحث خارج است.

معرفي WPF
حال که تا حدودي با مشکلات برنامه نويسي هاي WinApp به روش جاري شديد، در ادامه به معرفي WPF خواهم پرداخت و در ادامه بحث هاي اين آموزش، خواهيد ديد که WPF چگونه بسياري از مشکلات موجود را مرتفع مي کند.
تکنولوژي WPF به روشي ديگر عمل مي کند. در واقع علاوه بر اينکه اين تکنولوژي همچنان داراي کنترل هاي سابقي که آن ها را مي شناسيد، مي باشد، مي تواند دسترسي به بيشتر جنبه هاي کنترل ها را براي شما فراهم کند. در واقع قدرت WPF در اين است که اساس و پايه هر کنترلي مانند برنامه نويسي قبل، بسته نيست و اين شما هستيد که به WPF خواهيد گفت که متن روي کنترل را به چه صورتي طراحي کنيد. يا پس زمينه کنترل يا کناره هاي آن را به آن صورتي که شما مي گئييد طراحي کند. به همين منظور نيز داراي ابزارهاي بسيار زيادي جهت کار براي طراحي کنترل هاي شما مهيا مي کند. ابزارهايي مانند قلم مو هاي گراديان با تعداد رنگ هاي نامحدود، انواع ابزار هاي گرافيکي براي ترسيم شکل دلخواه شما، امکان ايجاد افکت هاي بسيار زيبا و متنوع بر روي هر قسمتي از کنترل که بخواهيد، وجود افکت هاي از پيش تعريف شده، امکان طراحي هاي 2 بعدي و نيز 3 بعدي، امکان ايجاد انيميشن و بسياري از امکانات ديگر که به مرور با آن ها آشنا خواهيد شد.

پايه و اساس WPF بر Directx استوار مي باشد. اين موضوع سبب مي شود که بتوان از بسياري از جنبه هاي گرافيکي بدون ايجاد سربار اضافي بر روي برنامه بهره برد و در واقع برنامه هايي با ظاهر هايي بسازيد که ساختن آن ها با برنامه نويسي هاي پيشين يا غير ممکن و يا متحمل کار بسيار زيادي بوده است. اگرچه نقطه قوت اين تکنولوژي اعمال گرافيکي، انيميشن و .. مي باشد، ولي اين بدان معني نيست که نمي توان با WPF اقدام به ايجاد فرم ها و کنترل هاي سابق نمود. اين تکنولوژي به شما امکان استفاده از کنترل هاي پيشين را مي دهد و همچنين برنامه نويسي WinApp را به همان شکلي که مي شناسيد، براي شما مقدور مي سازد. علاوه بر اين موارد، WPF امکان کار با اسناد متني، کنترل کردن بر روي نحوه Print شدن آن ها و ... را براي شما مهيا مي سازد.
نکته ديگري که در مورد WPF بايد بدان اشاره کرد، امکان برنامه نويسي به شيوه اي است که شايد تاکنون امثال آن را يا نديده ايد و يا بسيار کم ديده ايد و آن هم برنامه نويسي بر اساس عناصري در WPF مي باشد که به آن ها Page مي گويند. اين نوع برنامه نويسي را مي توان به نوعي شبيه سازي برنامه هاي وب نامگذاري کرد. اين نوع برنامه نويسي WPF Browser Application نام دارد که در بخش هاي بعدي تفاوت آن را با برنامه نويسي معمولي WPF خواهيد آموخت. توسط اين مدل برنامه نويسي، مي توانيد اسمبلي هاي ايجاد شده را در مرورگر وب نظير Internet Explorer بدون پيغام هاي امنيتي که معمولا در صفحات وب وجود دارند، نمايش دهيد. به عنوان مثال عکس زير نمونه اي از نحوه استفاده از Page جهت نمايش وب سايت ها در يک برنامه WPF مي باشد.

البته استفاده از امکانات مختلف گرافيکي به مانند آنچه در برنامه هاي WPF امکان پذير است، در برنامه هاي بر پايه صفحه ، امکان پذير نيست. دلايل اين موضوع را در بخش هاي آتي خواهيد دانست.
 
Similar threads

Similar threads