PDA

View Full Version : دوستان برنامه حسابداری رو 3 لایه بنویسم بهتره یا معمولی...



saeedhushmand
یک شنبه 08 مرداد 1391, 13:44 عصر
دوستان برنامه حسابداری رو 3 لایه بنویسم بهتره یا معمولی...

hakim22
یک شنبه 08 مرداد 1391, 13:47 عصر
بستگی داره که چه کسی و چگونه قراره از برنامه استفاده کنه !

uniqueboy_ara
یک شنبه 08 مرداد 1391, 13:54 عصر
اصلا 1% هم تو این قضیه شک نکن
100% سه لایه بنویس، تا در آینده هم برای تغییراتش دستت باز باشه!

saeedhushmand
یک شنبه 08 مرداد 1391, 13:57 عصر
به فرض برنامه رو یک شرکت بزرگ قراره استفاده کنه ... بعد دلیلشم بهم بگو

ali_habibi1384
یک شنبه 08 مرداد 1391, 14:14 عصر
به فرض برنامه رو یک شرکت بزرگ قراره استفاده کنه ... بعد دلیلشم بهم بگو
معمولي يعني چي؟ اسپاگيتي كد؟!:اشتباه:
خب اسپاگيتي كد بهتره چون پسفردا هيچكي جز خودت نميتونه روش كار كنه!:قهقهه:
سوالت مثل اينه كه بگي ‍ژيان بخرم يا زانتيا! دليلش چيه؟

hakim22
یک شنبه 08 مرداد 1391, 14:30 عصر
اول اینکه همیشه کاملترین راه بهترین راه نیست !
درسته که چند لایه کردن برنامه یک روش درست و منطقی و خیلی هم عالی در نوشتن یک نرم افزار پایگاه داده ایه ولی شما باید زمان و انرژی زیادی رو صرف کنید تا
همه چیز رو در جای درستش قرار بدید.
برنامه باید کاملا شی گرا نوشته بشه نه شبه شی گرا.
طراحی یک شی حرفه ای کار بسیار وقت گیریه و نیاز به صدها و بلکه هزاران خط کد نویسی داره.
شما باید حساب کنید پروژه چقدر بزرگه و چقدر بازگشت سرمایه داره و آیا ارزش اینو داره همه ی این دردسر هارو بکشید و اینکارو بکنید !؟
چه بسا که بسیاری از نرم افزارهای پر طرفدار موجود در بازار خودشون رو اسیر خیلی از این مسائل نکرده اند و بیشتر دنبال نتیجه کار بودند.
مشکلی هم در برنامشون وجود نداره. واقعیت اینه که کاربر شما که در نهایت متوجه دو لایه بودن یا سه لایه بودن برنامه نمیشه.
کاربر نتیجه کار رو میبینه و واقعا فرق نمی کنه که در پشت ظاهر برنامه چه کد کثیفی خوابیده!

برای بروز رسانی و تغییر در برنامه هم برنامه های چند لایه همونقدر مشکل دارند که برنامه های دو لایه
و مثلا اگر یک فیلد به دیتابیس اضافه بشه همه ی لایه ها باید زنجیر وار تغییر کنند و چیزی از زحمت کم نمی کنه.

برنامه های چند لایه در محیط وب کارایی خودشون رو نشون میدن.
وقتی سایتی رو باز می کنید حجم بسیار کمی از داده رو دانلود می کنید و اصل قضیه در سرور آن سوی دنیا انجام میشه.
اگر وب سایت مثل یاهو بیاد و محیط ایمیلشو امروز کاملا تغییر بده برای شما که در این سر نشسته اید مشاهده نسخه ی جدید با نسخه ی قدیم تفاوتی نمی کنه و نیاز به نصب و یا دانلود فایل جدیدی ندارید. در واقع شما فقط اینترفیس رو مشاهده می کنید و کلاسها و اشیا و سایر dll های مورد نیاز برای گزارش گیری در سرور انجام میشه.
ولی برای یک نرم افزار حسابداری که نهایتا 10 نفر قراره ازش همزمان استفاده کنند و هزاران نرم افزار مشابه دیگه هم وجود داره که کارشو داره به نحو عالی انجام میده
هر چقدر هم که خریدار بزرگ باشه چه فرقی می کنه که شما در چند لایه کار کردید !؟
هر تغییری هم در نرم افزار بوجود بیاد روی ده سیستم کپی میشه. در مقایسه زمانی خیلی کمتر از مدت زمانی که قرار صرف پیاده کردن برنامه کنید طول می کشه.

ali_habibi1384
یک شنبه 08 مرداد 1391, 14:48 عصر
اول اینکه همیشه کاملترین راه بهترین راه نیست !
درسته که چند لایه کردن برنامه یک روش درست و منطقی و خیلی هم عالی در نوشتن یک نرم افزار پایگاه داده ایه ولی شما باید زمان و انرژی زیادی رو صرف کنید تا
همه چیز رو در جای درستش قرار بدید.
برنامه باید کاملا شی گرا نوشته بشه نه شبه شی گرا.
طراحی یک شی حرفه ای کار بسیار وقت گیریه و نیاز به صدها و بلکه هزاران خط کد نویسی داره.
شما باید حساب کنید پروژه چقدر بزرگه و چقدر بازگشت سرمایه داره و آیا ارزش اینو داره همه ی این دردسر هارو بکشید و اینکارو بکنید !؟
چه بسا که بسیاری از نرم افزارهای پر طرفدار موجود در بازار خودشون رو اسیر خیلی از این مسائل نکرده اند و بیشتر دنبال نتیجه کار بودند.
مشکلی هم در برنامشون وجود نداره. واقعیت اینه که کاربر شما که در نهایت متوجه دو لایه بودن یا سه لایه بودن برنامه نمیشه.
کاربر نتیجه کار رو میبینه و واقعا فرق نمی کنه که در پشت ظاهر برنامه چه کد کثیفی خوابیده!

برای بروز رسانی و تغییر در برنامه هم برنامه های چند لایه همونقدر مشکل دارند که برنامه های دو لایه
و مثلا اگر یک فیلد به دیتابیس اضافه بشه همه ی لایه ها باید زنجیر وار تغییر کنند و چیزی از زحمت کم نمی کنه.

برنامه های چند لایه در محیط وب کارایی خودشون رو نشون میدن.
وقتی سایتی رو باز می کنید حجم بسیار کمی از داده رو دانلود می کنید و اصل قضیه در سرور آن سوی دنیا انجام میشه.
اگر وب سایت مثل یاهو بیاد و محیط ایمیلشو امروز کاملا تغییر بده برای شما که در این سر نشسته اید مشاهده نسخه ی جدید با نسخه ی قدیم تفاوتی نمی کنه و نیاز به نصب و یا دانلود فایل جدیدی ندارید. در واقع شما فقط اینترفیس رو مشاهده می کنید و کلاسها و اشیا و سایر dll های مورد نیاز برای گزارش گیری در سرور انجام میشه.
ولی برای یک نرم افزار حسابداری که نهایتا 10 نفر قراره ازش همزمان استفاده کنند و هزاران نرم افزار مشابه دیگه هم وجود داره که کارشو داره به نحو عالی انجام میده
هر چقدر هم که خریدار بزرگ باشه چه فرقی می کنه که شما در چند لایه کار کردید !؟
هر تغییری هم در نرم افزار بوجود بیاد روی ده سیستم کپی میشه. در مقایسه زمانی خیلی کمتر از مدت زمانی که قرار صرف پیاده کردن برنامه کنید طول می کشه.
هميشه بهترين راه كاملترين راهه! اين جزء بديهياته.
برنامه نويسي لايه اي (شي گرا) جهت سرعت بخشيدن و نظم بخشيدن به كد نويسي شما حالا مياي ميگي كار وقت گيريه؟! عجب بابا...
درباره برنامه نويسي لايه اي و سرعت وب يه توضيحي بهم ميديد؟ نشنيده بودم اينارو...

fjm11100
یک شنبه 08 مرداد 1391, 15:00 عصر
چندتا پرسش:
1- آیا پروژه بزرگی است یک کوچک؟
2- آیا یک ماژول از یک سیستم جامع و بزرگ است یا نرم افزار انفرادی؟
3- آیا قرار است بصورت package بفروشی یا فقط یک پروژه برای یک جای خاص است و تمام؟
4- آیا نگه داری و توسعه دارد یا خیر؟
اگر جوابهای بالا مثبت است حتما لایه ای کار کن و اصول شی گرایی را هم رعایت کن

Arash_janusV3
یک شنبه 08 مرداد 1391, 15:01 عصر
اول اینکه همیشه کاملترین راه بهترین راه نیست !
درسته که چند لایه کردن برنامه یک روش درست و منطقی و خیلی هم عالی در نوشتن یک نرم افزار پایگاه داده ایه ولی شما باید زمان و انرژی زیادی رو صرف کنید تا
همه چیز رو در جای درستش قرار بدید.
برنامه باید کاملا شی گرا نوشته بشه نه شبه شی گرا.
طراحی یک شی حرفه ای کار بسیار وقت گیریه و نیاز به صدها و بلکه هزاران خط کد نویسی داره.
شما باید حساب کنید پروژه چقدر بزرگه و چقدر بازگشت سرمایه داره و آیا ارزش اینو داره همه ی این دردسر هارو بکشید و اینکارو بکنید !؟
چه بسا که بسیاری از نرم افزارهای پر طرفدار موجود در بازار خودشون رو اسیر خیلی از این مسائل نکرده اند و بیشتر دنبال نتیجه کار بودند.
مشکلی هم در برنامشون وجود نداره. واقعیت اینه که کاربر شما که در نهایت متوجه دو لایه بودن یا سه لایه بودن برنامه نمیشه.
کاربر نتیجه کار رو میبینه و واقعا فرق نمی کنه که در پشت ظاهر برنامه چه کد کثیفی خوابیده!

برای بروز رسانی و تغییر در برنامه هم برنامه های چند لایه همونقدر مشکل دارند که برنامه های دو لایه
و مثلا اگر یک فیلد به دیتابیس اضافه بشه همه ی لایه ها باید زنجیر وار تغییر کنند و چیزی از زحمت کم نمی کنه.

برنامه های چند لایه در محیط وب کارایی خودشون رو نشون میدن.
وقتی سایتی رو باز می کنید حجم بسیار کمی از داده رو دانلود می کنید و اصل قضیه در سرور آن سوی دنیا انجام میشه.
اگر وب سایت مثل یاهو بیاد و محیط ایمیلشو امروز کاملا تغییر بده برای شما که در این سر نشسته اید مشاهده نسخه ی جدید با نسخه ی قدیم تفاوتی نمی کنه و نیاز به نصب و یا دانلود فایل جدیدی ندارید. در واقع شما فقط اینترفیس رو مشاهده می کنید و کلاسها و اشیا و سایر dll های مورد نیاز برای گزارش گیری در سرور انجام میشه.
ولی برای یک نرم افزار حسابداری که نهایتا 10 نفر قراره ازش همزمان استفاده کنند و هزاران نرم افزار مشابه دیگه هم وجود داره که کارشو داره به نحو عالی انجام میده
هر چقدر هم که خریدار بزرگ باشه چه فرقی می کنه که شما در چند لایه کار کردید !؟
هر تغییری هم در نرم افزار بوجود بیاد روی ده سیستم کپی میشه. در مقایسه زمانی خیلی کمتر از مدت زمانی که قرار صرف پیاده کردن برنامه کنید طول می کشه.

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

saeedhushmand
یک شنبه 08 مرداد 1391, 15:08 عصر
Arash_janusV3 (http://barnamenevis.org/member.php?118123-Arash_janusV3) حرف دلم زد ، منم حرف ایشون قبول دارم....

the king
یک شنبه 08 مرداد 1391, 15:40 عصر
از من به شما دوستان نصیحت، از افراط و تفریط پرهیز کنید. انعطاف پذیری رو در انتخاب شیوه طراحی سیستم تون حفظ کنید و سر علاقه یا تعصب به یک سبک و
شیوه خاصی نچسبید. قرار نیست یک ساختار و سیستم ایده آل وقت و هزینه اضافی طراحی اش رو بدون دلیل موجه به شما تحمیل کنه. انرژی و زمان و
هزینه یکی از مهمترین پارامتر هایی است که باید حواستون بهش باشه، به مراتب مهم تر از تعداد لایه ها و کلاس ها و سطر کدی که نوشته اید.

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

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

hakim22
یک شنبه 08 مرداد 1391, 15:58 عصر
باید به شما بگم که من بیشتر از 10 سال است که برای بسیاری از شرکتها دهها نرم افزار نوشته ام که خوشبختانه همش هم به خوبی کار میکنه و خیلی هم منظمه !
اتفاقا بیشتر از هر کسی از کلاس و شی و لایه بندی استفاده کرده ام. اصلا پروژه های من خیلی وقته که از WCF استفاده می کنند و روی ASP.NET MVC و Silverlight پیاده شده اند.
ولی بحث من وقت و سرمایه است. اگر شما برای نوشتن یک برنامه چند لایه ی حرفه ای پول می گیرید برای یک برنامه چند لایه حرفه ای هم وقت بگذارید. ولی اگر به اندازه زحمت خودتون برداشت نمی کنید وقت نگذارید. خیلی هم ساده !
چند لایه ای کردن قابلیت Code Resuse رو به شما میده ولی نوشتن کد برای بار اول خیلی وقت گیر تر میشه
چند سال پیش یک پروژه خاص رو بدون Data mapping و Entity frame work و فقط با استفاده مستقیم از کدهای sql به صورت رشته ای نوشتم و بیشتر از 3 روز وقت نگرفت . الان هم در یک شرکتی بیشتر از 50 کاربر در حال استفاده از برنامه هستند و تا به حال مشکلی نداشته . حجم کد : 5000 خط
ولی وقتی شروع کردم به اینکه بیام و همون پروژه رو با توجه به اینکه دیتابیسش آماده بود و اینتر فیسش هم کامل بود به صورت شی گرا و در لایه های کاری مجزا پیاده کنم بعد از یک هفته هنوز مشغول کار بودم و اصلا دلیلی برای ادامه ی کار ندیدم. حجم کدم هم حدود دو برابر شده بود.

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

توجه شما رو جلب می کنم به سورس نسخه ی ویندوز سرور 2000 که اشتباها در سرور مایکروسافت قرار گرفت و به سرقت رفت. مایکروسافت که همیشه دم میزنه از کلاس بندی و همین لایه کردن و اصلا خودش همه ی این تکنولوژی ها رو بوجود آورده سورس کدی داره که فاجعه ایست در کد نویسی .
در عمل ما از ایده آل ها دوریم !

hakim22
یک شنبه 08 مرداد 1391, 16:05 عصر
سوال من اصلا اینه تا به حال چند برنامه نوشته اید که یکی از کلاسهاشو عینا از پروژه های قبلی لود کرده بودید ؟
یا چند بار از شما خواسته شده برنامه ای رو که نوشته اید رفع عیب یا بروز کنید تا بعد قرار باشه روی چند سیستم نصب بشه و به مشکل برخورد کرده باشید !؟

nilmil_nil
یک شنبه 08 مرداد 1391, 16:10 عصر
دوست عزیز کاملا با حرف شما مخالفم TheKing عزیز
پس با توجه به حرفای شما باید فقط با ویزارد ها کار کنیم و دیگه کد بی کد
برنامه نویس اونیه که تمام کد ها رو خودش به صورت بهینه بنویسه و از اونا تو بقیه پروژهاش استفاده کنه
نه اینکه بشینه با ویزارد عین یه دانشجوی ساده که فقط میخواد یه درس رو پاس کنه(البته جسارت به دانشجو ها نباشه خودمم دانشجو هستم.چون دیدم بعضیا فقط فکر پاس کردن درس هستن ...)
بگذریم
امید وارم نظری که دادم باعث دلخوری شما نشه

nilmil_nil
یک شنبه 08 مرداد 1391, 16:13 عصر
من چند تا برنامه نوشتم با کلاس که خیلی توی باگ گیری و نوشتن کد ها بهم کمک کرد
الان هم یه برنامه نوشتم که یه دیتابیسرو بهش میدی و خودش کلاس های برنامه رو با توجه به جداول و فیلد ها می سازه
و بعد میتونی در صورت نیاز تغییراتی توی این کلاس ها بدی
فکرشو بکنید توی یه دکمه قراره چند تا کار انجام بشه که همش سرو کارشون با دیتابیس باشه و هی شما میخواید به دیتابیس وصل بشین و دادها رو لود کنید اگه به کمک کلاس ها و توابع نوشته نشه
خیلی کد میشه....
و برای استفاده مجدد هم یه مثال کوچیک میزنم
مثلا یه برنامه حسابداری نوشتین که توش کلاس اشخاص رو دارین
حالا یه برنامه دیگه قراره بنویسید که برای یه رستوران هست به نظر خودتون دوباره نمیتونید از این کلاس اشخاص استفاده کنید ؟
مسلما میشه به یه سر تغییرات جزئی استفاده کرد

gwbasic
یک شنبه 08 مرداد 1391, 16:15 عصر
من واقعا متوجه نشدم که شما از مطرح کردن این سوال می خواستید به چه نتیجه ای برسید. به فرض من می گم بنویس شما می نویسی و اگه بگم ننویس شما نمی نویسی. یعنی شما تموم تواناییهای لازم رو دارید فقط مونده که مشورت بگیرید که بنویسید یا نه ؟

این وظیفه معمار نرم افزار یا همون Designer هست که ساختار پروژه رو مشخص می کنه. این شخص کسی هست که با تموم تکنولوژی ها آشنایی داره و می تونه تشخیص بده برای این پروژه از چه تکنولوژی هایی باید استفاده بشه. بخشی از کار این شخص مشخص کردن اصول چند لایه نویسی هست
بنابراین مراحلی باید طی بشه که ما بتونیم یک طراحی درست برای یک پروژه خاص داشته باشیم. یواش یواش باید یاد بگیریم که Design Pattern ها چی هستند Best Practise ها چی هستند.چطوری باید منطق برنامه رو ازUI جدا کنیم و ...
ولی چیزی که خیلی مهم هست و ما هممون می دونیم به قول آرش نظم و انظباط هست. کدی که قراره یک سیستم رو پیاده سازی کنه حتما باید نظم داشته باشه و هر چیزی در جای خودش استفاده بشه تا درک و نگهداری اون در آینده آسونتر باشه. دلیل بوجود اومدن همه Best Practise ها رسیدن به این مورد هست . بنابراین فکر نمی کنم کسی نسبت به این موضوع شک داشته باشه که آیا من همینطوری بنویسم یا با استفاده از اصول و Principle ها کد بنویسم فقط چیزی که این وسط می مونه توانایی شخص هست که جز با سالها تلاش و مطالعه بدست نمی آید و چیزی نیست که بشه به یک سوالو جواب بهش رسید

rezamansori
دوشنبه 09 مرداد 1391, 18:15 عصر
ببخشید مزاحم شدم
اما سه لایه ، چارلایه پنج لایه و... لایه یعنی چی؟

fjm11100
دوشنبه 09 مرداد 1391, 21:59 عصر
اما سه لایه ، چارلایه پنج لایه و... لایه یعنی چی؟
لایه چیزیه که ما ایرانی ها خیلی جوگیرش شدیم. طرف برنامه محاسباتی نوشته بعد میگه 3 لایه کار کردم!!! حتی Security یا Common را هم خیلی ها لایه فرض می کنند بعد طرف میگه ما 7 لایه کار می کنیم!!! در حالیکه هنوز فرق Layer و Tier را نمیدونه:عصبانی++:
بدبختی اینه که هنوز خیلی ها فکر می کنند شی گرایی اومده و بساط برنامه نویسی ساخت یافته و تابعی را برچیده!!! یا فکر می کنند اگر خیلی خفن شی گرایی کار کنند برنامه نویس منظم و کاردرستی هستند. یا بعضی ها فکر می کنند یک پروژه ERP را هم میشه تف مال در لحظه فکر کرد و کد زد! سعی کن از هر چیزی سر جاش استفاده کنی.

uniqueboy_ara
سه شنبه 10 مرداد 1391, 01:08 صبح
ببخشید مزاحم شدم
اما سه لایه ، چارلایه پنج لایه و... لایه یعنی چی؟
یه نگاه به اینجا (http://www.codeproject.com/Articles/36847/Three-Layer-Architecture-in-C-NET)بنداز!

علی فتحی
پنج شنبه 21 فروردین 1393, 14:17 عصر
سلام دوست خوبم منم حسابداری نوشتم .شما هدش رو برگردون تمام موارد حسابداری رو داره.
تو همین سایت حسابداری هدش.