PDA

View Full Version : حرفه ای: نوشتن یک core یا هسته



ramin_ramin
شنبه 09 آبان 1388, 14:21 عصر
با سلام
با توجه به مهم بودن و خیلی مشکل بودن این سوال از مدیریت سایت خواهش میکنم اگه میتونن کمک کنند
1) من مثلا یک برنامه سنگین دارم که میتونم آن برنامه را به چند برنامه کوچک تقسیم کنم
خواستم ببینم معماری در این گونه برنامه ها چگونه می باشد.

2) اگر من بخواهم که یک هسته مرکزی داشته باشم که با لایه ها و یا برنامه های دیگه ارتباط برقرار کنه در دات نت این گونه معماری ها چگونه پیاده سازی میشه

قبلا خیلی خیلی از همه دوستان تشکر میکنم

Navid7h
یک شنبه 10 آبان 1388, 00:07 صبح
جناب رامین
با سلام


اونقدر سئوالتون کلی و مبهمه که ...


گر من بخواهم که یک هسته مرکزی داشته باشم که با لایه ها و یا برنامه های دیگه ارتباط برقرار کنه در دات نت این گونه معماری ها چگونه پیاده سازی میشه

ببینید اگه یک طراحی واحد یا چند طراحی کامل وجود داشت دیگه لازم به این همه تحلیلگر ، معمار سیستم و ... نبود.

اگر مد نظر شما برنامه نویسی لایه ای است و ایجاد یک هسته به عنوان Framework یا Common یا هر چیز دیگه...
این بستگی به طراحی شما، نیاز های Application شما و ... داره

ولی به صورت کلی یک سری Functionality کلی وجود داره که Cross Cutting هستند
مثل
Security
Auditing
Logging
Exception Handling
و ..

اینها می تونند Functionality های کلی باشند


1.حتما به Application Architecture Guide 2.0 نگاهی بیاندازید.

http://apparchguide.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20586

بسیاری از معماری ها و نوع ارتباط لایه ها در آنها در اینجا شرح داده شده است. منبع بسیار بسیار خوبی است. این مجموعه ای از Best Practice هاست.
ولی ممکن است دچار آفت Copy Paste شویم ! سعی کنید کمی در مورد اینکه نیازهای سیستم شما با کدام معماری منطبق است فکر کنید و کمی آنرا Customize کنید.

2.در مورد الگوهای مربوط به معماری از کتاب های جناب Martin Fowler استفاده کنید.

martinfowler.com/

3. در مورد الگوهای برنامه نویسی (الگوهای پیاده سازی یا Design Patterns ) به Gang Of 4 سری بزنید.

http://www.dofactory.com/Default.aspx

4. تا می توانید Source Code سیستم های خوب را بررسی کنید.
برای مثال انواع CMS ها. مثال DNN

5.تا میتوانید در مورد طراحی سیستم مطلب بخوانید فکر کنید و از تجربیات دیگران بهره مند شوید.

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


امیدوارم موفق سلامت و پایدار باشید.

JaguarXF
یک شنبه 10 آبان 1388, 01:19 صبح
باید همه چیزت رو بصورت ocx و کنترل های جدا جدا بنویسی .

مثلا یک فرمی در یکی از برنامه هات داری که مشخصات افراد رو نشون میده. کاملا غلطه اگه چهار تا لیبل بندازی روی فرم و به دیتابیس وصلشون کنی! شاد و خوشحال! ... مثلا باید کنترل جداگانه ای نوشته شده باشه برای Person Demographics .... که هر برنامه ای داری هم به هر زبونی ، همون رو استفاده کنه .

یک تکست باکس برای سرچ افراد هم اگه داری - که مثلا میتونه بر اساس نام ، کد ملی و مثلا کد سازمانی خاص - سرچ رو انجام بده ، این رو نباید داخل هر برنامه ای تعریف کنی . باید یک کنترل Pesron Lookup کلا داشته باشی تا آخر عمر !

در بحث اعتبار سنجی کاربران هم چون چندین app داری ، کاملا غلطه اگر طرف لاگین کرده به App A و بخواد از داخل اون مثلا App B رو اجرا کنه ، ولی دوباره ازش پسورد خواسته باشه . باید فریم ورکی طراحی کنی که اینرو بای پس کنه .

در بحث اینکه چه کاربری به چه قسمتی از چه برنامه ای دسترسی داره یا چه اطلاعاتی رو میتونه ببینه و غیره هم بازم غلطه اگه این تنطیمات در سطح خود همون برنامه انجام بشه . باید یک برنامه کاملا جداگونه مثلا Task Access نوشته بشه ، هر برنامه ای یک بخشی در این برنامه داشته باشه و security ها اینجا تعریف بشند . همه برنامه ها هنگام لود شدن باید اطلاعات سکیوریتی خودشون رو از این برنامه مادر دریافت کنند و ... .........

xvision
یک شنبه 10 آبان 1388, 08:42 صبح
JaguarXF (http://barnamenevis.org/forum/member.php?u=90128) عزيز

مطالبي كه نوشتين بسيار جالب بود در اين رابطه هيچ منبع فارسي ( ترجيحا به علت بي سوادي ! ) يا به زبان اصلي يا بحث هايي كه توي انجمن شده باشه دارين كه معرفي كنين ؟

Navid7h
یک شنبه 10 آبان 1388, 10:14 صبح
در دات نت این گونه معماری ها چگونه پیاده سازی



باید همه چیزت رو بصورت ocx و کنترل های جدا جدا بنویسی .

:متفکر::متفکر: !!



من مثلا یک برنامه سنگین دارم که میتونم آن برنامه را به چند برنامه کوچک تقسیم کنم

راستی مدل برنامه نویسی SCSF را نیز بررسی کنید

ramin_ramin
سه شنبه 12 آبان 1388, 10:16 صبح
تو رو خدا دوستان ، این خیلی برای من مهم هست
من از آقای مداح خواهش میکنم اگر کمکی از دستشان بر میاید دریغ نکنند
بهترین منبع یک Sample هست

JaguarXF
چهارشنبه 13 آبان 1388, 05:56 صبح
JaguarXF (http://barnamenevis.org/forum/member.php?u=90128) عزيز

مطالبي كه نوشتين بسيار جالب بود در اين رابطه هيچ منبع فارسي ( ترجيحا به علت بي سوادي ! ) يا به زبان اصلي يا بحث هايي كه توي انجمن شده باشه دارين كه معرفي كنين ؟

ممنان.
منبع ندارم . به هیچ زبونی .
اینهایی که مختصرا اشاره تجربیات کاری خودمه.


تو رو خدا دوستان ، این خیلی برای من مهم هست
من از آقای مداح خواهش میکنم اگر کمکی از دستشان بر میاید دریغ نکنند
بهترین منبع یک Sample هست

باید دید شما اصلا چه تصوری از Core دارید ، وقتی ازش صحبت میشه .

مورد مهم دیگه ای که یادم رفت در پست قبلی بگم هم اینکه برنامه ای که FrameWork و یا Core داره ، بصورت یک دونه "تک برنامه" نباید ارائه بشه .

مثال: فرض کن برنامه ات برای یک سازمانه که بخشهای زیادی داره .
هر بخشی هم برای خودش کاری انجام میده . بنابراین برای هر بخش رو یکی از تیمهای شرکتت یک برنامه جدایی واسش مینویسه که اونها اجرا میکنند.
ولی یک Core داری که مثلا مدیر عامل اون سازمان ، اون برنامه رو اجرا میکنه. مدیر عامله نمیاد تک تک اون برنامه کوچیکها رو اجرا کنه . میاد برنامه بزرگه رو اجرا میکنه و به هرچیزی که اون برنامه کوچیکها انجام داده اند دسترسی داره . بخواد رکورد اضافه کنه هم همونجا اضافه میکنه . بخواد گزارشی ببینه هم اون تیمه باید گزارشش رو ساخته باشه/ یا فرمت استانداردش رو داشته باشه که تیم "کور" بتونه اون رو بسازه و توی این برنامه دیده بشه . ( با سیستم مدیریت تصمیم گیری اشتباه نگیرید. ربطی ندارند) . و...

موقع فروش محصول ، میگید که فریم ورک ما مثلا 10 میلیون تومن . حالا سازمان شما چه بخشهایی داره تا برنامه مورد نیاز اون بخشها رو هم بهت بفروشیم!.