PDA

View Full Version : نیاز به برنامه نویسی سه لایه در صورت استفاده از Entity FrameWork



negar.rafie
یک شنبه 11 مهر 1395, 12:10 عصر
سلام
دوستان همون طور که میدونید در صورت استفاده از Entity FrameWork کدنویسی خیلی ساده و کوتاه شده است
حالا با این وجود که کدها کاملا کوتاه شده است وتنها باید فیلدها را مقداردهی کنیم ایا نیاز به پیاده سازی پروژه به صورت سه لایه می باشد؟
اگر جواب مثبت است به چه دلیل و چگونه؟

ژیار رحیمی
یک شنبه 11 مهر 1395, 15:19 عصر
سلام به نظر من منطقی نیست که شما مدل 3لایه رو اونم با Ef پیاده سازی کنی.اصولا مدل 3لایه شبیه سازی ازWPF MVVM و یا تحت وب آن MVC در ویندوز فرم هست.چون در ویندوز فرم قابلیت جدا کردن کد از بخش کد بیهاند فرم ها وجود ندارد.و در اساس نمیشه دیزاین و کد رو ازهم جدا کرد پس منطقی نمیباشد.

Mani_rf
دوشنبه 12 مهر 1395, 16:58 عصر
ORM که شما استفاده میکنید ارتباطی به لایه بندی پروژه نداره! توی تعریف مزایای لایه بندی و معماری های برنامه نویسی لایه ای به هیچ عنوان به این موضوع اشاره نمیشه که ORM تعداد لایه ها رو کم یا زیاد و یا این که شما رو از برنامه نویسی لایه ای بی نیاز میکنه. در واقع کاری که Entity Framework برای شما انجام میده اینه که پیاده سازی لایه های Data Access و گاها Repository رو ساده تر میکنه. برنامه نویسی چندلایه قسمت جدایی ناپذیر پروژه های متوسط و بزرگه. وقتی که قراره یک تیم روی پروژه کار کنه راهی بجز استفاده از معماری های چندلایه و شکستن پروژه به مجموع پروژه های کوچیک وجود نداره.

این مثال ها رو در نظر بگیرید:
یک ویندوز اپلیکیشن دارید و میخواید که آپدیت آنلاین خودکار داشته باشید؛ برای رفع یک باگ کوچیک بهتره چندین فایل DLL داشته باشید و یک Dll کم حجم رو جایگزین کنید یا فایل اجرایی اصلی برنامه رو؟
یک وب اپلیکشن دارید و میخواید یکی از فایل های بزینس رو که تغییر دادید آپلود کنید. یک فایل که کل مدل و کد های پروژه توش قرار داره بهتره یا فقط DLL مربوط به همون لایه؟
یک WPF اپلیکشن دارید و گرافیست شما به صورت موازی با شما روی تم برنامه کار میکنه؛ راهی بجز لایه بندی کردن و تفکیک پروژه ها دارید؟

ژیار رحیمی
دوشنبه 12 مهر 1395, 21:27 عصر
ORM
این مثال ها رو در نظر بگیرید:
یک ویندوز اپلیکیشن دارید و میخواید که آپدیت آنلاین خودکار داشته باشید؛ برای رفع یک باگ کوچیک بهتره چندین فایل DLL داشته باشید و یک Dll کم حجم رو جایگزین کنید یا فایل اجرایی اصلی برنامه رو؟

سلام وقتی شما آپدیت آنلاین انجام بدی بر اساس اسمیلی ورژن فایل exe آپدیت رو انجام میدی در هر صورت در بروز رسانی آنلاین بعد از اصلاح فایل dll کوچک ،شما باید ورژن فایل exe رو نسبت به بروزرسانی تغییر بدی پس حتما لازمه فایل exe جایگزین کنی (با یه dll جایگزین کردن انتظار داشت ورژن فایل exe بروز رسانی شود، مگر ورژن فایل رو از جای دیگه خواند و وابستگی به فایل ورژن exe نداشته باشه)

Mani_rf
سه شنبه 13 مهر 1395, 01:39 صبح
سلام وقتی شما آپدیت آنلاین انجام بدی بر اساس اسمیلی ورژن فایل exe آپدیت رو انجام میدی در هر صورت در بروز رسانی آنلاین بعد از اصلاح فایل dll کوچک ،شما باید ورژن فایل exe رو نسبت به بروزرسانی تغییر بدی پس حتما لازمه فایل exe جایگزین کنی (با یه dll جایگزین کردن انتظار داشت ورژن فایل exe بروز رسانی شود، مگر ورژن فایل رو از جای دیگه خواند و وابستگی به فایل ورژن exe نداشته باشه)

خوندن نسخه برنامه از فایل اجرایی خیلی کار پسندیده ای نیست، همونطور که میدونید علاوه در Exe برنامه ، DLL ها هم نسخه خاص خودشون رو دارند که لزوما هماهنگی با فایل اجرایی برنامه ندارند. عدد نسخه ای که شما توی اطلاعات اسمبلی فایل میبینید دقیقا به همون فایل اشاره داره و معیار مناسبی برای نسخه گذاری کل برنامه نیست.
ورژن برنامه صرفا یک عدده قرار دادی بین شما با کاربره که کاربر رو از میزان بروز بودن برنامه و یا نیاز به آپدیت آگاه میکنه. زمانی که برای چند باگ کوچیک آپدیت میدید فقط کافیه مینور ورژن برنامه تغییر کنه و لزومی نداره که فایل exe فقط بخاطر تغییر نسخه دانلود و جایگزین بشه.
پیشنهاد میکنم یک فایل اطلاعات نسخه همراه برنامه داشته باشید و این موارد رو درون اون ذخیره کنید تا به راحتی با پروتکل های خودتون قابل خوندن و تغییر باشه. اگر امنیت بیشتری لازم دارید درقالب یک جدول در دیتابیس این کار رو انجام بدید.

negar.rafie
سه شنبه 13 مهر 1395, 11:55 صبح
ممنون از شما
حالا جناب Mani_rf یا اساتید دیگه میشه یک منبع اموزشی خوب معرفی کنید تا برنامه نویسی سه لایه با Entity FrameWork را در ویندوزفرم و wpf یاد بگیریم؟
یا اینکه میشه خودتون یک مثال ساده بزنید؟

Mani_rf
سه شنبه 13 مهر 1395, 13:46 عصر
ممنون از شما
حالا جناب Mani_rf یا اساتید دیگه میشه یک منبع اموزشی خوب معرفی کنید تا برنامه نویسی سه لایه با Entity FrameWork را در ویندوزفرم و wpf یاد بگیریم؟
یا اینکه میشه خودتون یک مثال ساده بزنید؟

با کلید Design pattern جستجو کنید

ژیار رحیمی
سه شنبه 13 مهر 1395, 16:56 عصر
خوندن نسخه برنامه از فایل اجرایی خیلی کار پسندیده ای نیست، همونطور که میدونید علاوه در Exe برنامه ، DLL ها هم نسخه خاص خودشون رو دارند که لزوما هماهنگی با فایل اجرایی برنامه ندارند. عدد نسخه ای که شما توی اطلاعات اسمبلی فایل میبینید دقیقا به همون فایل اشاره داره و معیار مناسبی برای نسخه گذاری کل برنامه نیست.
ورژن برنامه صرفا یک عدده قرار دادی بین شما با کاربره که کاربر رو از میزان بروز بودن برنامه و یا نیاز به آپدیت آگاه میکنه. زمانی که برای چند باگ کوچیک آپدیت میدید فقط کافیه مینور ورژن برنامه تغییر کنه و لزومی نداره که فایل exe فقط بخاطر تغییر نسخه دانلود و جایگزین بشه.
پیشنهاد میکنم یک فایل اطلاعات نسخه همراه برنامه داشته باشید و این موارد رو درون اون ذخیره کنید تا به راحتی با پروتکل های خودتون قابل خوندن و تغییر باشه. اگر امنیت بیشتری لازم دارید درقالب یک جدول در دیتابیس این کار رو انجام بدید.

اگر ورژن برنامه را در یک جدول از DataBase نگهداری شوذ اگر کاربر یک Backup که قبل از آخرین تاریخ بروز رسانی انجام دهد برنامه نیاز مجدد به بروز رسانی خواهد داشت و ممکنه هم با مشکل مواحه شود.





ممنون از شما
حالا جناب Mani_rf یا اساتید دیگه میشه یک منبع اموزشی خوب معرفی کنید تا برنامه نویسی سه لایه با Entity FrameWork را در ویندوزفرم و wpf یاد بگیریم؟
یا اینکه میشه خودتون یک مثال ساده بزنید؟


http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET

parsdarab
سه شنبه 13 مهر 1395, 17:35 عصر
سلام
همچین چیزی میشه طراحی کرد

142882

negar.rafie
چهارشنبه 14 مهر 1395, 09:22 صبح
اگر ورژن برنامه را در یک جدول از DataBase نگهداری شوذ اگر کاربر یک Backup که قبل از آخرین تاریخ بروز رسانی انجام دهد برنامه نیاز مجدد به بروز رسانی خواهد داشت و ممکنه هم با مشکل مواحه شود.




http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET

این مربوط به ADO هستش.

ali_md110
چهارشنبه 14 مهر 1395, 10:28 صبح
این مربوط به ADO هستش.
سلام
معماری ذکر شده منحصر به ado یا فریموورک خاصی نیست شما میتونید برنامه چند لایه رو با اکثر فریممورکها پیاده کنید
یا کلن برنامه چند لایه ای بنویسید که دیتابیسی در کار نباشه
هدف از چند لایه بودن یعنی اینکه نیازهای یک برنامه اجرایی توسط چند کلاس یا لایبراری مجزای دیگه برطرف بشه
هدف از چند لایه بودن بهتر شدن توسعه نرم افزار و پیشرفت کارگروهی هست
تا اسم چند لایه میاد فورن فکرمون میره سراغ لایه DataAccess یا Bus که در نهایت با برنامه اجرایی یکی شده و توی یک کامپیوتر لوکال اجرا میشه در صورتیکه
برخی اوقات برنامه های چند لایه تبدیل به چند اسمبلی واحد شده و هرکدام درون یک سرور خاص اجرا و برنامه اصلی از اون سرورها و اسمبلی ها رفرنس میگیره
پترن MVVM شروع خوبی برای برنامه نویسی گروهی هست

negar.rafie
چهارشنبه 14 مهر 1395, 19:20 عصر
بله درسته
اصلا یک سوال اگر برنامه به صورت لایه ای پیاده سازی نشه ایا استاندارد و حرفه ای نیست؟ومیشه بدون سه لایه پروژه را نوشت؟

در مورد ado بودن بله میدونم ربطی نداره ولی خب نمیتونم با EF به صورت سه لایه کار کنم

ali_md110
چهارشنبه 14 مهر 1395, 20:11 عصر
بدون برنامه لایه ای هیچ مشکل پیش نمیاد ولی اگر لایه بندی بشه نظم برنامه بیشتره و وقتتون کمتر تلف میشه
و حرفه ای بودن یک برنامه به لایه ای بودنش نیست
لایه ها یک ایده های برنامه نویسی هستند که برنامه به بخشهای متفاوت با وظیفه متفاوت تقسیم میشن
همچنین وقتی پروژتون چند لایه شد زمان کامپایل هم سریعتر میشه
خطایابی برنامه خیلی سریعتره و بهتره
میتونید یک یا چند پروژه بسازید و بصورت کتابخانه نگهداری کنید و توی پروژه های دیگه از اون استفاده کنید بدون اینکه دوباره وقت تلف کنید و برای هر پروژه جدید دوباره نویسی کنید
مثلا یک پروژه Common حاوی کلاس ها و متدهای کمکی

3 لایه بودن در Ef بدینصورت که دوستمون parsdarab گفتند میتونید بخوبی پیاده سازی کنید
توی Business layre کلاسهای poco یا همون ef به همراه DataContext خودتون تعریف کنید
توی لایه ServiceLayer یک سری کلاسها تعریف و دستورات Add Update Delete Seelect
یا همون CRUD رو پیاده کنید
در نهایت در لایه Presentaion
مثلا mvc درون کلاسهای کنترلر متدهای لایه سرویس رو صدا بزنید