View Full Version : سوال: محدودیت ها و مزایای WPF نسبت به WinForm
Mehdi Naderi
دوشنبه 09 مرداد 1391, 21:03 عصر
سلام
نیاز مبرم به راهنمایی دوستان
1- محدودیت ها و نقاط قوت WPF نسبت به WInForm
2- ایا یک برنامه کاربردی رو میشه بطور کامل با WPF نوشت و از کامپوننت های Windows Form
استفاده نکرد
3- ایا میتوان WinForm و WPF را در یک پروژه با هم استفاده کرد؟
4- چرا با وجود گرافیک بالا و طراحی راحت برنامه های WPF (Microsoft Expression Blend) انطور که باید و شاید از WPF استقبال نمیشه
5- جایگاه WPF در ویندوز 8
6- چرا بیشتر برنامه ها که در ان از کنترلر کینکت مایکروسافت استفاده شده از WPF استفاده میشه و نه WinForm
با تشکر
mze666
دوشنبه 09 مرداد 1391, 21:39 عصر
1) من با هر دوشون کار کردم (هم WPF و هم Win Form) و هیچگونه محدودیتی تا حالا توی WPF ندیدم - نقاط قوت WPF خیلی زیاد هست ولی دو مورد خیلی اصلی داره یکی ظاهر کاربرپسند اون و دیگری Data Binding فوق العادش. (به نظرم محدودیت یعنی خود Win Form!)
2) بله خیلی راحت و یکی از مواردی که WPF به خاطرش ایجاد شد همین بود که مدام برای هر کاری نیاز به Component نداشته باشی. توی WPF خیلی راحت میشه کنترل مخصوص خودتون رو درست کنید.
3) فکر کنم میشه ولی به نظرم اصلاً راه حل خوبی نیست.
4) اتفاقاً از WPF هم خیلی استقبال شده ولی یه چیزی که هست اینه که حجم مطالب WPFیه مقدار زیاده و خیلی ها به همین خاطر سراغش نمیان در حالی که اگر WPF رو یاد بگیرن تازه میفهمن که با Windows Form چه عذابی میکشیدن!
5) WPF و Xaml توی Win 8 هم پشتیبانی میشن (توسعش ادامه پیدا میکنه).
6) نمیدونم!
خیلی از افراد به WPF فقط به چشم ظاهر زیبا نگاه میکنن! در حالی که امکانات WPF خیلی بیشتر از این هست.
نکته دیگه این که میگن با WPF نمیشه برنامه های تجاری و بزرگ (LOB) نوشت که این مورد هم کاملاً اشتباه هستش چون Data Binding قوی WPF کار رو برای نوشتن راحت و سریع این نوع برنامه ها هم خیلی راحت میکنه.
birtemp
سه شنبه 10 مرداد 1391, 04:42 صبح
سلام دوستان عزیز.
من یک لینک برای شما قرار می دم که تو اون مقایسه ای نسبتاً کوتاه بین تکنولوژی wpf و win form انجام شده. تو این مقایسه ، زمان بارگذاری یا لود برنامه و میزان حافظه مصرفی هر دو تکنولوژی با هم مقایسه شده اند.
در ضمن مطالب جالبی در مورد wpf تو این سایت قرار داده میشه. چون یک از اهدف این سایت معرفی امکانات و آموزش هایی از wpf می باشد.
مقایسه تصویری بین WPF و Windows Form – زمان شروع و حافظه (http://www.prolearn-vs.com/wpf-%d9%85%d9%82%d8%a7%db%8c%d8%b3%d9%87-%d8%aa%d8%b5%d9%88%db%8c%d8%b1%db%8c-%d8%a8%db%8c%d9%86-wpf-%d9%88-windows-form-%d8%b2%d9%85%d8%a7%d9%86-%d8%b4%d8%b1%d9%88%d8%b9-%d9%88-%d8%ad%d8%a7%d9%81/)
Amir Oveisi
سه شنبه 10 مرداد 1391, 08:33 صبح
علاوه بر این که سیستم Rendering در WPF از Direct X استفاده می کنه (Win Fromها از GDI+ استفاده می کنند)، باید گفت که ساختار WPF App ها کاملا متفاوت است. از سیستم Property ها بگیرید تا سیستم Event ها، کنترل ها، Binding ها، Style ها، Template ها، Validation ها، Command ها، Animation ها، StoryBoard ها و ... همشون مفاهیم جدیدی هستند که تو WPF وجود دارند.
از هر زاویه که در نظر بگیرید WPF App ها گوی سبقت را به سادگی از Win Form ها خواهند ربود. البته یک نکته وجود داره که Minimum System Requirement های WPF App ها مقداری بالاتر از Win App هاست که البته این موضوع هم با توجه به پیشرفت سخت افزارها منجر به مشکل نخواهد شد.
مهدی فرزاد
سه شنبه 10 مرداد 1391, 09:45 صبح
سلام
تمام موارد و امکانات و قابلیت های WPF درصورتی برتری محسوب میشود که شما برای نوشتن برنامه های wpf به سبک Win_app برنامه ننویسید چه از لحاظ برقرای ارتباط با دیتابیس چه استفاده از کنترل ها و چیدمان اونها و خاصیت های آنها و ...
در غیر این صورت توفیقی حاصل نخواهید کرد
hakim22
چهارشنبه 11 مرداد 1391, 18:55 عصر
مشکل اصلی WPF بالاتر رفتن زمان طراحی فرمها و اینترفیس برنامه است. درسته که ایجاد کامپوننت راحته اما اینجور کارها وقت گیره.
واقعا برنامه ای که مینویسید باید نیاز به محیط گرافیکی خوبی داشته باشه که بیایید و از WPF استفاده کنید. مزایاش خیلی زیاده و یعنی بیش از حد زیاده و به جرعت میگم خود VS و Blend هم نتونستن محیط برنامه نویسی کاملی براش درست کنند. در واقع منوها و ابزار گنجایش این همه قابلیت رو نداره هنوز .
اینترفیس خوب رو فقط میشه با Blend ساخت و کد خوب رو هم فقط میشه با VS نوشت. این یعنی شما باید در استفاده از هر دو نرم افزار مسلط بشید
نمیشه همینجوری شروع کرد و کنترل روی کنترل کذاشت. برای خیلی از فرمهای پر کردن اطلاعات دیتابیسی باید زحمت بکشید که یک فرم ساده در WPF ایجاد کنید.
اما بعدش Binding به کمکتون میاد و خیلی از زحمات معمول کد نویسی توی Win form رو حذف می کنه.
Mehdi Naderi
جمعه 13 مرداد 1391, 03:26 صبح
ویندوز 8 باعث مطرح شدن XAML در دنیای برنامه نویسی مایکروسافت میشه و خود WPF هم در طراحی خود از XAML بهره میگیره
با ابن وجود برخی برنامه نوسیان WPF صحبت از کمرنگ شدن نقش WPF و سیلورلایت در ویندوز 8 میکنند و بابت این امر مایکروسافت رو سرزنش میکنند علت این نگرانی آنها چیه ؟
Amir Oveisi
شنبه 14 مرداد 1391, 01:54 صبح
شایعاتی بوده که به نظر من دیگه بی معنی هستند.
همه نگران بودند که مایکروسافت چرا تو نسخه 5 expression blend پروژه های wpf رو قرار نداده و پیش بینی می کردن که قراره مایکروسافت دیگه توسعه اش نده. اما با قرار دادن همه قابلیت های expression blend در خود visual studio 2012 و توسعه wpf library تو دات نت 4.5 مطمعن باشید که چنین اتفاقی نخواهد افتاد.
به وجود اومدن metro style به عنوان نسل جدید برنامه های مایکروسافت بیشتر دلیل جذب برنامه نویس های غیر مایکروسافتی بوده تا تغییر مسیر برنامه نویس های فعلی مایکروسافتی. به همین دلیل هم هست که امکان ساخت metro style ها با استفاده از ابزار های غیر مایکروسافتی (مثل html و css و js) وجود داره.
در واقع metro style قراره که در عرض تکنولوژی های فعلی قرار بگیره و عامل حذف بقیه نمیتونه باشه به هیچ وجه. (اصلا ماهیتش هم یه جوری هست که ذاتا نمیتونه جای بقیه رو بگیره)
موفق باشید.
Amir Oveisi
شنبه 14 مرداد 1391, 02:03 صبح
مشکل اصلی WPF بالاتر رفتن زمان طراحی فرمها و اینترفیس برنامه است. درسته که ایجاد کامپوننت راحته اما اینجور کارها وقت گیره.
واقعا برنامه ای که مینویسید باید نیاز به محیط گرافیکی خوبی داشته باشه که بیایید و از WPF استفاده کنید. مزایاش خیلی زیاده و یعنی بیش از حد زیاده و به جرعت میگم خود VS و Blend هم نتونستن محیط برنامه نویسی کاملی براش درست کنند. در واقع منوها و ابزار گنجایش این همه قابلیت رو نداره هنوز .
اینترفیس خوب رو فقط میشه با Blend ساخت و کد خوب رو هم فقط میشه با VS نوشت.
با این بخش از حرفاتون مخالفم. قابلیت های گرافیکی برای ساخت ظاهر برنامه تنها بخش کوچکی از قابلیت های WPF App ها محسوب میشه. یعنی حتی اگر شما به ظاهر کاربری در حد win app های ساده هم بسنده می کنید، دلیل نمیشه که از WPF استفاده نکنید.
در مورد زمان بر بودن ساخت ظاهر کاربری با WPF هم باید بگم که همش به خاطر این بوده شاید که مفاهیم جدیدی توش وجود داره و برای کسانی که تازه شروع می کنند زمان بر جلوه می کنه. ولی مطمئن باشید بعد از مدتی خیلی سریع تر خواهد براتون. در ضمن شما فقط به ساخت ظاهر برنامه برای اولین بار فکر نکنید، به یک پروژه بزرگ نگاه کنید که ممکنه پس از یک بار ساخته شدن، چندین بار دچار تغییر و تحول بشه. اون وقت خواهید دید که اعمال این تغییرات تو WPF App چقدر سریع تر از یک win app خواهد بود.
در مورد اینکه ظاهر خوب رو فقط میشه با expression blend ایجاد کرد و کد خوب رو فقط میشه با vs نوشت کاملا مخالفم! این امر کاملا بستگی داره به فرد، سلیقه اش و میزان حرفه ای بودنش. بعضی های ممکنه کد زدن با notepad (هم xaml و هم cs) براشون راحت تر و جذاب تر باشه. بعضی ها ممکنه همه کدهای Xaml رو دستی کد بزنن (و مطمئن باشید وقتی راه بیفتید این راه خیلی سریع تر از کار کردن با expression blend هست). و بعضی ها هم ممکنه راحت باشند که همه کار ها رو با Expression blend انجام بدن.
homan1374
شنبه 14 مرداد 1391, 23:26 عصر
به عنوان یک برنامه نویس که از سال 2008 تا به حال به Wpf برنامه مینویسم(یعنی از سال ظهور این تکنولوژی)
میتونم بگم wpf معرکست....بزرگترین دلیلی که من از دات نت و سی شارپ به سمت زبون دیگه ای نرفتم همین wpf بوده و هست!
مفاهیم خیلی زیادی داره ولی وقتی یاد بگیرید..برنامه نویسی با استفاده از تکنولوژی wpf رو با هیچی عوض نمیکنید!
PetekDincos
یک شنبه 15 مرداد 1391, 11:05 صبح
به عنوان یک برنامه نویس که از سال 2008 تا به حال به Wpf برنامه مینویسم
با سلام
تکنولوژی WPF برای اولین بار تو کنفرانس PDC 2006 معرفی شد و می توانستید با اضافه کردن Extension هایی با VS 2005 نیز باهاش کار کنید . با تشکر
homan1374
یک شنبه 15 مرداد 1391, 22:24 عصر
ممنون..نمی دونستم
NaserHadi
سه شنبه 17 مرداد 1391, 16:18 عصر
با سلام
دوستان در مورد سوال سوم آقای نادری :1-آیا میتوان WinForm و WPF را در یک پروژه با هم استفاده کرد؟
میشه بیشتر توضیح بدید؟
2-ایا برای برنامه نویسی با wpf یکبار برای همیشه برنامه نویسی با winForm رو کنار گذاشت ؟
3- آیا در پروژه های wpf با زبانهای موجود در net. برنامه نویسی میشه ؟ و انموقع نقش xaml چیه
با تشکر
homan1374
چهارشنبه 18 مرداد 1391, 03:55 صبح
1.بله راهایی وجود داره..ولی به طور کلی توصیه نمیشه و منطقی نیست
2.خیر..این بستگی به خودتون داره
3.بله با یکی از زبون های دات نت برنامه نویسی میشه..نقش xaml طراحی ظاهر برنامست.. مثل HTML/CSS
sia_2007
چهارشنبه 18 مرداد 1391, 11:34 صبح
نقش اصلی تو WPF رو XAML بر عهده داره
الآن دنیا رسیده به جایی که شما با تگ ظاهر برنامه رو طراحی می کنید، حالا چه HTML، چه XAML و ...
چون هم منعطف تر هستش و هم سرعت توسعه بالاتری رو به برنامه نویس می ده، فرض کنید بتونید Tooltip یه کنترل رو به دلخواه طراحی کنید، تو Header یه Tab Item هر چی خواستید نمایش بدید، Combo Box های چند ستونه داشته باشید، با کمترین حجم کد
علاوه بر این، امکاناتی مثل Animation , Effect , Style , Trigger و خیلی امکانات دیگه زیبایی مثال نزدنی رو برای برنامه ایجاد می کنه
همچنین WPF پشتیبانی خیلی بهتری از Object Oriented Programming ارائه می ده
و همچنین شما با یادگیری XAML ، می تونید هم WPF، هم Silverlight، هم Windows Phone 7، هم Windows 8 رو به عنوان سکوهای کاری خودتون انتخاب کنید
در نهایت WPF، پشتیبانی بهتری از Design Pattern داره و به خوبی از MVVM پشتیبانی می کنه، و در نهایت برای DI و AOP و بسیاری کارهای دیگه امکانات ارائه می کنه،
واقعا WPF محشره، به شرطی که درست یاد بگیرید
موفق و پایدار باشید
NaserHadi
چهارشنبه 18 مرداد 1391, 13:17 عصر
با تشکر از پاسخ شما دو دوست عزیز
پس حالا اگه یک پروژه ای که با winApp طراحی شده و تمام شده است رو بخواهیم ظاهرش رو با استفاده از wpf طراحی و اصلاح و کاربر پسند تر کنیم اونموقع راه حل چیه؟
R_Rajaee_Rad
چهارشنبه 18 مرداد 1391, 18:17 عصر
با تشکر از پاسخ شما دو دوست عزیز
پس حالا اگه یک پروژه ای که با winApp طراحی شده و تمام شده است رو بخواهیم ظاهرش رو با استفاده از wpf طراحی و اصلاح و کاربر پسند تر کنیم اونموقع راه حل چیه؟
شما اگر برنامه ات رو با winapp ساختی دیگه برای ظاهرش باید بری سراغ اسکین و اینجور چیزها-نهایتش بتونی با کامپوننت هایی مثل تلریک بیایی مثلا دیتاگرید تون رو عوض کنید
اگر بخوای با wpf برنامه رو زیبا کنی باید از اول بسم الله برنامه تون رو با این تکنولوژی از اول بنویسید!
Amir Oveisi
پنج شنبه 19 مرداد 1391, 09:03 صبح
اگر بخوای با wpf برنامه رو زیبا کنی باید از اول بسم الله برنامه تون رو با این تکنولوژی از اول بنویسید!
نه الزاما!
اگر پروژه win form app ای که هست، به درستی طراحی و پیاده سازی شده باشه، میشه از کلاس های لایه های model و business (شاید با تغییرات خیلی کم) تو پروژه wpf app هم استفاده کرد.
R_Rajaee_Rad
پنج شنبه 19 مرداد 1391, 09:19 صبح
نه الزاما!
اگر پروژه win form app ای که هست، به درستی طراحی و پیاده سازی شده باشه، میشه از کلاس های لایه های model و business (شاید با تغییرات خیلی کم) تو پروژه wpf app هم استفاده کرد.
همیشه یه راه گریزی هست...ولی بهتره در فازهای تحلیل پروژه تکنولوژی ها و ابزارهای ساخت برنامه انتخاب بشن و حتما مورد بررسی قرار بگیرن تا یهو وسط کار یا بعد از اتمام کار به فکر دوباره نویسی یا تغییرات گسترده نباشیم
armsoftpc
پنج شنبه 19 مرداد 1391, 18:03 عصر
سلام
گر پروژه win form app ای که هست، به درستی طراحی و پیاده سازی شده باشه، میشه از کلاس های لایه های model و business (شاید با تغییرات خیلی کم) تو پروژه wpf app هم استفاده کرد.
من متوجه نشدم که چگونه باید این کار را انجام دهیم.
Mehdi Naderi
پنج شنبه 19 مرداد 1391, 20:02 عصر
4- چرا با وجود گرافیک بالا و طراحی راحت برنامه های WPF (Microsoft Expression Blend) انطور که باید و شاید از WPF استقبال نمیشه
5- جایگاه WPF در ویندوز 8
6- چرا بیشتر برنامه ها که در ان از کنترلر کینکت مایکروسافت استفاده شده از WPF استفاده میشه و نه WinForm
با تشکر از دوستان عزیز
لطفا در مورد سه سوال اخر راهنمایی نمائید
sia_2007
پنج شنبه 19 مرداد 1391, 20:56 عصر
4- اغلب پروژه های جدید مبتنی بر #C، که همین الآن دارن تو کشورمون شروع می شوند، با WPF، یا Silverlight هستن
5- WPF در NET. هستش، و NET. توی Windows 8 معمولی پشتیبانی میشه، Windows 8 معمولی همون ویندوزی هستش که شما می خوای روی Laptop، Notebook یا PC تون نصب کنید
یه مدل دیگه از Windows 8 هستش به نام Win-RT که روی پردازنده های ARM کار می کنه، که اون NET. رو ساپورت نمی کنه، کلا خیلی آیتم های دیگه رو هم ساپورت نمی کنه
تو اون شما می تونید با استفاده از XAML برنامه های جدیدی به سبک Metro Style بنویسید
اگه دقت کنید Surface مایکروسافت ( Tablet جدیدش )، دو نسخه داره، که یکی حدودا 600 دلاره، اون یکی 1100 دلار
1100 دلاریه معمولیه، 600 تایی Win RT هستش، مزیت Win RT مبتنی بر ARM بودنش هستش که باعث میشه هزینه سخت افزاریش کمتر باشه، مصرف برقش کمتر باشه، ولی ضعفش اینه که
هر چیزی رو اجرا نمی کنه، از جمله NET. و Silverlight و Photoshop و ...
Amir Oveisi
جمعه 20 مرداد 1391, 09:51 صبح
همیشه یه راه گریزی هست...ولی بهتره در فازهای تحلیل پروژه تکنولوژی ها و ابزارهای ساخت برنامه انتخاب بشن و حتما مورد بررسی قرار بگیرن تا یهو وسط کار یا بعد از اتمام کار به فکر دوباره نویسی یا تغییرات گسترده نباشیم
اصلا نیاز به راه گریز نیست. اصل معماری سه لایه و هدفش اینه که لایه های رو از هم جدا و مستقل کنیم. چرا میخوایم این کار رو بکنیم؟ برای اینکه قابلیت استفاده مجدد از ماژول های داخل برنامه افزایش پیدا کنه و هزینه اعمال تغییرات و توسعه نرم افزار کاهش پیدا کنه.
اگر طراحی و تکنیک ما برای تولید لایه های مدل و business درست و منطبق بر اصل عدم وابستگی به لایه های دیگه باشه، اون موقع میتونیم با هزینه ای کمتر از دوباره نویسی اون ماژول ها تو پروژه جدید، اونا رو بیاریم تو پروژه جدید و تغییرات محدود و کمی رو روشون اعمال کنیم تا با تکنولوژی جدید سازگار بشه.
باز هم تاکید می کنم، معماری چند لایه اینجور جاهاست که به درد می خوره.
NaserHadi
شنبه 21 مرداد 1391, 14:55 عصر
1-آقای اویسی منظورتون از لایه مدل چیه؟ چون برنامه سه لایه معمولا باید مثل شکل زیر باشه؟
91083
2- و نیز اونطور که من فهمیدم اگر در یک برنامه لایه های BusinessLogicLayer و DataAccessLayer درست طراحی و از هم تفکیک بشن در یک پروژه جدید Wpf میتوان به راحتی این دو لایه را انتقال داد و فقط لایه Presentation (یا UserInterface) هست که با یک تکنولوژی دیگه طراحی طراحی میشه آیا درسته؟
NaserHadi
شنبه 21 مرداد 1391, 15:13 عصر
پس اگه من منظور آقای اویسی ر و درست فهمیده باشم با کمترین هزینه میشه یک پروژه WinApp رو به یک پروژه WpfApp تبدیل کرد به شرطی که برنامه بر پایه اصول معماری چند لایه طراحی شده باشه
Amir Oveisi
شنبه 21 مرداد 1391, 16:14 عصر
دقیقا همینطوره.
منظور بنده از لایه مدل، همون مفهوم مدل تو الگوی MVVM هست. در اصل میشه مدلی از موجودیت (Entity) هایی که قراره در لایه Business (یا ViewModel) باهاش کار بشه و تو لایه Presentation (یا View) به کاربر نشون داده بشه.
دیاگرام زیر فکر کنم واضح تر باشه:
http://www.c-sharpcorner.com/UploadFile/nipuntomar/mvvm-in-wpf/Images/MVVM1.gif
NaserHadi
سه شنبه 24 مرداد 1391, 10:54 صبح
یک سوال
آقای اویسی آیا الگو ی زیر برای طراحی یک برنامه چند لایه کافیه یا اینکه نه این الگو تغییر یافته
و اگه ممکنه یک مقایسه هم در مورد الگویی که خودتون برای MVVM فرستادید رو با این الگو ی زیر انجام بدید
با تشکر
91241
NaserHadi
پنج شنبه 26 مرداد 1391, 11:50 صبح
آقای اویسی لطفا در مورد الگوی MVVM و سوال پرسیده شده در پست قبلی کمی صحبت کنید
با تشکر
NaserHadi
جمعه 27 مرداد 1391, 16:42 عصر
با اینکه آقای اویسی مستقیما جواب این سوال رو ندادند ولی من پاسخ این سوال رو در یک تاپیک دیگه و از خود ایشان پیدا کردم که همینجا لینک اونو میذارم
http://barnamenevis.org/showthread.php?354254-MVVM-or-3-layer&highlight=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87+%D9 %86%
با این حال اگه مطلبی مونده باشه لطفا این بحث رو ادامه بدید
va2012
پنج شنبه 02 شهریور 1391, 10:20 صبح
سلام
خوب تا اینجا همه از مزایا و برتری WPF در برابر Win App گفتن. حالا لطفا یکم از معایب WPF بگین. من خودم چند ماهی هست که WPF رو شروع کردم و به قول دوستان یادگیریش زمان خیلی بیشتری میبره و احساس میکنم که یکم هم کار کردن باهاش سخت تره. ( البته شاید با کسب تجربه بیشتر حل بشه)
NaserHadi
دوشنبه 06 شهریور 1391, 16:15 عصر
لینک زیر هم میتونه مفید باشه در مورد معماری MVVM بامثال توضیحات کافی وجود دارد
http://barnamenevis.org/showthread.php?143164-مقالات-آموزشی-و-کاربردی-در-زمینه-WPF
در مورد معایب من هم فکر میکنم که اینطور باشه یادگیریش سخت و زمان بره
Mehdi Naderi
پنج شنبه 09 شهریور 1391, 18:28 عصر
چرا بیشتر برنامه هایی که کنترولر کینکت مایکروسافت در آن استفاده میشه با WPF نوشته میشه؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.