انواع برنامههای WPF
بنا به دلایل مختلفی چندیست درگیر ایجاد برنامه با WPF هستم، به همین دلیل مجبور به مطالعه بر روی این تکنولوژی و موارد مرتبط با آن شدهام. چیزی که در ابتدای کار سردرگمی ایجاد میکند انتخاب از میان انواع مختلف پروژههای WPF است. پس از مطالعه منابع مختلف، موارد زیر حاصل مطالعه من در این زمینه است.
—————————————————————-
این مطلب زیر نظر مجوز GFDL منتشر میشود. و کلیه حقوق آن برای همگان آزاد است، بدین شرط که به کلیه شرایط موجود در مجوز GFDL ( که یک نسخه از متن انگلیسی مجوز GFDL در این محل و یک ترجمه غیر رسمی (فارسی) از متن مجوز GFDL که در مرداد ۱۳۸۳ توسط کاوه رنجبر تهیه شده است در این محل ) قرار دارد پایبند باشد.

GNU Logo
عنوان مطلب : انواع برنامههای WPF
بخش ثانی : ندارد
تاریخ انتشار : 31/02/1387 مطابق با 21/05/2009
شماره نسخه : نسخه یک
نویسنده : ناصر حاجلو
ای-میل نویسنده : n.hajloo@gmail.com
Copyright (c) 2009 Nasser Hajloo.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
—————————————————————-
WPF بطور کلی دو نوع مختلف از پروژه را پشتیبانی میکند، اما این بدین معنی نیست که تنها دو نوع پروژه را میتوان با آن ایجاد کرد! برخلاف آنچه در IDE میبینیم شما قادرید که سه نوع پروژه مختلف را بوسیله WPF ایجاد نمایید.
- Windows Application
- Navigation Application
- XBAP Application (همان WPF Browser Application)
1. Windows Application
این برنامهها از کلاس Window به ارث رفتهاند و آن کلاس نیز از ContentControl به ارث رفته است. این نوع برنامهها تقریبا همان جایگزینهای برنامههای ویندوزی سابق هستند و کاربرد مشابه دارند. نکته مهمی که باید در نظر گرفت آن است که این نوع از برنامهها به تمامی منابع سیستمعامل اعم از سیتم فایل، رجیستری و … دسترسی کامل دارند.
برای ایجاد چنین برنامههایی کافیست که از منوی File بر روی گزینه New>Project کلیک کند و از پنجره باز شده آیتم WPF Application را انتخاب کنید.
نحوه نمایش پنجرهها به دو صورت Show و ShowDialog است که اولی اجازه کار بر روی سایر پنجهها را هم به کاربر میدهد و دومی برای ادامه کار از کاربر درخواست انجام یک عملیات (مثل فشردن دکمه بله و …) را میکند.

WPF Designer
2. Navigation Application
این برنامهها هم مانند Windows Application ها هستند. با این تفاوت که بجای اینکه از کلاس Window به ارث رفته باشند از کلاس Page به ارث رفتهاند. ظاهر این برنامهها مانند برنامههای تحت وب است (چراکه در مرورگر اجرا میشوند) . نکته مهم آن است که این برنامهها هم به تمامی منابع اصلی ویندوز مانند سیستم فایل، رجیستری و … دسترسی دارند.
این برنامهها بطور پیشفرض وقتی ایجاد میشوند توسط NavigationWindow میزبانی میشوند که یکسری امکانات خاص مانند دکمههای back و forward و journal (صفحاتی که دیده شدهاند) را برای کاربر نهایی فراهم کرده است. این برنامهها برای استفاده در Internet Explorer کاملا بهینهسازی و تست شدهاند.
برای ایجاد یک NavigationAplication باید همه مراحلی را که برای ایجاد Windows Application سپری کردید را مجددا سپری کنید.
در انتها باید فایل Window1.Xaml را حذف (delete) کنید و سپس اقدام به اضافه کردن یک آیتم جدید بکنید.
برای اضافه کردن یک آیتم جدید بر روی پروژه کلیکراست کرده و گزینه Add New Item… را انتخاب کنید و از پنجره باز شده، آیتم Page را انتخاب کرده و بر روی OK کلیک کنید.
در فایل App.Xaml مقدار صفت StartupUri را از Window1.Xaml به Page1.Xaml تغییر دهید.
3. XBAP Application (همان WPF Browser Application)
این برنامهها هم خیلی به برنامههای Navigation شباهت دارند. به این معنی که آنها هم از Page Class به ارث رفتهاند. شاید یکی از تفاوتهای اصلی این دو نوع برنامه با هم آن باشد که این برنامهها فایل Installer ندارند به این معنی که نصب نمیشوند و مانند یک وبسایت با آنها برخورد میشود و براحتی یک کلیک کردن در دسترس هستند. و دقیقا به این دلیل که آنها در سیستم نصب نمیشوند، به منابع کاملا محدودی از سیستمعامل دسترسی دارند. آنها نمیتوانند از منابع ویندوز مانند سیستمفایل، رجیستری، پایگاهداده نصب شده در کلاینت و … دسترسی پیدا کنند. این برنامهها با مجوز Internet Zone در Internet Explorer اجرا میشوند. گرچه این امکان وجود دارد که XBAP ها را در یک محیط Full Trust اجرا کرد، اما در این صورت توصیه شده که از Navigation Application ها استفاده شود.
در حالت Standard internet Security محدودیتهای زیر برای برنامههای XBAP وجود دارد.
- محدودیت دسترسی به منابع سیستم (کلاینت) بجز Isolated Storage (پایینتر در این مورد توضیح داده شده)
- دسترسی به رجیستری
- ایجاد stand-alone windows مانند دیالوگ باکسها
- دسترسی به پایگاهداده کلاینت
- استفاده از قابلیت Drag-and-Drop ویندوز
- استفاده از سرویسهای WCF
قابل ذکر است که این برنامهها در Internet Explorer 6.0 به بعد بخوبی اجرا میشوند.
همانطور که قبلا گفته شد این برنامهها به منابع سیستم عامل دسترسی ندارند و اگر بخواهید که فایلی را در سیستم کلاینت بنویسید و یا بخوانید چنین امکانی وجود ندارد. اما یک محیط کاملا ایزوله شده به حجم 512 kilobytes در اختیار برنامهنویسان است که در آن به نوشتن و خواند فایلها بپردازند. این محیط Isolated Storage نام دارد. (در آیندهای نزدیک مقالهای در این ارتباط خواهم نوشت)
برای ایجاد یک XBAP Application از منوی File روی گزینه New>Project کلیک کرده و سپس آیتم WPF Browser Application را انتخاب نمایید.
انتخاب بین انواع مختلف پروژههای WPF
باتوجه به مطالب بالا با درنظر گرفتن نوع ظاهر برنامه (برنامههای با ظاهر قبلی ویندوز، تحت وب بودن و…) و نیز با توجه به نیازمندیهای برنامه (مثلا اینکه باید به منابع سیستم دسترسی داشته باشد یا خیر) میتوان اقدام به انتخاب یکی از این پروژهها کرد.

متشكر – جالب بود.
بنده فكر نميكنم WPF Windows app ها شانس و اقبال بهتري نسبت به برنامه هاي AIR داشته باشند. در واقع نميتوان انتظار داشت كه برنامه نويسان سيستم (كه قشر اصلي توسعه دهندگان Win app هستند) كيفيت، بهينگي و سرعت NativeCode را با زيبايي WPF معامله كنند.
ممنون
خير بنده با نظرشما مخالفم در آينده در اکثر برنامه هاي تحت ويندوز از API هاي WPF استفاده مي شود نمونه آن VS 2010 نسخه beta هستش که البته نسخه کامل اون هم به همين صورت خواهد بود
در ضمن Native Code در برنامه هايي که با NET. نوشته مي شوند معنا ندارد چون تمامي برنامه ها به IL کامپايل شده و توسط CLR اجرا مي شوند يعني برنامه نويسان NET. چه از WPF استفاده کنند و چه نه Native Code ندارند
در ضمن در صورتي که سخت افزار از DirectX 9 به بالا پشتيباني کند با توجه به سوار شدن WPF روي DirectX مي توان بهره بيشتري را از سخت افزار برد