PDA

View Full Version : حرفه ای: برنامه نویسی تیمی و ترکیب دو سایت



parsaei
دوشنبه 31 خرداد 1395, 12:28 عصر
با سلام
بنده برای طراحی یه سامانه یک تیم راه اندازی کردم و هرکدام دارند روی بخشی از پروژه کار می کنند.
سیستم با asp.net هست. میخوام هر نفر که زیرسامانه خودش را طراحی کرد نهایتا همه را با هم به صورت یک سایت پابلیش کنم طوری که تحت یک دامنه و یک یوزر پسورد کاربر قابل دسترس باشه و کاربر نیاز نباشه مدام روی آدرس ها جابجا شده و مجدد لاگین کنه.

حالا یه مسئله دارم:
چطور میشه سایت هایی که که هر نفر طراحی کرده برای ایجاد سایت نهایی با هم ترکیب کرد؟ به طوری که بخش ها با هم کمترین درگیری را پیدا کنند.
مثلا دوست دارم ترجیحا وب کانفیگ ها از هم جدا باشند و هر زیر سیستم را درون یک پوشه جداگانه قراردهم. تا اینجا که من کار کردم تمام کلاسها و دیتاست ها درون app_data باید باشند، خوب من نمیخوام کلاسها و دیتاست های تمام پروژه ها را با هم یکجا جمع کنم که شلوغ کاری بشه.
ممنون می شوم راهنمایی بفرمایید. تشکر

bomb23
دوشنبه 31 خرداد 1395, 15:05 عصر
سلام

شما باید برای کارهای تیمی از یک ورژن کنترل استفاده کنید که برای ما .net کارها بهترینش team foundation server هست. شما میتونید سیاست های مختلف رو روی اون پیاده کنید.
لینک آموزش TFS (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwir0fW7rbbNAhUKAxoKHYdnBPwQFggoMAE&url=http%3A%2F%2Fparsrad.com%2FContents%2F1129%2F% 25D8%25A2%25D9%2585%25D9%2588%25D8%25B2%25D8%25B4-%25DA%25A9%25D8%25A7%25D8%25B1-%25D8%25A8%25D8%25A7-team-foundation-server-%25D8%25A8%25D9%2587-%25D8%25B2%25D8%25A8%25D8%25A7%25D9%2586-%25D8%25B3%25D8%25A7%25D8%25AF%25D9%2587-%25D8%25A8%25D8%25B1%25D8%25A7%25DB%258C-%25D8%25AA%25D8%25A7%25D8%25B2%25D9%2587-%25DA%25A9%25D8%25A7%25D8%25B1%25D9%2587%25D8%25A7-1-&usg=AFQjCNGeeCDwYzCcWh6R7QxPkeEajcMNkg&sig2=AYv3ZqSjgZyJIzX4I31RvQ)










-------------------------------------------------------------------------------------------------------------------------------
تخفیف 20% ویژه هاست و دامنه ir به مناسبت ماه رمضان
http://parsrad.com

(https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwir0fW7rbbNAhUKAxoKHYdnBPwQFggoMAE&url=http%3A%2F%2Fparsrad.com%2FContents%2F1129%2F% 25D8%25A2%25D9%2585%25D9%2588%25D8%25B2%25D8%25B4-%25DA%25A9%25D8%25A7%25D8%25B1-%25D8%25A8%25D8%25A7-team-foundation-server-%25D8%25A8%25D9%2587-%25D8%25B2%25D8%25A8%25D8%25A7%25D9%2586-%25D8%25B3%25D8%25A7%25D8%25AF%25D9%2587-%25D8%25A8%25D8%25B1%25D8%25A7%25DB%258C-%25D8%25AA%25D8%25A7%25D8%25B2%25D9%2587-%25DA%25A9%25D8%25A7%25D8%25B1%25D9%2587%25D8%25A7-1-&usg=AFQjCNGeeCDwYzCcWh6R7QxPkeEajcMNkg&sig2=AYv3ZqSjgZyJIzX4I31RvQ)

parsaei
سه شنبه 01 تیر 1395, 10:23 صبح
اینی که میگید قبول. البته دستی هم میشه که خوب کار صحیحی نیست و سخته و پرخطا
اما سوال منو درست متوجه نشدید.

من میخوام که زیر سیستم هایی که توسط افراد طراحی میشه و نهایتا به پروژه اصلی اضافه میشه کمترین درگیری را با هم پیدا کنند تا پیچیدگی پایین بیاد.
مثلا فرض کنید من سیستم جامع اداری دارم طراحی می کنم. یه نفر بخش کارگزینی، شخص دیگر بخش اموال و یکی هم انبار را داره مینویسه. میخوام که هر بخش را وقتی طراحی شد به طوری توی یک پوشه جداگانه قرار بدم که کدها و کلاس ها با هم قاطی نشن. با نظر گرفتن مثال، الان سه پوشه شامل زیر سیستم ها داریم.
اما برای کلاس ها و دیتاست ها مجبوریم که همشون توی پوشه app_code قرار بگیرند که خوب اینطوری اون پوشه شلوغ میشه. همچنین ترجیح میدادم هر زیرسیستم برای خودش علاوه بر webConfig اصلی، یک وب کانفیگ دیگه هم داشته باشه.

آیا می شه چنین کاری کرد؟ اگه نشه که کار واقعا سخته

bomb23
سه شنبه 01 تیر 1395, 11:14 صبح
سلام
دوست عزیز اصلا روالی رو که شما میخوای پیش بگیری درست نیست! ببینید یک سیستم حتما باید حداقل یک تحلیلگر داشته باشه و بعدش حداقل یک معمار که بشینه ساختار پروژه رو ایجاد کنه و تعدادی برنامه نویس که بشینن کدهای برنامه مثلا اتصال به دیتابیس ها و... رو کد نویسی کنند. حالا مشکل روال شما این هست که همه برنامه نویس ها رو یک تحلیلگر و یک معمار هم میدونید. بعدا خیلی جاها به مشکل میخورید. شما برنامتون یه برنامه جامع هست و خب قطعا زیر سیستم ها در ارتباط و تعامل با هم هستند مشکل اینجا به وجود میاد که مثلا فرض کنید یکی از برنامه نویس ها که کد بخش کارگزینی رو میزنه شماره پرسنلی رو به صورت int ذخیره کرده ولی یه برنامه نویس توی یه بخش دیگه که به شماره پرسنلی نیاز داره اون رو به صورت string ذخیره کرده یکی دیگه هم به صورت GUID و... این یک مثال کوچیکه مشکلات بسیار زیاد دیگه هم ممکنه پیش بیاد.
توصیه من اینه که ابتدا ساختار پروژه در بیاد و مدل ها (وساختار یکپارچه دیتابیس) در بیاد بعد روال ها توسط یکی که تجربش توی گروه از همه بیشتره نوشته بشه و در انتها بقیه شروع کنند به پیاده سازی روال ها و... . حتما هم از tfs استفاده کنید.









-------------------------------------------------------------------------------------------------------------------------------
تخفیف 20% ویژه هاست و دامنه ir به مناسبت ماه رمضان
http://parsrad.com

(https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwir0fW7rbbNAhUKAxoKHYdnBPwQFggoMAE&url=http%3A%2F%2Fparsrad.com%2FContents%2F1129%2F% 25D8%25A2%25D9%2585%25D9%2588%25D8%25B2%25D8%25B4-%25DA%25A9%25D8%25A7%25D8%25B1-%25D8%25A8%25D8%25A7-team-foundation-server-%25D8%25A8%25D9%2587-%25D8%25B2%25D8%25A8%25D8%25A7%25D9%2586-%25D8%25B3%25D8%25A7%25D8%25AF%25D9%2587-%25D8%25A8%25D8%25B1%25D8%25A7%25DB%258C-%25D8%25AA%25D8%25A7%25D8%25B2%25D9%2587-%25DA%25A9%25D8%25A7%25D8%25B1%25D9%2587%25D8%25A7-1-&usg=AFQjCNGeeCDwYzCcWh6R7QxPkeEajcMNkg&sig2=AYv3ZqSjgZyJIzX4I31RvQ)

parsaei
سه شنبه 01 تیر 1395, 16:24 عصر
برادر من آخه چرا سوال منو یه چیز دیگه جواب میدی؟!
این چیزهایی که میگید کاملا صحیح و بنده هم رعایت کردم و تمامی تحلیل و هماهنگ سازی افراد توسط 2 نفر از اعضا در حال انجام هست.

اما سوال من چیز دیگری بود!

bomb23
چهارشنبه 02 تیر 1395, 10:28 صبح
من که پاسخ دادم! شما در سوالتون یک روش مطرح کردید که روالش نادرسته!
شما برای سهولت کار باید از یک معماری طراحی استفاده کنید(هر پروژه بزرگی بدون رعایت معماری های نرم افزاری 99/9% شکست میخوره!) مثلا معماری n-layer.
با استفاده از این معماری کاملا فضای کاری بخش های مستقل از هم مشخص میشه و کاملا قابل تفکیک هستند.
به عنوان مثال یه لایه داده دارید که کلیه فعالیت های مربوط به دیتابیس داخل اون قرار میگیره یه لایه دارید که دیتاها رو نمایش میدید که میشه اون پوشه های شما یه لایه هست که سرویس ها رو برای نمایش آماده سازی میکنه و... شما بر اساس پروژتون خودتون باید معماری پروژه رو طراحی کنید. حالا توی این شرایط دیگه برنامه نویس های زیر سیستم های شما خودشون نمیشینن کد اتصال به دیتا بیس هر کی هر جور خواست بزنه! شما یه سری روال تعریف کردی توی لایه دیتا که اونا فقط فراخونی میکنن و دیتا رو با اون ذخیره میکنند! حالا این معماری توسط معمار برنامه طراحی میشه و همون حرف های که توی پست قبلیم گفتم...!

parsaei
پنج شنبه 03 تیر 1395, 16:00 عصر
آقا بازهم متوجه منظورم نشدید. اصلا مشکل من بحث معماری نیست
یک مثال میزنم. فرض کنید دو نرم افزار داریم :A , B
قراره این دو نرم افزار با هم تلفیق شده و سامانه AB به وجود بیاد.
در حالت عادی کد نویسی به این صورت میشه که page های سایت A درون پوشه A و page های سایت B را درون پوشه B می ریزیم تا اینجا مشکلی نیست.
اما سایت B یکسری کلاس های مخصوص خودش داره و همچنین سایت A. گرچه یکسری کلاس مشترک هم دارند. در روال عادی مجبوریم تمام کلاس ها را در یک پوشه مشترک با نام App_Code قرار دهیم. مشکل من اینجاست و نمیخوام کلاسهای مربوط به هردوسایت را در یک پوشه بریزم. میخوام در پوشه های جدا باشند تا شلوغ نشه و تفکیک باشند.
برای web config هم همینطور

bomb23
دوشنبه 14 تیر 1395, 10:59 صبح
سلام
خب اگر روالی که میخواهید پیش بگیرید همینی که گفتید هست دیگه من نمیدونم سوال چی هستش؟!
ولی اگر دارید نظر میپرسید به نظر من:
این روالی که با پوشه بندی میخواهید دو تا پروژه رو جدا کنید کاملا غلط و قدیمی هستش. فرض کنید بخواید یه publish جدید فقط از پروژه A بگیرید در حالی که پروژه B تغییری نکرده اصلا چنین امکانی در معماری شما وجود نداره و دیده نشده. کلا بحث ورژن گیری هم تعطیل میشه و غیره... که مباحث بسیار مهمی در پروژه های بزرگ هستند. اما راه حل چیه: شما باید از یک معماری مناسب برای پروژتون استفاده کنید مثلا معماری n-layer ! در معماری N-layer میتونید چند پروژه برای لایه نمایش داشته باشید که میشه همون پروژه های A , B ,... یک لایه سرویس دارید که همه سرویس ها روی اون عملیاتی میشه یک لایه داده هست که همه اتصالات به بانک فایل و... اونجا انجام میشه. یک میان لایه مدل دارید که مدل ها داخلش قرار میگیره. و این بین همه پروژه های لایه نمایش مشترکه و اصلا کار اصولی نیست اینها از هم جدا باشند. این روش پایه پروژه های بزرگ الان ایران و دنیاست!

kamranetemadi
چهارشنبه 16 تیر 1395, 01:49 صبح
پیشنهاد میکنم چنتا پروژه متن باز asp رو ببینید
مثلا NopCommerce یا SmartStore و ...

piter11
جمعه 18 تیر 1395, 02:20 صبح
برای پروژه های تیمی بهترین متد برنامه نویسی asp.net mvc هستش یه تیم میتونه واسه قالب بخش view کد بنویسه
بقیه هم بخش های سمت سرور