PDA

View Full Version : سوال: wpf , mvvm در silverlight



rahnamafar
پنج شنبه 11 فروردین 1390, 14:13 عصر
سلام

میخواستم بدونم چطوری میشه wpf و یا mvvm رو در یک پروژه silverlight استفاده کرد اصلا همچین چیزی امکان داره یا اینها خودشون یک پروژه مجزا هستند ؟؟؟؟
هرچند شاید سوال ساده ای باشه اما من نمیدونم :متفکر:
یک لینک یا ...........؟؟؟؟
با تشکر از همه

sia_2007
پنج شنبه 11 فروردین 1390, 16:45 عصر
wpf یه فریم ورک برای UI هستش.
MVVM یک جور لایه بندی
Silverlight یه Cross Platform / Cross Browser Plugin هستش.
امکان پیاده سازی MVVM برای WPF و SL و SL for Phone 7 با MVVM Light Toolkit ممکن هستش.
کتاب آقای وحید نصیری در مورد Silverlight 4 رو مطالعه کن؛ PDF ای هست که ایشون به صورت رایگان روی نت قرار داده اند.

d_derakhshani
دوشنبه 31 مرداد 1390, 22:49 عصر
wpf یه فریم ورک برای UI هستش.
MVVM یک جور لایه بندی
Silverlight یه Cross Platform / Cross Browser Plugin هستش.
امکان پیاده سازی MVVM برای WPF و SL و SL for Phone 7 با MVVM Light Toolkit ممکن هستش.
کتاب آقای وحید نصیری در مورد Silverlight 4 رو مطالعه کن؛ PDF ای هست که ایشون به صورت رایگان روی نت قرار داده اند.
WPF رو که تو Silverlight استفاده نمی کنن. Silverlight خود WPF که کوچیک تر شده و تحت وب ه. البته چیزهایی هم هست که تو Silverlight هست که تو wpf نیست و این موارد برای تحت وب بودنشه. MVVM هم در WPF و هم در Silverlight قابل استفاده است. MVVM الگوی برنامه نویسیه مثل MVC و MVP. و MVVM ارتباطی با لایه بندی نداره.

sia_2007
سه شنبه 01 شهریور 1390, 09:38 صبح
دوست عزیز، منظور من از لایه بندی نه Layring متداول ، بلکه مدلی از لایه بندی UI هستش، به صورتی که UI در سه حالت
MVC
MVVM
و یا UI - UIProcess
3 حالت متفاوت پیدا میکند.
و این صرفا فقط الگوی کد زدن نیست، چون الگوی کد زدن با تغییر خودش تو نتیجه تغییری ایجاد نمیکنه، اما این نوع تغییر در لایه بندی، کاملا بر خروجی پروژه تاثیر گذاره
همین امر هستش که یکی رو برای Web محبوبتر ساخته و یکی رو برای Desktop
الگوی کد نویسی، در هر جایی قابل پیاده سازیه، برای مثال استفاده از Interface به عنوان ورودی پارامتر Method ها، برای دستیابی به مزیت های بسیار اون
الگوی کد نویسی، نیاز به Framework و Toolkit نداره، حتی اگه Proxy رو هم در نظر بگیریم، شما میتونید به جای Castle Proxy و Sprign.net و ... ، خودتون کد بزنید ( هر چند احمقانه است ! )، و اگر حرف شما درست باشه ،شما باید بتونید این الگوی کد نویسی MVVM (!) رو توی Win Form هم پیاده سازی کنید ! در حالی که به هیچ وجه امکانپذیر نیست.
همون طور که امکان پیاده سازی MVC توی VB 6 نیست.
این لینک (http://en.wikipedia.org/wiki/Model_View_ViewModel) رو مشاهده کنید، و به این نیم خط توجه کنید :
to better facilitate the separation of View layer
این که شما MVC ، MVVM و یا UI-UIP رو استفاده کنید، دقیقا روی معماری لایه ای تون تاثیر گذاره، در حالی که من هیچ الگوی کد نویسی ای نمیشناسم که بتونه همچین تاثیری بذاره

من نگفتم WPF رو تو Silverlight استفاده میکنند.

و البته توجه کن، Silverlight کوچکتر شده WPF نیست.
WPF یک پوشش Managed روی Direct X مبتنی بر Net Framework. هستش، و Silverlight یک پوشش Managed هم برای Open GL و هم Direct X هستش، که مبتنی بر Runtime خود Silverlight هستش.
شما هیچ آیتمی رو نمیتونید تو Silverlight پیدا کنید، که تو WPF هم باشه.
اون چیزی که شما میبینید، صرفا شباهت اسمی کلاسها، و ساختار طراحی UI که با XAML طراحی میشوند و یکی بودن Design Pattern هاست.
و گرنه در مقیاس پیاده سازی این دو هیچ ربطی به همدیگه ندارند، و هیچ کدوم کوچیک شده اون یکی نیست.
دقیقا مانند این که بگوییم، کد #C ای که توسط Mono Touch میآید و کد های Objective C رو روی iPhone اجرا میکنه، کوچکتر شده NET Framework. هستش، چون جفتشون #C هستن
صرف شباهت IDE مثلا Visual Studio و زبان مثلا #C و UI مثلا XAML ، باعث یکی کردن دو Framework دارای دو Runtime متفاوت نمیشه

موفق باشی


پاورقی : خواهشا به امکان جدیدی که امکان اجرای یک کد رو هم تو SL for Phone 7 و هم SL و هم WPF رو میده رو رفرنس نکنید، چون اون کلکی محبوب بیش نیست.

d_derakhshani
چهارشنبه 02 شهریور 1390, 01:06 صبح
اگر حرف شما درست باشه ،شما باید بتونید این الگوی کد نویسی MVVM (!) رو توی Win Form هم پیاده سازی کنید ! در حالی که به هیچ وجه امکانپذیر نیست.MVVM در win app هم قابل استفاده خواهد بود اگر بستر اون از طرف Microsoft‌ آماده باشه.
به عنوان نمونه مطلبي از كتاب Building.Enterprise.Applications.with.WPF.and.MVVM صفحه 43 ميارم:
MVVM Pros and Cons
First, in the pro column, the MVVM pattern is designed for use with WPF or Silverlight, but
it’s not completely restricted to those technologies; you can implement MVVM in Windows
Forms or with another UI technology as well. However, the power and flexibility of WPF or
Silverlight (including features such as data binding, XAML, data templates, behaviors, and so
on), make MVVM much easier to implement on WPF/Silverlight.
__________________________________________________ ____________
اميدوارم با خوندن مطلب بالا تجديد نظر فرموده باشيد.

و البته توجه کن، Silverlight کوچکتر شده WPF نیست. Silverlight نسخه كوچيك شده WPF باشه كاملا صحت داره و در ابتدا نام WPF/E، Silverlight بود كه در كنفرانس MIX 2007 به Silverlight تغيير نام يافت. اما اين موضوع به اين معني نيست كه Assembly هاي هر دو اونها يكي باشه. Silverlight ايده اصلي شو از WPF گرفته و ايده اين بود كه WPF رو تحت وب نيز داشته باشند كه به نام Silverlight اين پرو‍‍ژه رقم خورد.
براي سند به كتاب Apress Introduction to Silverlight 4 مطلبي مياوريم:
Before the MIX07 conference in March 2007, Silverlight was known by the relatively boring but
descriptive name WPF/E, which stands for Windows Presentation Foundation/Everywhere. While the
details were sparse at the time, the rough goal of the technology was clear: a browser-hosted version of
WPF. Silverlight 1 was unveiled at the conference and would no longer be known as WPF/E. This initial
release of Silverlight 1 did not have CLR or anywhere close to the capabilities provided by Silverlight 2.
نمونه اي ديگر از همين كتاب:
Silverlight 2 is based on Microsoft .NET Framework 3.5.
• As a subset of WPF, the Silverlight user interface framework is based on .NET
Framework 3.5, WPF, and XAML
خوب با مطلب بالا 100% تجديد نظر فرموديد


شما هیچ آیتمی رو نمیتونید تو Silverlight پیدا کنید، که تو WPF هم باشه.
اتفاقا شما موارد بسيار زيادي رو پيدا مي كنيد كه در WPF هست و در Silverlight هم كامل يا بخشي از اون هست.(البته همانطور كه گفتم Assembly‌ها مجزا هستن)
WPF با استفاده از CLR در runtime اجرا مي شه و Silverlight با Silverlight(Runtime) كه بايد دقت كنيد كه Silverlight(RunTime) در واقع يك CLR مختصر شده و ويژه سازي شده است.
MVVM نه لايه بندي هست و نه روش كد نويسي به معنايي كه شما تفسير نموديد. در واقع MVVM يك Pattern‌هست و منظور بنده از روش كد نويسي همين Pattern بوده. انكه Win App از اين Pattern پشتيباني نمي كنه مشكل از ذات Win App نيست، ممكنه فردا Microsoft بخواد اين Pattern رو روي Win App معمولي هم پياده سازي كنه.