WPF چیست ؟

یکشنبه 24 شهریور 1392

WPF چیست ؟ <br/> اما حالا WPF یا Windows Presentation Foundation آمده تا همه چیز را عوض کند. مدلی که WPF برای مدیریت منابع سیستم و اجزای رابط کاربری از آن تبعیت می کند

WPF چیست ؟

 

در اولین روز هایی که تکنولوژی dot net پدیدار شد، مایکروسافت به طور ناگهانی طیف کاملی از فناوری های جدید را معرفی کرد. یک راه کامل برای نوشتن اپلیکیشن های وب وجود داشت (ASP.NET) ، یک راه کامل برای وصل شدن به انواع دیتابیس ها (ADO.NET)، دوزبان برنامه نویسی جدید(VB.NET & C#) و یک ابزار مدیریتی برای رانتایم. در میان این تکنولوژی ها، هنوز یک فناوری قدیمی وجود داشت و آن چیزی نبود جز Windows Forms که یک ابزار ساخت اینترفیس برای اپلیکیشن های ویندوز است که به عنوان یک فناوری ساخت اینترفیس برای روزگار ما، می توان آن را عقب افتاده دانست! اما با پدید آمدن WPF ورق برگشت و بازی عوض شد.

 

WPF یک تکنولوژی جدید ساخت و اجرای اینترفیس در برنامه های جدید ویندوز است که اولین بار با .net فریم ورک 3.5 و در ویندوز ویستا ارائه شد. اما حالا با نسخه 4 خود و به کمک ویندوز 7، آمده تا بازی را عوض کند. همين حالا هم نرم افزار هايي نظير فایرفاکس 4، اینترنت اکسپلورر 9 و ... از WPF براي ساخت اينترفيس هایشان استفاده مي نمایند. پس اگر شما هم به عنوان یک "توسعه دهنده" یا یک "کاربر علاقه مند به دانستن مبانی تکنولوژی های مختلف"؛ دوست دارید که به طور کاملی با قابلیت ها و امکانات مختلف WPF آشنا شوید؛ این مطلب مناسب شماست. پس آن را از دست ندهید.

اگر چه ویندوز فرم یک ابزار بزرگ و پرقابلیت است، تغییرات ضروری ای را که باید در سیستم ارتباط با سخت افزار خود اعمال می کرد؛ اعمال نکرده است و به طور کلی می توان آن را ابزاری دانست که در طی ده سال گذشته، دستخوش تغییر اساسی خاصی نشده. ویندوز فرم برای ساختن یک ظاهر بصری و یا استفاده از عناصر استاندارد رابط کاربری ویندوز – مانند : Button , Textbox , Checkbox – به طور قابل ملاحظه ای، متکی به API های کلاسیک ویندوز است. همین مساله در عمل باعث می شود که سفارشی سازی به طور بسیار ناقصی در اجزای رابط کاربری اعمال گردد. به طور کلی ویندوز فرم نمی تواند قابلیت های ترسیمی مدرن و پیشرفته را در اختیار شما قرار دهد و به محض این که کمی آن را از نظر عناصر گرافیکی غنی کنید؛ آنچنان کند و سنگین می شود که از کارتان منصرف می گردید.
اما حالا WPF یا Windows Presentation Foundation آمده تا همه چیز را عوض کند. مدلی که WPF برای مدیریت منابع سیستم و اجزای رابط کاربری از آن تبعیت می کند؛ کاملا با ویندوز فرم متفاوت است. در همین حال WPF شامل کنترل های استانداردی است که در ویندوز فرم هم دیده می شدند. پس علاوه بر امکانات قبلی، توسعه دهندگان می توانند به قابلیت های ترسیمی کاملا مدرن با استفاده از دایرکت ایکس دست پیدا کنند و به طور کلی یک ظاهر کاملا مدرن را برای برنامه های خود بسازند. نکته دیگر این است که در WPF، زیبایی در عین سرعت به کار برده شده است.

 

 
پایه و اساس WPF، زیر بنا و ساختار قدرتمندی است که بر اساس DirectX ساخته شده. API های شتاب دهنده گرافیک سخت افزاری که در بازی های کامپپیوتری هم استفاده گسترده ای دارد. معنی اش آن است که شما می توانید از افکت های گرافیکی غنی ای استفاده کنید. بدون آن که نگران کاهش عملکرد و فشار آمدن زیاد به پردازنده شوید. چرا که تمام این افکت ها روی پردازنده گرافیکی پردازش می شوند و GPU ها هم به دلیل معماری موازی در ساختارشان؛ بسیار سریع تر از پردازنده ها به شمار می روند. این همان نقطه ضعف بزرگ ویندوز فرم در برابر WPF می باشد.
 
در واقع شما می توانید حتی از قابلیت های پیشرفته تری هم استفاده کنید. مانند پشتیبانی از فایل های ویدئویی و محتوای سه بعدی! با استفاده از این قابلیت ها (و یک ابزار خوب برای طراحی) قادر خواهید بود که رابط های کاربری و افکت های بصری بسیار چشم نوازی بسازید. در حالی که هیچ کدام از این کار ها برای ویندوز فرم ممکن نبود.
 
 
در این میان، ویدئو ها – انیمیشن ها و امکانات 3 بعدی، توجه بیشتری را در WPF می طلبند. این مهم است که در یاد داشته باشید که شما می توانید از WPF برای ساخت ویندوز اپلیکیشن های عادی با کنترل های استاندارد و افکت های پیش فرض استفاده کنید. در واقع استفاده از کنترل های متداول ویندوز، به همان سادگی ویندوز فرم است. حتی بهتر از این، باید بدانید که WPF برای برنامه های تجاری، سازگاری بیشتری نسبت به ویندوز فرم دارد. یک سری از کلاس های مختلف هم برای محتوای پرینت شده و مدیریت صف های پرینت به وجود آمده اند که بسیار بهتر از نمونه های مشابه در ویندوز فرم هستند. در نهایت هم به امکانات جدیدی می رسیم که در پرونده ها به کار گرفته می شود و به وسیله این امکانات می توانید مقدارهای بزرگی از متن های با فرمت های مختلف را نمایش دهید. برنامه های کاربردی مبتنی بر وب هم، در WPF فضای باز تری برای زندگی دارند. اپلیکیشن های صفحه ای می توانند به طور یک پارچه با Intenet Exploler هماهنگ شوند و یا از یک وب سایت به طور مستقیم اجرا شوند. همه این ها بدون هشدار های امنیتی متداول و آزار دهنده؛ و در عین حال با امنیت کامل اجرا خواهند شد! البته امکان اجرای آن ها روی نسخه های جدید فایر فاکس هم محیاست.


- مواد لازم برای استفاده از WPF
 
 
حالا باید به این سوال پاسخ دهیم که برای استفاده از WPF و همچنین توسعه دادن اپلیکیشن ها بر مبنای آن، به چه چیز هایی نیاز داریم؟ برای اجرای یک برنامه ی WPF، کامپیوتر شما باید مجهز به یکی از نسخه های ویندوز 7، ویستا یا XP Service Pack 2 باشد. همچنین به نسخه چهارم فریم ورک دات نت هم نیاز دارید. برای ساخت یک اپلیکیشن WPF 4 به نرم افزار Visual Studio 2010 نیاز دارید که .NET Framework 4 را هم داشته باشد.
 
WPF Tiers
کارت های گرافیک به طور قابل توجهی با یک دیگر فرق دارند. زمانی که WPF یک کارت گرافیک را ارزیابی می کند؛ و این کار را با در نظر گرفتن تعدادی از فاکتور ها انجام می دهد. مانند: مقدار حافظه رم کارت گرافیک، پشتیبانی از سایه زن های پیکسلی یا Pixel Shader (روال های داخلی کارت گرافیک که افکت هایی مثل شفافیت و ... را در هر پیکسل محاسبه و پردازش می کنند.) و همچنین سایه زن های راس ها یا Vertex Shader (روال های داخلی کارت گرافیک که مقادیر رئوس مثلث را محاسبه کرده و سایه زنی را بر حسب آن ها انجام می دهند)
 
بر مبنای این اطلاعات، WPF یک امتیاز بین 0 تا 2 به قدرت رندرینگ کارت گرافیک می دهد که شرح آن ها در زیر آمده است:
 
• Rendering Tier 0: کارت گرافیک هیچ شتاب دهنده ی سخت افزاری را ارائه نمی دهد و نسخه پشتیبانی شده دایرکت ایکس در آن، پایین تر از هفت است.

• Rendering Tier 1: کارت گرافیکی می تواند شتاب دهنده سخت افزاری را به طور نسبی ارائه کند. یعنی ورژن دایرکت ایکس پشتیبانی شده در آن بین 7 تا 9 است.

• Rendering Tier 2: از تمام قابلیت های شتاب دهنده سخت افزاری پشتیبانی می نماید. ورژن دایرکت ایکس پشتیبانی شده هم 9 یا بیشتر از آن است.
 
برخی اوقات شما ممکن است نیاز به بررسی قدرت رندرینگ کارت گرافیک داشته باشید. در این صورت شما می توانید به طور انتخابی، فعالیت های شدید گرافیکی را روی کارت های کم قدرت تر، غیر فعال نمایید. اما به علت جلوگیری از پیچیده شدن بیش از حد مطلب، وارد بحث های برنامه نویسی نخواهیم شد. پس منتظر شرح چگونگی انجام این کار نباشید. (اگر این برای شما مساله بسیار مهمی است، می توانید به من ایمیل بزنید) اما اگر هر اطلاعات بیشتری از درجه بندی های کارت های گرافیک نیاز داشتید، می توانید به این آدرس مراجعه نمایید.
 
- WPF: یک API سطح بالاتر
اگر تنها چیزی که WPF ارائه می داد یک شتاب دهنده سخت افزاری خوب از طریق دایرکت ایکس بود؛ تبدیل به یک بهبود قانع کننده در رابط کاربری ویندوز می شد. اما به هر حال درآن صورت نمی توانستیم این تکنولوژی را انقلابی بنامیم. اما خوشبختانه WPF یک سبد از انواع سرویس های سطح بالا را با خود به همراه دارد که برای برنامه نویسان بسیار به درد بخور هستند. لیست زیر مهم ترین ویژگی هایی را که WPF با خود و با هدف تغییر، به دنیای برنامه نویسی ویندوز آورده نشان می دهد. پس مطالعه آن را فراموش نکنید:

• مدل طرح بندی شبیه به وب: به جای ثابت کردن کنترل ها در محل هایی با مختصات ثابت، WPF روی طرح بندی روان و انعطاف پذیری تاکید دارد که کنترل ها را بر اساس محتوای آن ها رده بندی و تنظیم کند. نتیجه کار پدید آمدن یک رابط کاربری است که می تواند به طور کاملا بهینه خود را با نحوه های نمایش گوناگون و رزولوشن های مختلف تطبیق دهد و از زبان های مختلفی نیز پشتیبانی کند.

• مدل ترسیمی غنی: WPF به جای کار کردن با پیکسل ها و وادار کردن کارت گرافیکی به پردازش پیکسل به پیکسل؛ ترکیبی از شکل های هندسی اولیه را به صورت وکتور، به پردازنده گرافیکی می دهد. یعنی اشکال پایه، بلوک های متنی و سایر موارد تشکیل دهنده گرافیکی. همچنین شما به قابلیت های جدیدی دست پیدا خواهید کرد. مانند کنترل واقعی میزان شفافیت، قابلیت دسته بندی کردن لایه های چند گانه با شفافیت های مختلف و پشتیبانی بومی از اشکال سه بعدی.

• مدل متنی غنی تر: بعد از سال ها استفاده از مدل های معمولی و ساده ی متنی، حالا WPF امکان استفاده از مدل های متنی غنی و شکل دار را در هر کجای رابط کاربری فراهم کرده است. حتی می توانید متن را با لیست ها، حالت های نمایشی شناور و سایر اجزای رابط کاربری مخلوط کنید. اگر نیاز به نمایش مقادیر زیادی از متن دارید، می توانید از امکانات پیشرفته نمایش پرونده استفاده کنید. مانند ستون بندی، سطر بندی و Justify (هم سو کردن عمودی متن ها از هر دو جهت در پاراگراف ها) کردن متن ها به منظور نمایش بهتر.

• پشتیبانی عالی از انیمیشن، به عنوان یک مفهوم از برنامه نویسی: در WPF، نیازی نیست برای وادار کردن یک فرم بری تغییر دادن خودش و یا انیمیشن سازی، به تایمر متوسل شوید. به جای آن، انیمیشن به عنوان یک خصلت ذاتی در فریم ورک گنجانده شده است. شما می توانید با استفاده از برچسب های اعلانی (Declarative Tags) ، انیمیشن را تعریف کنید و به اجرا در آوردن آن را به عهده خود WPF بسپارید.

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

• قابلیت استفاده از قالب ها و سَبک ها: سَبک ها اجازه استاندارد کردن قالب بندی برنامه و استفاده ی دوباره از آن در جای جای اپلیکیشن را می دهند. قالب ها هم به شما اجازه می دهند که خواص رندر سازی هر عنصری را که خواستید تغییر دهید. حتی کنترل های هسته ای ویندوز مانند Button ها. ساختن اینترفیس های مدرن در برنامه ها، هیچ گاه تا این حد آسان نبوده است.

• دستورات (Commands): بسیاری از کاربران به این نکته پی بردند که بین این که (برای مثال) فرمان Open را در منو بگذارند یا در نوار ابزار، فرقی وجود ندارد و نتیجه هر دو یکسان است. اما مساله این جا بود که برای پدید آوردن چند راه مختلف برای انجام یک کار واحد، می بایست کد نویسی بیشتری انجام می دادید. (البته امکان نسبت دادن یک سابروتین به چند کنترل مختلف هم وجود داشت اما با محدودیت و پیچیدگی رو به رو بود.) اما حالا WPF این امکان را به وجود آورده که یک دستور را در یک قسمت تعریف کنید و آن را به کنترل های دیگر لینک نمایید. به این صورت کار ها بسیار راحت تر خواهد شد.

• رابط کاربری اعلانی: اگر چه شما قادر خواهید بود که یک پنجره WPF را با کد نویسی کلاسیک درست کنید؛ اما ویژوال استدیو، اکنون راهی متفاوت را برای این کار در اختیار شما قرار می دهد. با سریال بندی هر محتوای خاص از یک پنجره در یک سری از تگ های XML، پرونده های XAML پدید آمده اند! مزیت XAML این است که رابط کاربری را به طور کامل از کد نویسی جدا می نماید. با این قابلیت، طراحان گرافیکی می توانند از ابزار های حرفه ای برای ویرایش فایل های XAML استفاده نمایند و خودشان مستقلا بخش ظاهری نرم افزار را طراحی نمایند. (یاد گرفتن XAML کار سختی نیست و با کمی مطالعه می توانید آن را یاد بگیرید. این زبان، در ساختار شباهت زیادی با زبان HTML دارد.)

• اپلیکیشن های مبتنی بر صفحه: با استفاده از WPF می توانید اپلیکیشن هایی مانند مرورگر ها را بسازید. اپلیکیشن هایی که به شما اجازه می دهند در میان مجموعه ای از صفحات گردش کنید. در ضمن امکان استفاده از دکمه های forward و back هم در آن ها وجود دارد. WPF می تواند داده ها را در قالب History صفحه مدیریت کند و شما حتی می توانید پروژه هایتان را به عنوان یک برنامه مبتنی بر مرورگر بسازید که به طور مستقیم در اینترنت اکسپلولر (یا حتی فایرفاکس) اجرا بشوند!

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WPF
  • 18k بازدید
  • 15 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید