PDA

View Full Version : برنامه نویسی سه لایه و گروهی



mrali.jalali
چهارشنبه 27 اسفند 1393, 14:50 عصر
سلام

چند روز پیش تو یه جمع بودم که برنامه نویسی سه لابه به صورت گروهی انجام میدادن. هر کدوم مسول قسمتی از برنامه بودن .بعد بین همدیگر Dll رد و بدل میکردن . و check in میزدن برا اعمال تغییرات . نمی دونم درست فهمیدم یا نه :لبخندساده:

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

MehdiElexal
چهارشنبه 27 اسفند 1393, 15:10 عصر
این نوع برنامه ها عموما برنامه های وسیعی در سطح کاربرد های مختلف هستند که هر گروه یا شخص مسئولیت قسمت (لایه) را بر عهده میگیره و در آخر سر جمع کردن این لایه ها تشکیل برنامه اصلی و کاربردی رو میده .
دلیلشم این هست که چند برنامه نویس نمیتونن روی یک سیستم و در بخش های مختلف کار کنند و این کار برای تسریع در امر برنامه نویسی انجام میشه و اصلا چیز خاصی نیست .
دی ال ال هم کتاب خانه هایی هست که میشه بهش توابع و ریسورس های مختلفی اضافه و کم نمود و با اضافه کردن به رفرنس هاتون میتونید آخرین توابع نوشته شده رو داشته باشید و در پروژه های دیگه نیز حتی از اونها استفاده کنید. و شما که فرضا مسئول قسمت کدینگ هستید میتونید کدهاتون رو بصورت دی ال ال و شیر روی پروژه داشته باشید تا با آخرین تغییرات روی رفرنس ها دوستانتون هم از این تغییرات مطلع باشند. مثل آپدیت برنامه هاست تقریبا و در آخر تمام این قسمت ها جمع آوری شده و محصول خروجی با بهره گیری از تمام لایه ها به سرانجام میرسه
امیدوارم منظورم رو رسونده باشم

SabaSabouhi
چهارشنبه 27 اسفند 1393, 15:48 عصر
سلام

چند روز پیش تو یه جمع بودم که برنامه نویسی سه لابه به صورت گروهی انجام میدادن. هر کدوم مسول قسمتی از برنامه بودن .بعد بین همدیگر Dll رد و بدل میکردن . و check in میزدن برا اعمال تغییرات . نمی دونم درست فهمیدم یا نه :لبخندساده:

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

سلام
این‌ها دو تا مطلب متفاوت هستن.
این که هر کدوم یه بخش رو بر عهده گرفتن، یه جور تقسیم کار هست که البته یه کم موازی به نظر نمی‌رسه، چون حداقل به نظر من لایه‌ی دیتا باید
قبل از دو لایه‌ی قبل انجام بشه، پس موازی نیست. اما لایه‌ها بیزینس و واسط کاربر می‌تونن تا حدی به موازات هم پیش برن.
البته این تقسیم‌بندی‌ها به تعداد افراد و تخصص‌هاشون هم ارتباط داره.
و اما در مورد check-in کردن، این مربوط هست به source کنترل که کاملاً با «تبادل dll» متفاوته، روش صحیح کار گروهی استفاده از یه source control
هست که می‌تونه توی شبکه داخل شرکت باشه، و یا تو اینترنت باشه ( برای کار از راه دور ).
در این حالت تمام sourceها یک جا متمرکز می‌شه و هر تغییری که شما می‌خوای روی یک source انجام بدی، اول checkout می‌کنی و بعد از تکمیل کارها
و تست کردن، اون‌ها رو check-in می‌کند که بقیه هم بتونن تغییرات رو بگیرن.
البته این چیزهایی که گفتم در مورد TFS هست که برای کاربرای VS بیشتر رایج هست، برای بقیه source controlها مثل GIT قضیه یه مقدار تفاوت می‌کنه.

صبا صبوحی

tamdata
چهارشنبه 05 فروردین 1394, 07:23 صبح
سلام
من شنیدم که مایکروسافت یک نرم افزار ارائه داده برای کارهای تیمی چندلایه که با اون خیلی راحت این کار انجام میشه. به این صورت که یک هسته مرکزی داره و هر برنامه نویس پس از اینکه کار خودش رو انجام داد تکه برنامه خودش رو به اون اضافه میکنه و پس از تایید در برنامه اصلی قرار میگیره.

imanx7
چهارشنبه 05 فروردین 1394, 12:07 عصر
سلام
من شنیدم که مایکروسافت یک نرم افزار ارائه داده برای کارهای تیمی چندلایه که با اون خیلی راحت این کار انجام میشه. به این صورت که یک هسته مرکزی داره و هر برنامه نویس پس از اینکه کار خودش رو انجام داد تکه برنامه خودش رو به اون اضافه میکنه و پس از تایید در برنامه اصلی قرار میگیره.
بستری به اسم Team Function Server یا به اصطلاح TFS که همراه با ویژوا استادیو 2010 بعد همراه با IDE نصب میشه

neynavaz
چهارشنبه 12 فروردین 1394, 06:11 صبح
سلام
در مورد همین
Team Function Server سوال داشتم
من یه کدی دارم که روی یه سرور اینترنتی هست
سورس کنترلرش روی یه ای پی ولید هست و توی سلوشن فقط لایه دیتا و بیزنس دیده میشه چون یوزر پس رو هم ندارم همیشه افلاین باز میشه و نمیشه پروژه رو اجرا کرد
میخواستم بدونم راهی داره کد رو کامل داشته باشم؟ یا حتما باید لوود بشه از ر سرورش بعد دیسکانکت یا آن باید کرد؟

FastCode
یک شنبه 16 فروردین 1394, 11:00 صبح
سلام.
توی ایران کلا به تعداد dll هاشون میگن لایه.
توی علم برنامه نویسی لایه یه چیزی میگن که بتونه به صورت مستقل روی کامپیوتر مستقل اجزا بشه و با بقیه لایه ها ارتباط داشته باشه.
من همین الان دارم روی یک پروژه کار میکنم که 537 تا dll کوچک داره و دو لایه هست.
هر dll فقط و فقط یک کار میکنه.
این که اجزای برنامه چقدر خرد بشن با اینکه هر جز کجا اجرا بشه خیلی فرق داره.
http://en.wikipedia.org/wiki/Coupling_%28computer_programming%29
http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29

am_al_59
یک شنبه 16 فروردین 1394, 17:19 عصر
لایه ها در برنامه نویسی لایه ای با قابلیت اجرا شدن بصورت تکی مشخص نمیشن و کاملاً برعکسه هر لایه یک حلقه زنجیر هست که به لایه بالایی و پایینی خودش متصله. در برنامه نویسی لایه ای فقط لایه Application قابلیت اجرا داره


اون لینک ها بیشتر مربوط به برنامه نویسی ماژولار هست
در برنامه نویسی ماژولار مختلف عملیات بسته به تشخیص طراح و برنامه نویس به صورت جزئی تر خرد می شوند
در این حالت می توان از اشتراک گذاری کدها و توابع خرد شده برای انجام عملیات بزرگتر استفاده کرد
مثلاً شما جایی نیاز دارید سن کاربر را دریافت کنید و این سن باید عددی بزرگتر از 18 باشد
در این حالت شما یک تابع برای دریافت عدد می نویسید و یک تابع هم برای کنترل عدد دریافت شده
حال در جای دیگر نیازدارید سال تولد کاربر را بپرسید و این عدد نباید کمتر از 1359 و نباید بیشتر از 1375 باشد
در این حالت از همان تابع دریافت عدد که قبلاً نوشته این استفاده می کنید و فقط تابعی جدید برای کنترل بازه جدید می نویسید
خرد کردن عملیات بطور مناسب باعث افزایش کارائی، خوانایی و حتی سرعت برنامه می شود
اما خرد کردن اشتباه یا بیش از حد و غیر ضروری باعث افزایش کد نویسی، سردر گمی و مشکلات دیگر می شود


برنامه نویسی لایه ای هم میشه گفت تقریباً مشابه همین ماژولار کردن هست اما در سطح وسیع تر
در برنامه نویسی لایه ای شما با چیزی بیشتر از کارکردن با داده ها و اجرای عملیات سرو کار دارید
هر لایه ها در فقط و فقط به یک لایه دسترسی دارد و اونهم لایه پایین تر از خودش هست
شما در برنامتون هر چقدر لایه که میخواهید می توانید داشته باشید اما مدل عمومیش با سه لایه هست
لایه ها در این نوع برنامه نویسی عبارتند از
Application Layer
Business Layer
Data Layer
برای اینکه شما برنامتون رو چطور تقسیم بندی کنید و نحوه عملکرد لایه ها و وظیفه هرکدوم رو مشخص کنید استاندارها و روشهای مختلفی داره من خودم معمولاً برنامه هایی که تشخیص میدم باید سه لایه بنویسم به این صورت تقسیم میکنم
منوها، پنجره ها، طراحی گرافیک دریافت ورودی و نمایش خروجی در لایه Application
کنترل رو داده ها، تغییر ساختار و بعضی از محاسبات در لایه Business مثلاً یک سری داده از دیتابیس گرفتم و میخوام این داده هارو بطور مرتب در Entity هایی که تعریف کردم قرار بدم. تعریف این Entity ها هم به همراه قرار دادن داده هایی که از لایه دیتا گرفتم در این واحدها وظیفه این لایه هست
عملیات ارتباط با دیتابیس، ثبت، حذف، ویرایش، اجرای کوئری در لایه Data
در این نوع برنامه نویسی لایه Application فقط و فقط به لایه Business دسترسی داره
لایه Business هم فقط و فقط به لایه Data دسترسی داره


در انتها باید بگم که تکنولوژی و قابلیت های جدید فاصله بین لایه business و data رو بسیار کم کرده مثل Nhibernate و Linq یعنی در عمل اگر پروژه شما وسیع نباشه میتونین لایه business را حذف کنید چون تعاریف موجودیت ها در Linq وجود داره و بهیچ وجه نیازی نیست شما با دیتابیس مستقیم کار کنید هر چند این قابلیت هم در Linq وجود دارد
تنها دلیلی که میتونه باعث ایجاد لایه Bussiness در این حالت بشه، انجام عملیات محاسباتی هست که اونم باید تعداد و نوع محاسبات در حدی باشه که توجیه داشته باشه شما لایه business رو در برنامه پیاده سازی کنید


ممکنه عملیات یک لایه بقدری وسیع بتشه که در برنامه نویسی گروهی هم شما نتونید یک لایه رو بدین یک نفر یا یک گروه بنویسه
در اینجا تعریف ماژولار میاد وسط که شما وظایف رو بصورت مجزا تقسیم بندی میکنین و هر تیکشو میدیم یک گروه مینویسه
خلاصش اینکه یک لایه ممکنه از چندین فایل کتابخانه ای تشکیل بشه حتی لایه Application
شاید از اسم Application بسیاری برداشت کنند که باید حتماً فایل اجرایی در این لایه باشه
اما این درست نیست و ممکنه لایه Application متشکل از یک فایل اجرایی و چندین فایل کتابخانه باشه که وظایف مربوط به طراحی نما، ایجاد فرم ها، دریافت و رودی ها و نمایش خروجی هارو انجام میدن
مهم در برنامه نویسی لایه ای جداسازی و تعیین وظایف صحیح برای هر لایه و سطح دسترسی هست که هر لایه فقط و فقط به لایه زیریش دسترسی دارد

FastCode
یک شنبه 16 فروردین 1394, 20:33 عصر
.
سلام.
فکر میکنم مشکلی که در هر دو پست وجود داره اینه که هم به layer و هم به tier گفتیم لایه.
stackoverflow.com/questions/120438/whats-the-difference-between-layers-and-tiers

am_al_59
یک شنبه 16 فروردین 1394, 21:25 عصر
دقیقاً شما درست فرمودید tier ها جداسازی های فیزیکی بخش های مختلف برنامه هستند مثل اینکه دقیقاً DLL های متعددی داشته باشیم
اما لایه ها از نظر عملکرد منطقی از هم جدا میشن اما خودشون ممکنه شامل چندین فایل کتابخانه ای مجزا باشن