نمایش نتایج 1 تا 22 از 22

نام تاپیک: MVVM or 3 layer

  1. #1
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    MVVM or 3 layer

    سلام....

    می خواستم بگم.. برای طراحی یک پروژه متوسط با Wpf حتما باید MVVM کار کنم یا همون 3 لایه جواب میده؟
    یا معماری های دیگه ای هم هست که میشه استفاده کرد.؟

    فرض کنید که کار گروهی نیست...

    ممنون

  2. #2

    نقل قول: MVVM or 3 layer

    من یک کتاب کامل در مورد مزایای استفاده از MVVM خوندم ( WPF and silverlight MVVM) که 300 صفحه توضیحات داشت و خیلی هم جالب بود.
    بستگی داره که برنامه ات چقدر بزرگه و قرار چند خط کد بنویسی .
    برای برنامه های کوچکتر وسواس بیش از حده و اصلا لایه لایه کردن اذیت میکنه

    لینک دانلود :

    http://p30ton.net/posts91/p9105/ProW...rlightMVVM.rar
    آخرین ویرایش به وسیله hakim22 : چهارشنبه 11 مرداد 1391 در 16:57 عصر

  3. #3
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    ممنون ...

    شما چقدر به MVVM مسلط هستید؟ و چقدر طول کشید که بتونید باهاش کار کنید؟

  4. #4

    نقل قول: MVVM or 3 layer

    اولا بگم که MVVM یک تکنیک یا مدل برنامه نویسیه و اصلا مجزا از کدهایی که تا حالا نوشتید نیست.
    من اطلاعاتم مربوط میشه به پروژه هایی که بر مبنای آموزشهای همین کتابها نوشتم.
    در کل Model - View - ViewModel یک سری قانون به شما معرفی می کنه که باید کدهایی که می نویسید با رعایت اونها انجام بشه .
    اجرای این قانونها یک سری مزایا داره و پروژه ی شما رو به یک مدل شناخته شده تبدیل می کنه که استاندارده و هر جا ببرید قابل ارائه است ولی چیزی مثل ASP MVM نیست که کلا مجزا باشه . اصلا در آموزشها به شما می گن دستی سه نوع پروژه بسازید که دوتاش Library هست و سومیش EXE که فضای View میشه و اون Plug IN هم چیزی جز یک ماکروی VS نیست که سه تا پروژه در یک Solution درست می کنه و بعد یه هم لینک میده .
    خود نویسنده کتابها تاکید می کنه که در خیلی از موارد دولایه ی Model و VIew کفایت میکنه و خیلی وقت صرف لایه دیگه ViewModel lنکنیم مگر اینکه واقعا حجم کد بالا و برنامه سنگین باشه.

    قانونها شامل نحوه ساختن متدها و توابع میشه و اینکهپارامترهای ورودی و خروجی چگونه باشه که برنامه از حالت Cycling در بیاد ( اگر در VS یک Code metrics بگیرید به شما میگه که هر قسمت از کد شما چقد cycling داره)
    cycling در حقیقت حالتیه که توابع شما به هم وابسته می شوند. در حالی که در روش MVVM توابع و متد های باید مثل واگن های قطار باشند و هیچ اشتراکی نداشته باشند. همه ی متغیرهاشون خصوصی باشه و مقادیر رو از یک سمت بگیرند و به سمت دیگه منتقل کنند. بدون اینکه روی هیچ تابع یا متغیر عمومی تغییری ایجاد کنند. به نظر ساده میاد اما در عمل پیاده سازیش یعنی حجم خیلی زیادتری کد و تعداد بیشتر تابع

  5. #5
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    ممنون از راهنماییتون....

    برنامه ای که دارم سنگین نیست...

    به نظر شما، مشکلی داره که از معماری 3 لایه و EntityFramework استفاده کنم؟

  6. #6

    نقل قول: MVVM or 3 layer

    نه خیر هیچ مشکلی نداره . اون ها هم یک مدل برنامه نویسیه که در خیلی از نرم افزارهای پیاده میشه

  7. #7
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: MVVM or 3 layer

    خوب به نظرم تو این بحث نه کسی متوجه شده که معماری سه لایه چیه! و نه MVVM! (البته متاسفانه)

    شما وقتی میگید MVVM منظورتون چیه؟ و وقتی میگید سه لایه منظورتون چیه؟! اصلا منظورتون از برنامه نویسی چند لایه چیه؟!

    دوستان گرامی لطفا به این مساله توجه کنید که معماری سه لایه یک مفهوم کلی هست که میشه تو هر چیزی (حتی غیر از نرم افزار! باور کنید!) ازش استفاده کرد. MVVM هم یکی از الگوهایی هست که میشه با اون یک معماری سه لایه رو تو برنامه های WPF ایجاد کرد.
    پس در نتیجه MVVM خودش سه لایه است! MVC هم سه لایه است! MVP هم سه لایه است!
    حالا من منتظرم وافعا جواب سوالاتم رو بخونم در پست بعدی :)

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    36

    نقل قول: MVVM or 3 layer

    سلام
    همونطور که جناب Amir Oveisi فرمودند MVVM خودش سه لایه است و اما توضیحات بیشتر:
    ببینید در اصل لایه بندی کردن برای راحتی در کنترل ، خطایابی ، ویرایش های بعدی ، کار گروهی راحتتر و ... است اما با این حال نیاز به زمان بیشتری برای تفکیک و طراحی لایه ها داره.
    معمولا تعداد لایه استاندارد را 3 لایه و 5 لایه میدونند اما این به این معنی نیست که در تعداد این لایه ها اجباری است یعنی طراح نرم افزار براساس پروژه میتونه لایه بندی خودش را داشته باشه مثلا 2 لایه.
    خب در مورد معماری سه لایه سه الگو معرفی شده MVC, MVP, MVVM
    که تفاوت آنها از بصورت زیر است :
    این لینک را ببینید
    http://www.wpftutorial.net/MVVM.html
    در مورد MVP یا همون سه لایه ای که powerboy2988 مدنظرشون بود:
    در این معماری لایه View یا UI و لایه VM یا Presenter هنوز به هم وایستگی دارند یعنی نمیشه که مثلا یک نفر کار طراحی را بدون در نظر گرفتن VM انجام بده مثلا اگر یک دکمه روی صفحه قرار داد باید یکی دیگه ایونتش را بنویسه پس هنوز نیاز به کدنویسی در پشت UI وجود داره و این یعنی اینکه دو تیم طراحی ظاهر برنامه (گرافیست یا ...) و کدنویس پیوسته باید باهم در تعامل باشند و اگر هر کدام از این کنترل ها تغییر کنه که باید در کدنویسی هم تغییرات اعمال بشه
    ولی در مورد MVVM اینگونه نیست بطوریکه برای یک VM شما میتونید هر چندتا View که خواستید طراحی کنید مثلا یکی دکمه هاش Button باشه و دیگری بیضی یا مستطیل یا ... تنها باید در محیط زمل بایندینگها بدرستی تنظیم شود که این هم از طریق قراردادهای اولیه بین طراح و کدنویس از نظر اسم پراپرتی ها قابل انجام است پس دو تیم طراحی و کدنویسی بدون هیچگونه درگیری به کار خود میپردازند و این یعنی اینکه کارها بطور همزمان و موازی انجام میشه پس در زمان تحویل پروژه صرفه جویی قابل ملاحظه ای رخ میده (فکر میکنید چرا نرم افزار Expression Blend ساخته شده و چرا در این محیط نمیشه کدنویسی کرد ، چون این نرم افزار برای طراحی View است و گرافیست نیازی به کدنویسی نداره حتی یک سطر!)
    البته تمام مزیت های برنامه نویسی سه لایه وقتی قابل لمس تره که کار بصورت گروهی باشه یا اینکه پروژه تون طوری باشه که وابستگی های اون زیاد باشه که اگر یکی ویرایش شد کار بقیه را مختل کنه اون وقته که الگوی سه لایه لازم میشه چون کلا کار این الگو کم کردن وابستگی بین قسمت های مختلف برنامه است
    امیدوارم براتون مفید بوده باشه
    آخرین ویرایش به وسیله user6627 : شنبه 14 مرداد 1391 در 12:09 عصر

  9. #9
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    خرداد 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: MVVM or 3 layer

    سلام
    (فکر میکنید چرا نرم افزار Expression Blend ساخته شده و چرا در این محیط نمیشه کدنویسی کرد ، چون این نرم افزار برای طراحی View است و گرافیست نیازی به کدنویسی نداره حتی یک سطر!)
    این باور رو اصلاح کنید!! ممکنه برای طراحی یک فرم مجبور بشید 1000 خط کد در code behind بنویسید!!! این مغایرتی با اصل MVVM نداره!! تمام کد های نوشته شده در code behind فقط برای انجام یک سری فرایند تصویری و گرافیکی در View هستند و ربطی به Model ندارند

  10. #10
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    خوب به نظرم تو این بحث نه کسی متوجه شده که معماری سه لایه چیه! و نه MVVM! (البته متاسفانه)

    شما وقتی میگید MVVM منظورتون چیه؟ و وقتی میگید سه لایه منظورتون چیه؟! اصلا منظورتون از برنامه نویسی چند لایه چیه؟!

    دوستان گرامی لطفا به این مساله توجه کنید که معماری سه لایه یک مفهوم کلی هست که میشه تو هر چیزی (حتی غیر از نرم افزار! باور کنید!) ازش استفاده کرد. MVVM هم یکی از الگوهایی هست که میشه با اون یک معماری سه لایه رو تو برنامه های WPF ایجاد کرد.
    پس در نتیجه MVVM خودش سه لایه است! MVC هم سه لایه است! MVP هم سه لایه است!
    حالا من منتظرم وافعا جواب سوالاتم رو بخونم در پست بعدی :)
    منظور خاصی ندارم از اینکه می گم MVVM .

    من برای طراحی یک نرم افزار با WPF به MVVM رسیدم .. که مزایای خودشو داشت برای استفاده از اون با WPF ...

    و با حرف شما موافقم..

    ممنون میشم منو از این سردرگمی در بیارید...

  11. #11
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    الان مثلا ، دایرکتوری پروژه رو MVVM درست کردم!!

    و اینکه تونستم بعضی از Command ها رو Binding کنم ... اما تو Globalization و Localization مشکل داشتم و کدهای اونو تو Code Behind قرار دادم و بعدشم هم دارم Model هامو طراحی می کنم و از EntityFramework تو Model استفاده کنم...


    و اینم ساختاری هست که به وجود آوردم برای پیاده سازی MVVM تو WPF اما چون تو این مبحت مبتدی هستم درست نمی تونم Binding داشته باشم تو Localization و ... ، واسه همین تو Code Behind استفاده می کنم...

    ممنون میشم که اگر مشکلی هست بهم بگید...


    ممنون
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله powerboy2988 : شنبه 14 مرداد 1391 در 15:52 عصر

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    36

    نقل قول: MVVM or 3 layer

    نقل قول نوشته شده توسط Mehdi550u مشاهده تاپیک
    سلام
    این باور رو اصلاح کنید!! ممکنه برای طراحی یک فرم مجبور بشید 1000 خط کد در code behind بنویسید!!! این مغایرتی با اصل MVVM نداره!! تمام کد های نوشته شده در code behind فقط برای انجام یک سری فرایند تصویری و گرافیکی در View هستند و ربطی به Model ندارند
    سلام
    دوست عزیز ، در این مدل هم مثل مدل MVP میشه Code Behind داشت ولی منظور من بیان مزایای MVVM بود و اینکه چیزیکه این مدل را از مدل MVP متمایز میکنه (البته بغیر از تعداد View ها) همین مجزا کردن View و Code Behind است که سرعت تولید نرم افزار را بالا میبرد و الا شما در این مدل هم مثل مدل MVP در داشتن Code behind مختارید (البته در MVP مجبورید code behind داشته باشید ولی در این مدل نه!)

  13. #13

    نقل قول: MVVM or 3 layer

    البته هدف mvvm جدا کردن کدهای مرتبط با منطق برنامه از ظاهر برنامه(وکد های مرتبط با ظاهر برنامه)است..
    نوشتن کدها مربوط به منطق برنامه در view خلاف قوانین mvvm هست درحالی که شما میتونید برای کنترل المنت های View از code behind استفاده کنید

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    36

    نقل قول: MVVM or 3 layer

    نقل قول نوشته شده توسط homan1374 مشاهده تاپیک
    البته هدف mvvm جدا کردن کدهای مرتبط با منطق برنامه از ظاهر برنامه(وکد های مرتبط با ظاهر برنامه)است..
    نوشتن کدها مربوط به منطق برنامه در view خلاف قوانین mvvm هست درحالی که شما میتونید برای کنترل المنت های View از code behind استفاده کنید
    اگر پستهای قبلی بنده را خونده باشید من هم به این نکته اشاره کردم که MVVM با حذف وابستگی view و code behind باعث افزایش سرعت در انجام پروژه میشه و استانداردش هم همینه که در view ، کدنویسی نباشه!
    حالا شاید یکی بخواد افکتهاش رو از طریق کدنویسی انجام بده که مختاره! (البته بعید میدونم یک گرافیست چنین کاری کنه چون اولا فکر نکنم کار گرافیست ربطی به کدنویسی داشته باشه و ثانیا خود زمل تمام امکانات مورد نظر رو داره)
    و در انتها باز هم تاکید میکنم MVVM برای بهبود MVP آمده چون در MVP طراحی UI و کدنویسی به هم وابسته بودند و این باعث میشد که تیم طراحی و کدنویسی پیوسته به هم وابسته باشند و تیم کدنویسی باید منظر تیم طراحی میموند و این یعنی اتلاف وقت در زمان تحویل حالا با وجود MVVM و نرم افزارهایی چون Blend تیم طراحی کار خودشون را با Blend انجام میدن (بدون نیاز به کدنویسی!) و تیم کد نویسی هم با ویژوال استودیو کار خودشون رو بطور همزمان و موازی انجام میدن پس در زمان تحویل پروژه صرفه جویی قابل ملاحظه ای اتفاق می افته (البته یک سری قراردادهایی بین دو تیم بر سر اسم پراپرتی ها باید باشه تا عملیات بایندینگ نیز بدون مداخله دیگری انجام بشه)
    و این یعنی قدرت MVVM!!!

  15. #15
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    خرداد 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: MVVM or 3 layer

    (البته بعید میدونم یک گرافیست چنین کاری کنه چون اولا فکر نکنم کار گرافیست ربطی به کدنویسی داشته باشه و ثانیا خود زمل تمام امکانات مورد نظر رو داره)
    من با نظر شما مخالفم!!! شما برای من یک استایل کامل برای Window درست کنیدبا تمام امکانات استاندارد یک پنجره یعنی ماکزیمایز و مینی مایز و قابلیت تغییر اندازه با موس و نشان دادن TaskBar ویندوز در حالت ماکزیماز و ..... بدون کد نویسی در Code behind!!!!

    لطفا سر عقیده خود بی مورد پافشاری نکنید
    البته هدف mvvm جدا کردن کدهای مرتبط با منطق برنامه از ظاهر برنامه(وکد های مرتبط با ظاهر برنامه)است..
    نوشتن کدها مربوط به منطق برنامه در view خلاف قوانین mvvm هست درحالی که شما میتونید برای کنترل المنت های View از code behind استفاده کنید
    در ضمن من هیچ کجا نگفتم منطق برنامه رو با View درگیر میکنیم !! گفتم یک طراح UI برای حداکثر کردن توانایی برنامه از لحاظ بصری نیاز پیدا میکنه در Code behind کد نویسی کنه و این کد نویسی ربطی به منطق برنامه نداره

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    36

    نقل قول: MVVM or 3 layer

    نقل قول نوشته شده توسط Mehdi550u مشاهده تاپیک
    من با نظر شما مخالفم!!! شما برای من یک استایل کامل برای Window درست کنیدبا تمام امکانات استاندارد یک پنجره یعنی ماکزیمایز و مینی مایز و قابلیت تغییر اندازه با موس و نشان دادن TaskBar ویندوز در حالت ماکزیماز و ..... بدون کد نویسی در Code behind!!!!

    لطفا سر عقیده خود بی مورد پافشاری نکنید
    تمام اینکارها با استفاده از Command ها امکان پذیر است و Command ها را هم میتوان در فایل های جداگانه ای تعریف کرد پس نیازی نیست که Command را هم در پشت View بنویسیم و این یعنی جدا بودن View از Code Behind!!!
    در ضمن هدف من پافشاری نیست بلکه هدف درک درست مساله است واینکه مفهوم MVVM را بتونم بطور واضح به دوستان برسونم!

  17. #17

  18. #18
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    تو الگوی MVVM نوشتن کدهایی در code-behind لایه که مربوط به خود View هستند و هیچ ارتباطی با View-model ندارد، ایرادی نداره.
    منظورتون چه کدهایی هستش؟؟ مثلا واسه Localization و Globalization می شه ResourceDictionary تو View استفاده کرد؟؟

  19. #19
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: MVVM or 3 layer

    خیر این کاری که شما میگید مربوط میشه به منطق برنامه. یعنی منطق برنامه شما اینه که دو زبانه باشه و این که به چه شکلی این کار باید انجام بگیره باید در لایه مربوط به logic نوشته بشه (که در اینجا میشه view model).
    کدهایی مجاز هستند در code-behind لایه view باشند که به هیچ وجه ارتباطی با لایه های دیگر نداشته باشند و فقط مربوط به خود view باشند به شکلی که شما بتونید به راحتی و بدون بروز خطا، view رو ببرید داخل یک پروژه دیگه و ازش استفاده کنید. در واقع هر کدی که view رو به لایه های دیگه وابسته کنه، نباید در view وجود داشته باشه و هر موقع چنین کدی نوشتید یعنی استاندارد الگوی MVVM رو نقض کردید.
    نمونه ای از این نوع کدهای مجاز میتونه کدهای مربوط به کارهای زیر باشه:
    1- کد های مربوط به جابجایی view با استفاده از mouse
    2- کدهای کنترل انتقال focus بین کنترل ها (بهتره که به نام کنترل های موجود وابسته نباشه)
    3- کدهای مربوط به یه سری عملیات drag drop (در حالتی که drag drop وابستگی به view model نداشته باشه)
    4- کدهای مربوط به تغییر سایز view با mouse
    و ...

  20. #20
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301

    نقل قول: MVVM or 3 layer

    ممنون از راهنماییتون....


    ممکنه واسه این کار، یک مثال بزنید....


    ممنون میشم...

  21. #21

  22. #22

    نقل قول: MVVM or 3 layer

    در ضمن من هیچ کجا نگفتم منطق برنامه رو با View درگیر میکنیم !! گفتم یک طراح UI برای حداکثر کردن توانایی برنامه از لحاظ بصری نیاز پیدا میکنه در Code behind کد نویسی کنه و این کد نویسی ربطی به منطق برنامه نداره
    من نگفتم شما همچین چیزی گفتی من حرفهای شمارو کاملا قبول دارم کامنتم در حمایت از حرف شما بود...
    همینجور که گفتم و شما هم گفتید: کد نویسی در view برنامه به شرطی که برای کنترل بهتر view و المنت هاش باشه مشکلی نداره(یا به قول شما حداکثر کردن توانایی برنامه از لحاظ بصری)....
    و مثالی که زدید کاملا این قضیه رو رشن میکنه برای نوشتن استایل برای ویندوز ما نیاز به code-behind داریم....

تاپیک های مشابه

  1. تفاوت tier با layer
    نوشته شده توسط delphi developer در بخش تحلیل و طراحی نرم افزار
    پاسخ: 15
    آخرین پست: پنج شنبه 24 شهریور 1390, 11:01 صبح
  2. مشکل استفاده از Layer در صفحه وب
    نوشته شده توسط nafiseh_Sotoudeh در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: دوشنبه 25 اردیبهشت 1385, 09:13 صبح
  3. Yersinia - Layer 2 Attack Framework
    نوشته شده توسط Inprise در بخش امنیت در شبکه
    پاسخ: 0
    آخرین پست: پنج شنبه 25 فروردین 1384, 23:48 عصر
  4. Switch Layer 2
    نوشته شده توسط houtanal در بخش شبکه و Networking‌
    پاسخ: 4
    آخرین پست: یک شنبه 25 مرداد 1383, 21:06 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •