سلام
میخواستم بدونم چطوری میشه wpf و یا mvvm رو در یک پروژه silverlight استفاده کرد اصلا همچین چیزی امکان داره یا اینها خودشون یک پروژه مجزا هستند ؟؟؟؟
هرچند شاید سوال ساده ای باشه اما من نمیدونم
یک لینک یا ...........؟؟؟؟
با تشکر از همه
سلام
میخواستم بدونم چطوری میشه wpf و یا mvvm رو در یک پروژه silverlight استفاده کرد اصلا همچین چیزی امکان داره یا اینها خودشون یک پروژه مجزا هستند ؟؟؟؟
هرچند شاید سوال ساده ای باشه اما من نمیدونم
یک لینک یا ...........؟؟؟؟
با تشکر از همه
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 ارتباطی با لایه بندی نداره.
دوست عزیز، منظور من از لایه بندی نه 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 نیست.
این لینک رو مشاهده کنید، و به این نیم خط توجه کنید :
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 رو میده رو رفرنس نکنید، چون اون کلکی محبوب بیش نیست.
آخرین ویرایش به وسیله sia_2007 : سه شنبه 01 شهریور 1390 در 09:55 صبح
MVVM در win app هم قابل استفاده خواهد بود اگر بستر اون از طرف Microsoft آماده باشه.اگر حرف شما درست باشه ،شما باید بتونید این الگوی کد نویسی MVVM (!) رو توی Win Form هم پیاده سازی کنید ! در حالی که به هیچ وجه امکانپذیر نیست.
به عنوان نمونه مطلبي از كتاب 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 باشه كاملا صحت داره و در ابتدا نام WPF/E، Silverlight بود كه در كنفرانس MIX 2007 به Silverlight تغيير نام يافت. اما اين موضوع به اين معني نيست كه Assembly هاي هر دو اونها يكي باشه. Silverlight ايده اصلي شو از WPF گرفته و ايده اين بود كه WPF رو تحت وب نيز داشته باشند كه به نام Silverlight اين پروژه رقم خورد.و البته توجه کن، Silverlight کوچکتر شده WPF نیست.
براي سند به كتاب 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% تجديد نظر فرموديد
اتفاقا شما موارد بسيار زيادي رو پيدا مي كنيد كه در WPF هست و در Silverlight هم كامل يا بخشي از اون هست.(البته همانطور كه گفتم Assemblyها مجزا هستن)شما هیچ آیتمی رو نمیتونید تو Silverlight پیدا کنید، که تو WPF هم باشه.
WPF با استفاده از CLR در runtime اجرا مي شه و Silverlight با Silverlight(Runtime) كه بايد دقت كنيد كه Silverlight(RunTime) در واقع يك CLR مختصر شده و ويژه سازي شده است.
MVVM نه لايه بندي هست و نه روش كد نويسي به معنايي كه شما تفسير نموديد. در واقع MVVM يك Patternهست و منظور بنده از روش كد نويسي همين Pattern بوده. انكه Win App از اين Pattern پشتيباني نمي كنه مشكل از ذات Win App نيست، ممكنه فردا Microsoft بخواد اين Pattern رو روي Win App معمولي هم پياده سازي كنه.
آخرین ویرایش به وسیله d_derakhshani : پنج شنبه 03 شهریور 1390 در 15:39 عصر