-
سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
سلام دوستان عزیز،
پیش از آغاز فعالیت ، تاپیک "آغاز پیاده سازی طرح ارتقاء سطح علمی - ذکر جزییات" را مطالعه نمایید ،
در یکسری مباحث قصد داریم تا بر روی معماری چندلایه و مطالب مرتبط با آن گفتگو و تبادل نظر کنیم تا در نهایت با روش های پیاده سازی این مغماری آشنا شویم،
لطفا" در هر مرحله از بحث، تنها بر روی سوال طرخ شده گفتگو نمایید و همچنین از Copy/Paste کردن مقالات دیگر سایت ها خودداری کرده و در صورت لزوم تنها به معرفی لینک بسنده نمایید،
در قدم اول بحث خود را با بررسی مزایای به کار گیری این معماری آغاز می کنیم؛
قدم اول:
1) مزایای بهره گیری از معماری چند لایه چیست؟ و در صورت عدم پیاده سازی این معماری چه مشکلاتی به وجود خواهد آمد؟
قدم دوم:
1) در معماری 3 لایه برنامه به چه بخش هایی تقسیم می شود و هر یک چه وظیفه ای را بر عهده دارند و چگونه با یکدیگر ارتباط برقرار می کنند؟
قدم سوم: کار بر روی یک مثال عملی
مرحله فعال: قدم سوم
پ.ن : مطالبی که از سوی بنده مطرح میشود ، جهت به چالش کشیدن بحث میباشد و بعضا" ممکن است ساده یا با جواب مشخص و معلوم به نظر بیایند ، این بدان خاطر است که قصد بر این است تا این گفتگوها برای افرادی با سطح علمی پایین تر نیز مفید واقع شود و ممکن است این مطالب در ذهن آنها نیز مطرح گردد ، همچنین جهت این است که تمام جوانب نظر شخص شرکت کننده در گفتگو مورد بررسی قرار گیرد،
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
فکر می کنم مثل هر تخصص دیگری، استفاده از استاندارد های تعریف شده باعث سهولت فهم برای هر کسی یا حتی خود فرد (در صورت رجوع به کد بعد از مدت زمان زیاد) می شود.
احتمال استفاده از راه های ناکارآمد هم رو هم میتونه کاهش بده.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
قدم اول:
1) مزایای بهره گیری از معماری چند لایه چیست؟ و در صورت عدم پیاده سازی این معماری چه مشکلاتی به وجود خواهد آمد؟
استفاده از معماری چند لایه، برنامه نویسی رو شی گراتر، کد نویسی رو کمتر، اشکال زدایی رو راحتتر و قابلیت استفاده مجدد کد رو فراهم میکنه و به روند تولید نرم افزار سرعت میده.
هدف از معماری چند لایه، شکستن ساختار یک نرم افزار در حال تولید به قطعات کوچکتر است که هر کدام عهده دار وظایف خاصی هستند. بی شک،عدم استفاده از این معماری در تولید نرم افزار، امتیازات بالا رو به همراه نخواهد داشت!
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
لایه بندی امکان انجام کار گروهی ، و استفاده مجدد را فراهم میکند فرض کنید یک پروژه Windapp رو که لایه بندی هم شده بخواهیم ببریم و WebBase کنیم درصد زیادی از کدها مخصوصا لایه DAL و BL رو که تقریبا میشود کامل برد در پروژه بعدی . در ضمن شکل برنامه نویسی یک Tem خاص پیدا میکند که در صورت انجام یک پروژه با یک گروه برای کارهای بعدی هماهنگ تر میشود عمل کرد . زمان رو هم کم میکنه
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
استفاده از معماری چند لایه، برنامه نویسی رو شی گراتر، کد نویسی رو کمتر، اشکال زدایی رو راحتتر و قابلیت استفاده مجدد کد رو فراهم میکنه و به روند تولید نرم افزار سرعت میده.
هدف از معماری چند لایه، شکستن ساختار یک نرم افزار در حال تولید به قطعات کوچکتر است که هر کدام عهده دار وظایف خاصی هستند. بی شک،عدم استفاده از این معماری در تولید نرم افزار، امتیازات بالا رو به همراه نخواهد داشت!
بدون نقص بود!
نقل قول:
لایه بندی امکان انجام کار گروهی ، و استفاده مجدد را فراهم میکند فرض کنید یک پروژه Windapp رو که لایه بندی هم شده بخواهیم ببریم و WebBase کنیم درصد زیادی از کدها مخصوصا لایه DAL و BL رو که تقریبا میشود کامل برد در پروژه بعدی . در ضمن شکل برنامه نویسی یک Tem خاص پیدا میکند که در صورت انجام یک پروژه با یک گروه برای کارهای بعدی هماهنگ تر میشود عمل کرد . زمان رو هم کم میکنه
دقيقاً حتي احتياجي به جابه جايي DAL و BLL نيست و ميشه همون View كار رو به Web App تغيير داد كه با اين تغيير ساختار يه سري متدهايي هم بايد به DAL يا BLL اضافه بشه ولي در كل پيكربندي و استخوان بندي يا ساختار كار همون هستش. بهترين تعريف رو جناب hdv212 ارائه دادن.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
یک سوال از دوستان داشتم که آیا امنیت نرم افزار بالا میرود
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
فکر نکنم در امنیت نرم افزار تاثیری داشته باشه.چون شما می تونی همه کارهایی که در چند لایه می خواهی انجام بدی در یک لایه هم می تونی اون رو انجام بدی.....
همین الان یه مثال اومد تو ذهنم (البته نمی دونم تا چقدر می تونه مطلب رو برسونه)......
فرض کنید شما یک چند قطعه فلزی دارید که می خواهید اونها رو به هم وصل کنید.حالا شما می تونید اونها رو به هم جوش بدید یا اینکه اونها رو پیچ و مهره کنید.
به نظر شما اگه یکی از قطعه ها اشتباهی جاسازی داده شد یا اینکه قطعه ای پس از چند روز فرسوده شد توی کدوم روش می تونی راحت تر قطعه رو تعویض کنی؟
خوب مطمئنا اون که پیچ و مهره شده.در حالی که استحکام هر کدوم می تونه مثل هم باشه.....
هدف معماری چند لایه هم همین هست.همان طور که حامد جان توضیح دادن : "هدف از معماری چند لایه، شکستن ساختار یک نرم افزار در حال تولید به قطعات کوچکتر است که هر کدام عهده دار وظایف خاصی هستند.بی شک،عدم استفاده از این معماری در تولید نرم افزار، امتیازات بالا رو به همراه نخواهد داشت"....
در این صورت شما قدرت به روزرسانی بیشتر،باگ گیری سریعتر،سردرگمی کمتر و مزایای دیگه ای رو به پروژه ات اضافه کردی.......
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
sajjadlove
فکر نکنم در امنیت نرم افزار تاثیری داشته باشه.چون شما می تونی همه کارهایی که در چند لایه می خواهی انجام بدی در یک لایه هم می تونی اون رو انجام بدی.....
همین الان یه مثال اومد تو ذهنم (البته نمی دونم تا چقدر می تونه مطلب رو برسونه)......
فرض کنید شما یک چند قطعه فلزی دارید که می خواهید اونها رو به هم وصل کنید.حالا شما می تونید اونها رو به هم جوش بدید یا اینکه اونها رو پیچ و مهره کنید.
به نظر شما اگه یکی از قطعه ها اشتباهی جاسازی داده شد یا اینکه قطعه ای پس از چند روز فرسوده شد توی کدوم روش می تونی راحت تر قطعه رو تعویض کنی؟
خوب مطمئنا اون که پیچ و مهره شده.در حالی که استحکام هر کدوم می تونه مثل هم باشه.....
هدف معماری چند لایه هم همین هست.همان طور که حامد جان توضیح دادن : "هدف از معماری چند لایه، شکستن ساختار یک نرم افزار در حال تولید به قطعات کوچکتر است که هر کدام عهده دار وظایف خاصی هستند.بی شک،عدم استفاده از این معماری در تولید نرم افزار، امتیازات بالا رو به همراه نخواهد داشت"....
در این صورت شما قدرت به روزرسانی بیشتر،باگ گیری سریعتر،سردرگمی کمتر و مزایای دیگه ای رو به پروژه ات اضافه کردی.......
آفرين!!!
دقيقا همينه!
شكستن يك برنامه به قسمت هاي كوچكتر و سپس پيچ و مهره كردن اين قسمت هاي جدا.در اين حالت در صورت نياز به تغيير فقط بخش مورد نظر رو تغيير مي ديم.
اما سوال اينجاست كه چه روش ها و قوانيني وجود داره تا ما بتونيم يك برنامه بانك اطلاعاتي خودمون رو به صورت چند لايه پياده سازي كنيم.سپس از يك لايه در لايه ديگه استفاده كنيم!!!
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
با سلام به دوستان و تبریک سال جدید .... :قلب:
نقل قول:
1) مزایای بهره گیری از معماری چند لایه چیست؟ و در صورت عدم پیاده سازی این معماری چه مشکلاتی به وجود خواهد آمد؟
فکر کنم یکی از مزایای استفاده از معماری چند لایه این باشه که میشه هر لایه رو در یک سیستم گذاشت و این باعث میشه در برنامه های گسترده و بزرگ ؛ سرعت و کارایی رو بهتر کنه و حال اگه همین چند لایه در یک سرور باشه بار زیادی رو روی سرور اعمال می کنه و تقسیم برنامه به چند لایه و انتقال لایه ها به سرور های مجزا امکان استفاده کاربران بیشتری رو از برنامه فراهم می کنه ...
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
amin_alexi بهترین پاسخ رو داد.
هر چند که این مورد ممکنه به ندرت اتفاق بیفته که لایه ها رو بر روی سیستم های مختلف قرار بدید، اما در کل وقتی که مشکلی برای یکی از سیستم ها به وجود بیاد، لایه ی موجود بر روی اون سیستم می تونه به سیستم دیگه ای منتقل بشه.
موفق باشید.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
sajjadlove
فکر نکنم در امنیت نرم افزار تاثیری داشته باشه.چون شما می تونی همه کارهایی که در چند لایه می خواهی انجام بدی در یک لایه هم می تونی اون رو انجام بدی.....
.
همچین هم بی تاثیر نیست , مخصوصا زمانی که هر لایه روی سیستم جداگانه ای قرار بگیره.
نظر شخصی بنده اینه که oop خودش رو درمعماری nلایه نشون میده و کاربر راحتر حسش میکنه.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
در مورد امنيت تعجب كردم كه دوستان ميگن تاثيري نداره!
ضمنا يه سوال : اگه قرار باشه همه لايه ها تو يك pc باشن اين نوع پروژه اي چه خاصيتي داره ؟
چون معماري لايه اي بيشترين كاربردشون تو برنامه هاي توزيع شده هست
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
من هم وقتی دوست عزیزمان گفتند که در امنیت تاثیر نداره یه خورده تعجب کردم چون در یک مقاله خونده بودم که امنیت برنامه رو بالا میبره(مقاله به زبان لاتین بود)
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
dj_mesmol
ضمنا يه سوال : اگه قرار باشه همه لايه ها تو يك pc باشن اين نوع پروژه اي چه خاصيتي داره ؟
معماری n لایه نمیگه که هر لایه در یک pc نصب بشه , ماهیت بعضی از نرم افزار ها اینه که هر لایه در یک pc قرار بگیره و بعضی دیگه در این که همه لایه ها در یک pc قرار بگیرن .
خاصیتش هم در بازنویسی و ویرایش و سرعت کار و در نتیجه هزینه هستش.
نقل قول:
چون معماري لايه اي بيشترين كاربردشون تو برنامه هاي توزيع شده هست
متوجه نشدم!!! خوب همه برنامه ها قرار توزیع بشن.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
mohsen_zelzela00
من هم وقتی دوست عزیزمان گفتند که در امنیت تاثیر نداره یه خورده تعجب کردم چون در یک مقاله خونده بودم که امنیت برنامه رو بالا میبره(مقاله به زبان لاتین بود)
البته معمولا وقتی از تاثیر امنیت در کنار معماری nلایه صحبت میکنیم , منظور امنیت داده ها هست.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
majid325
معماری n لایه نمیگه که هر لایه در یک pc نصب بشه , ماهیت بعضی از نرم افزار ها اینه که هر لایه در یک pc قرار بگیره و بعضی دیگه در این که همه لایه ها در یک pc قرار بگیرن .
خاصیتش هم در بازنویسی و ویرایش و سرعت کار و در نتیجه هزینه هستش.
متوجه نشدم!!! خوب همه برنامه ها قرار توزیع بشن.
منظورم Distributed Application هست
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
majid325
البته معمولا وقتی از تاثیر امنیت در کنار معماری nلایه صحبت میکنیم , منظور امنیت داده ها هست.
دوست عزیز دقیقاً منظور من از امنیت امنیت داده هاست
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
dj_mesmol
منظورم Distributed Application هست
اگه منظورتون Software Engineering of Distributed Systems هست:
دقیقا(از منظر Software Engineering of Distributed Systems) این معماری در مقابله با مشکلاتی که در عدم استفاده از این معماری به وجود میاد , بر پا شده, این همون مسئله ای هست که شما هم بهش شاره کردین ولی به Location هر لایه ربطی نداره .
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
این معماری در مقابله با مشکلاتی که در عدم استفاده از این معماری به وجود میاد , بر پا شده
تعريف شما از Distributed Systems اينه ؟
نقل قول:
ولی به Location هر لایه ربطی نداره .
ميشه بيشتر توضيح بديد
يعني تو برنامه هاي توزيع شده لوكيشن هر لايه مساله نيست ؟ و همه لايه ها در يك pc ن
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
نوشته شده توسط
dj_mesmol
تعريف شما از Distributed Systems اينه ؟
من فقط سعی کردم در یک خط رابطه این معماری و Distributed Systems رو توضیح بدم , نه اینکه Distributed Systems رو تعریف کنم.
نقل قول:
ميشه بيشتر توضيح بديد
يعني تو برنامه هاي توزيع شده لوكيشن هر لايه مساله نيست ؟ و همه لايه ها در يك pc ن
قبلا یه اشاره ی کردم.
وقتی میگیم Distributed Systems , یعنی داریم درباره سیستم های توزیع شده ی غیر متمرکز صحبت میکنیم , حالا این غیر متمرکز بودن, همون زمان که یک سیستم رو به n لایه تقسیم میکنیم به وجود میاد و اینکه یک سیستم nلایه در یک pc پیاده سازی بشه یا چند pc , تناقضی در Distributed Systems بودن سیستم ما ایجاد نمیکنه , مسئله پیاده سازی Distributed Systems در چند pc یا یک pc اول از همه به ماهیت یک سیستم ربط داره و در درجه دوم به میزان سرمایه گزاری...
در آخر ذات nLayer به صورت Distributed Systems و همین یکی از مزایای nلایه هست.
-
در امنيت هم تاثير دارد
بدون شك برنامه نويسي چند لايه در امنيت داده ها و سيستم و همچنين قابليت اطمينان سيستم تاثير به سزايي دارد.
يك برنامه مثلا 3 لايه را در نظز بگيريد.فرض كنيد به دليل بزرگ بودن سيستم و دلايلي ديگر هر بخش آن بر روي يك سيستم قرار بگيرد.مثلا DL بر روي يك سرور BL بر روي يك يا چند سرور ديگر و لايه سوم (لايه نمايش)بر روي كامپيوتر هاي كلاينت نصب گردد.در هنگام اجراي اين نرم افزار برنامه اي كه بر روي سيستم هاي كاربران نهايي شروع به انجام كار مي نمايد هيچ اطلاعي از ساختار لايه DL ندارد و فقط فرامين مربوطه را از لايه BL در خواست مي نمايد.در اين حالت به دليل اينكه برنامه به صورت مستقيم با لايه مربوط به داده ها در رابطه نيست به همين دليل امنيت بالا مي رود و سيستم ها براي دسترسي به داده ها بايد از يك لايه مياني عبور كرده تا به داده ها دسترسي پيدا كنند.
اين فقط جزيي از موارد امنيت اين نوع برنامه نويسي مي باشد.
موفق باشيد
http://www.new-npac.org/users/fox/do...s/image004.jpg
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
از شرکت دوستان در بحث سپاسگزارم،
می توان تکات مهم بحث را اینطور خلاصه کرد:
1)در معماری چند لایه، برنامه به قسمت های کوچکتری تقسیم می شود که هریک وظیفه ی خاصی را بر عهده دارند، بدین معنا که هر Task(وظیفه) در لایه ی مخصوص به خود انجام می شود،
2)اگر لایه ها به طور فیزیکی از یکدیگر مجزا شده باشند، به هر یک از آن ها یک Tier گفته می شود و هر یک از این Tier ها می توانند بر روی یک سرور مجزا قرار گیرند(Distributed Applications)، (در یک Solution، برای هر Tier، یک پروژه جدید ایجاد می گردد)
3)در صورتی که لایه ها به طور منطقی از یکدیگر مجزا شده باشند، به هر یک از آنها یک Layer گفته می شود و عموما" تمامی لایه ها در یک پروژه قرار خواهد گرفت،
4)نگهداری(Maintenance) آسانتر می گردد، بدین صورت که با بهره گیری از یک سری استاندارد ها و فریم ورک ها و نیز برتامه نویسی شیء گرا این امر محقق می گردد،
5)امکان اضافه کردن یک لایه به لایه های موجود و یا تعویض یک لایه با یک لایه ی دیگر وجود دارد،
6)کار گروهی نیز بسیار منظم تر خواهد شد،
7)با بهره گیری از قوانین برنامه نویسی شیء گرا می توان هر تغییری در عملکرد برنامه را در کمترین زمان و با پایین ترین میزان تاثیر منفی در کارکرد سایر قسمت ها، اعمال نمود،
8)با به کار گیری مکانیزم های موجود، اشکال زدایی(Debugging) پروژه بسیار راحت تر خواهد بود و در حقیقت موجب ارتقاء Manageability سیستم می گردد،
9)امنیت(Security) نیز ارتقاء می یابد،
10)...
حال به سراغ مرحله ی دوم بحث می رویم و کار خود را با بحث بر روی معماری 3 لایه آغاز می کنیم؛
لطفا" پست اول تاپیک را مطالعه نمایید،
در ضمن لطفا" در هر مرحله از بحث تنها بر روی موضوع مطرح شده در همان مرحله متمرکز شوید تا بحث از مسیر اصلی خود منحرف نگردد،
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier Architecture)
نقل قول:
در معماری 3 لایه برنامه به چه بخش هایی تقسیم می شود و هر یک چه وظیفه ای را بر عهده دارند و چگونه با یکدیگر ارتباط برقرار می کنند؟
در معماری 3 لایه برنامه دارای بخش های زیر می باشد :
1) Presentation Layer لایه نمایش
2) Business Logic Layer لایه منطق
3) Data Access Layer لایه دسترسی به داده
در لایه دسترسی به داده هرگونه عملیات خواندن درج بروز رسانی و حذف داده های پایگاه داده را بر عهده می گیرد
در لایه منطق که از لایه داده استفاده می شود . و می تواند هر کدام از عملیات درج و یا بروزرسانی و .. را از لایه داده انتخاب کند . ولی هیچ اطلاعی از نحوی پیاده سازی آن ندارد.
نکته مهم در لایه منطق این است که گردش کار برنامه در این لایه انجام میشود .
یعنی این لایه با در دست داشتن عملیات درج بروز رسانی و .. می تواند یک گردش کار را بوجود بیاورد.
مسولیت لایه نمایش از یه طرف نگهداری واسطه کاربری و تعامل با کاربر و از سوی دیگر تعامل با لایه منطق می باشد. یا بع عبارتی لایه نمایش از لایه منطق می تواند یک گردش کار را انتخاب کند . ولی هیج اطلاعی از آن ندارد.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
تشكر مي كنم از دوست عزيزمون iroonidotnet
در يك برنامه 3 لايه،لايه داده (Data Layer) مي تواند يك يا چند Stored Proceture باشد كه حاوي دستورات Sql مي باشند و در زمان لازم اجرا مي شوند.وقتي كه از Stored Proceture ها استفاده مي كنيم باعت مي شود كه ديگر لازم نباشد دستورات Sql خود را توسط برنامه حاوي رابط كاربر به بانك اطلاعات بفرستيم و اين باعث مي شود كه برنامه ما در لايه هاي منطقي و نمايش اطلاعي از اين دستورات و ساختار آنها نداشته باشند.در ضمن استفاده از Stored Proceture باعث افزايش سرعت برنامه مي شوند.
لايه منطقي مي تواند يك سرويس وب (Web Service) باشد.در اين لايه قوانين تجاري و محاسبات برنامه قرار مي گيرند و همانطور دوست عزيزمون iroonidotnet گفتند اين لايه كه يك لايه مياني نيز مي باشد با لايه داده و نمايش در ارتباط است و مثلا داده ها را از لايه داده دريافت كرده و به لايه نمايش ارسال مي كند.تغييراتي كه در لايه نمايش بر روي داده ها انجام مي گيرد توسط لايه منطقي به لايه داده فرستاده مي شود.
لايه نمايش هم مي تواند يك برنامه Windows Application و يا Web Application باشد كه به عنوان يك رابط كاربر قرار گرفته و كاربر نهايي با آن در تعامل مي باشد.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
جناب مداح ببخشید.چند وقتی نبودم ،مجبور شدم یه flashback بزنم......
نقل قول:
mohsen_zelzela00
من هم وقتی دوست عزیزمان گفتند که در امنیت تاثیر نداره یه خورده تعجب کردم چون در یک مقاله خونده بودم که امنیت برنامه رو بالا میبره(مقاله به زبان لاتین بود)
ممنون میشم مقاله رو بذارید یا اینکه لینکش رو بدید...
نقل قول:
majid325
اینکه یک سیستم nلایه در یک pc پیاده سازی بشه یا چند pc , تناقضی در Distributed Systems بودن سیستم ما ایجاد نمیکنه
میشه یه توضیحی بدید.....
در فلسفه ایجاد N'Tier امنیت در برابر ویژگی های دیگه چه جایگاهی داره؟ یک برنامه ای که فقط در یک لایه پیاده سازی شده و در سطح کیفی بسیار خوبی از همه لحاظ هم قرار داره با همون برنامه که در چند لایه پیاده سازی شده،چند درصد از لحاظ امنیت فرق داره؟
چه تدابیری در چندلایه وجود داره که نمیشه در مورد اونها در یک لایه بحث کرد؟(از لحاظ امنیت)
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
جناب مداح ببخشید.چند وقتی نبودم ،مجبور شدم یه flashback بزنم ...
نقل قول:
mohsen_zelzela00
من هم وقتی دوست عزیزمان گفتند که در امنیت تاثیر نداره یه خورده تعجب کردم چون در یک مقاله خونده بودم که امنیت برنامه رو بالا میبره(مقاله به زبان لاتین بود)
ممنون میشم مقاله رو بذارید یا اینکه لینکش رو بدید...
فکر میکنم مساله امنیت بهتر در معماری چند لایه بدیهی باشه !!
استنباط خودم رو در مورد امنیت چند لایه با یک مثال توضیح می دم
یکی از روشهایی که معمولا برای دسترسی به اطلاعات (برای خرابکاری یا دزدی !) مورد استفاده قرار میگیره شناسایی سروری که اطلاعات در اون قرار داره ...
حال در معماری 3Tier شما برای دسترسی به اطلاعات باید اول Computer که لایه BLL در اون قرار داره شناسایی کنید و بعد بتونید به اون نفوذ کنید تا بتونید از طریق اون لایه DAL رو شناسایی کنید و بعد از طریق لایه DAL بتونید محل اطلاعات رو شناسایی کنید !!!
حال در معماری بدون استفاده از nTier که یک Client و یک Server داره شناسایی کامپیوتر Server که اطلاعات در اون قرار داره به مراتب راحتتره و در یک مرحله انجام میشه ... (البته نه به این راحتی که من نوشتم!!!)
پس من خودم نتیجه می گیرم که معماری nTier به امنیت سیستم کمک بسزایی می کند ...
(مگه اینکه دوستان گفته های من رو نقض کنند :چشمک:)
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نوشته شده توسط
sajjadlove
میشه یه توضیحی بدید.....
نسبت به تعریف آقای مداح:
شما اون nلایه رو nTier بخونی , درست میشه.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
دوستان عزیز، لطفا" بحث را از قدم دوم ادامه دهید،/
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
حالا یه مقدار در مورد چگونگی ارتباط لایه ها بحث کنیم (در مورد نحوه تقسم بندی و وظیفه هر بخش یه مقداری توضیح داده شد :تشویق: )
نحوه برقراری و دسترسی لایه ها به هم :
هر لایه می تواند تنها به کلاسها ،متد ها و Property های یک لایه پایین تر از خودش دسترسی داشته باشه ... به عنوان مثال لایه UI تنها می تواند به لایه BLL دسترسی داشته باشد و مجاز نیست از کلاسها ،متد ها و Property های لایه DAL استفاده کند (به نوعی مجاز نیستیم یک لایه رو دور بزنیم تا به لایه دیگه برسیم) و همچنین لایه DAL نمی تواند به کلاسها ،متد ها و Property های لایه BLL دسترسی داشته باشد (دسترسی به لایه بالاتر مجاز نیست ) .
فکر کنم با توجه به ماهیت هر لایه ما محدودیت در فرستادن اطلاعات بین لایه ها داریم مثلا اگه یک لایه Web Service باشه ما نمی تونیم هر نوع دادهای رو به لایه دیگه بفرستیم یا بگیریم مگر اینکه نوع داده ای که می خوایم انتقال بدیم رو به ساختار مجاز برای اون لایه تبدیل کنیم
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نوشته شده توسط
amin_alexi
به نوعی مجاز نیستیم یک لایه رو دور بزنیم تا به لایه دیگه برسیم
در این مورد من شک دارم! از نظر کلی جمله شما صحیح است ولی بعضا موارد خاص هم وجود دارد تا این شبه قانون رو نقض کنیم.
من خودم تا حالا این کار رو انجام نداده ام(نقض کردن شبه قانون ذکر شده)
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
در این مورد من شک دارم! از نظر کلی جمله شما صحیح است ولی بعضا موارد خاص هم وجود دارد تا این شبه قانون رو نقض کنیم.
من خودم تا حالا این کار رو انجام نداده ام(نقض کردن شبه قانون ذکر شده)
من فکر می کنم تحت هیچ عنوان مجاز به دور زدن نیستیم (دور زدن ممنوع !! :لبخند:)
از دوستان آیا کسی هست که بگه آیا میشه دور زد ؟! اگه آره به چه صورت ؟! آیا این کار مجازه !؟
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
آیا این کار مجازه !؟
مجاز بودن یا نبودن، مهم نیست.
مهم اینه که ما لایه هامون رو طوری طراحی کنیم که نشه اساسا دورشون زد.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نوشته شده توسط
anubis_ir
من اين سؤال رو صفحه قبل پرسيدم ولي حذف شد. چطوري اينكار رو بكنيم؟ مثالي؟ كار عملي؟
با این دید که هر لایه یک پروژه(فضای نام) هست و برای کا با هر فضای نام باید آن را در پروژه (لایه) مورد نظر using کرد , میشه .
در مورد مثال و کار عملی:
فکر میکنم این تاپیک داره مسیر و هدف خاصی رو دنبال میکنه .
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
با این دید که هر لایه یک پروژه(فضای نام) هست و برای کا با هر فضای نام باید آن را در پروژه (لایه) مورد نظر using کرد , میشه .
یعنی با این کار، دستری به DAL از طریق PL دیگه امکان پذیر نیست؟؟؟
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
یعنی با این کار، دستری به DAL از طریق PL دیگه امکان پذیر نیست؟؟؟
یکی از هداف برنامه نویسی چند لایه این است که لایه ی Presentation به طور مستقیم با لایه ی Data Access ارتباط نداشته باشد، پس در یک برنامه چندلایه که به طور صحیح پیاده سازی شده باشد، لایه ی Presention/UI به لایه ی Data Access دسترسی ندارد،
از ویژگی های برنامه چند لایه صحیح به زبان ساده این است که لایه ی UI "نمی داند Data از کجا آمده است." و از منبع داده اطلاعی ندارد، بدین معنا که تاکید میکنم در یک برنامه چند لایه صحیح، اگر دیتابیس ما به طور مثال از SQL Server به Oracle تغییر پیدا کند، نباید لایه ی UI تحت تاثیر قرار بگیرد،
اگر دقت کنید، به لایه ی Business Logics، لایه ی میانی(Middle-Tier/Layer) هم گفته می شود و در معماری 3 لایه واسطی است میان 2 لایه ی UI و DA.
خلاصه:
1)لایه UI توسط لایه BL(یا Middle-Tier) با لایه ی DAL ارتباط برقرار می کند.
2)لایه UI دسترسی مستقیم به دیتابیس و لایه DAL ندارد.
3)تغییر دیتابیس و منبع داده بر روی لایه UI تاثیری ندارد.
4)...
دوستان لطفا" عجله نکنید و اجازه دهید ابتدا یکسری مفاهیم روشن شود، پس از آن مثال عملی هم خواهیم داشت ،/
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نکات ذکر شده، کاملا درسته و هیچ شکی درش نیست؛ لکن در مورد کار تیمی چیکار میشه کرد...
به این معنی که من مثلا طراح DAL یا BLL هستم، حالا چطور می تونم دسترسی طراح UI رو به لایه ی DAL از اساس قطع کنم نه اینکه خود فرد از اون لایه استفاده نکنه به خاطر رعایت اصول معماری؟؟؟
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نکات ذکر شده، کاملا درسته و هیچ شکی درش نیست؛ لکن در مورد کار تیمی چیکار میشه کرد...
به این معنی که من مثلا طراح DAL یا BLL هستم، حالا چطور می تونم دسترسی طراح UI رو به لایه ی DAL از اساس قطع کنم نه اینکه خود فرد از اون لایه استفاده نکنه به خاطر رعایت اصول معماری؟؟؟
در نظر بگیرید که ما می خوایم یک پروژه رو بر اساس اصول شروع کنیم . اگر میخوایم همه کار هامون بر اساس اصول باشه . قبل از اینکه بشینیم کد بنویسیم . باید در باره پروژه و همه ابعاد اون خوب صحبت کنیم . و برای کار گروهی باید کار ها رو بشکنیم. یکی از جنبه های صحبت های ما میتونه در باره توابع اصلی لایه های DAL و BLL باشه
اگر قرار باشه سه لایه رو سه نفر جداگانه انجام بدن . بهتر است همون اول بیایم امضای توابع رو با یک یکپارچگی خاص در درون لایه ها و کلاس هاشون قرار بدیم . بعد بیایم پیاده سازی این توابع رو در اختیار افراد قرار بدیم . این توابع ، توابعی هستند که کار ها و اهداف اصلی رو انجام میدن . حالا شاید یک برنامه نویس برای رسید به هدف این تابع از توابعی کمکی که خودش بوجود میاره استفاده کنه. به نظر بنده با این کار براحتی میشه برنامه ها با معماری چند لایه رو در اختیار چندین نفر گذاشت . و نگران سرعت کار اونها و عقب یا چلو بود لایه ای از لایه ی دیگر نبود. یکی از مزیت های این روش اینه که از همون اول دید بسیار خوبی از پروژه به شما میده
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
سوال من در این مورد نبود، نکاتی رو که شما ذکر کردین، مراحل پیاده سازی یه پروژه به صورت اصولی و منطقیه، اما سوالی که من دارم در مورد تظمین امنیت DAL هستش...
با تشکر
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
دوست عزیز میشه سوالتون رو یکم واضح تر مطرح کنید. ممنون از سوالتون
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
چطور میشه امنیت DAL رو تضمین کرد یعنی از UI اساسا نشه به DAL دسترسی پیدا کرد؟
راه حل شما چیه؟
آیا صرفا اینکه ما خودمون نریم سراغش، تضمینی به ما میده؟ (نه)
پ ن: اگر از بحث دارم خارج می شم، تذکر بدین...
با تشکر
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
با Web Service یا WCF میشه تا حد زیادی به این امر دست یافت .
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
با ویندوز هم کارای زیادی میشه انجام داد...
توضیح بده iroonidotnet
پ ن: این پست به نظرم بیشتر Off-Topic هستش ...
در صورت خروج از بحث، تذکر بدین
با تشکر
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
Web Service در حقیقت میتونه پیاده سازی Bussiness Layer باشه.(واسط بین DAL و UI)
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نوشته شده توسط
h.jaza
چطور میشه امنیت DAL رو تضمین کرد یعنی از UI اساسا نشه به DAL دسترسی پیدا کرد؟
راه حل شما چیه؟
آیا صرفا اینکه ما خودمون نریم سراغش، تضمینی به ما میده؟ (نه)
پ ن: اگر از بحث دارم خارج می شم، تذکر بدین...
با تشکر
اگه درست متوجه شده باشم شما نمیخواین کسی بدون اجازه از یک اسمبلی استفاده کنه؟
اگر جواب مثبت هست:
این مسله ای که شما مطرح میکنید مربوط میشه به امنیت اسمبلی که فقط مختصDALوBLL نیست و راهکارهای مختلفی داره و در همین سایت هم راجع بهش زیاد صحبت شده.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
Web Service در حقیقت میتونه پیاده سازی Bussiness Layer باشه.(واسط بین DAL و UI)
من فکر می کنم کار Web service یک چیزه دیگه باشه !
و کمتر به عنوان Bussiness Layer استفاده میشه !
معمولا یک DAL,BLL,WSL رو در کنار هم داریم !
(داریم از بحث اصلی تاپیک خیلی دور میشیم !!)
فکر کنم اگه بریم سره یک مثال عملی محوریت کار بیشتر حفظ میشه !!
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
هدف من از طرح مسائل گفته شده، بیشتر رسیدن به این معاریه:
و امثال اون و شرح جزئیات آونه ...
ولی اگر باعث خروج از بحث میشه، تذکر بدین ...
با تشکر
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
نوشته شده توسط
amin_alexi
من فکر می کنم کار Web service یک چیزه دیگه باشه !
و کمتر به عنوان Bussiness Layer استفاده میشه !
اتفاقا من فکر میکنم که Web service هدفش ایجاد یک لایه میانی جهت استفاده از منابع اشتراکی هست.
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
نقل قول:
فاقا من فکر میکنم که Web service هدفش ایجاد یک لایه میانی جهت استفاده از منابع اشتراکی هست.
دقیقا !! :چشمک:
اما این به این معنا نیست که به عنوان BLL استفاده بشه !
معمولا یکی از مهمترن موارد استفاده از WebService در مواقعی است که سیستم ما یک سیستم توزیع شده باشه و ما دارای چندین BLL باشیم در این مواقع یکی از بهترین راه حل ها استفاده یک لایه به عنوان Web Service بین لایه UI و لایه BLL (که در حقیقت از چندین BLL تشکیل شده) می باشد که با این کار پیچیدگی دسترسی به اطلاعات رو برای لایه UI کمتر میکنه !
-
1 ضمیمه
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
با سلام خدمت تمامی دوستان عزیز
تا به این مرحله همه دوستان نظرات خود رو در باره معماری چند لایه ارائه دادن . و دوست عزیزمون جناب مهندس مداح در هر مرحله نتیجه گیری کلی از بحث دوستان رو به صورت نکته وار بیان کردن . در این مرحله که نیاز به یک نمونه برنامه برای یادگیری هرچه بیشتر این معماری احساس می شد . بنده تصمیم گرفتم که با ارائه یک نمونه ای کوچک و ساده کمکی هرچند کوچک به افرادی که به تازگی با این معماری آشنا شدن کرده باشم.
با مشورتی که صورت گرفت قرار شد یک نمونه بصورت ساده ارائه شود و پس از اشکال زدایی و بهبود آن از طرف دوستان برنامه نویس ، در مراحل بعدی این نمونه ارتقاع پیدا کند و با افزودن فناوری های جدید به آن ، به یک نمونه کامل تبدیل گردد.در این نمونه کوچک تصمیم داریم با استفاده از معماری چند لایه برای مشخصات افراد یک فرم ایجاد کنیم.
طرز ایجاد این پروژه رو به اختصار توضیح میدم و اگر دوستان خواستند کد ها (هر چند که واضح اند) رو شرح خواهم داد و انشا الله دوستان در بر طرف کردن نواقص و بهبود این نمونه همکاری خواهند کرد.
1)یک پروژه ویندوزی با نام SimpleN-Tier را ایجاد کرده
2)برای ایجاد لایه ی داده (DataAccessLayer ) بر روی SimpleN-TierSolution راست کلیک کرده و از قست Add زیر منوی New Project … را انتخاب کرده و در فرم جدید بر روی Class Library کلیک کنید و در قسمت Name نام لایه داده خود را تایپ کرده و Ok را کلیک کنید . شما موفق به ایجاد لایه داده شده اید . ما در این قسمت برای هر موجودیت (فرم یا جدول یا ...) یک کلاس ایجاد می کنیم و در آن عملیات درج و حذف و بروز رسانی و انتخاب را قرار میدهیم . در این نمونه ما این عملیات را با استفاده از Stored Procedure انجام میدهیم. (کلاس ایجاد شده را با نام Class1 را حذف کنید)
3)حالا نوبت به ایجاد لایه منطق (BusinesseLogicLayer ) می باشد که مراحل آن دقیقا مانند لایه داده می باشد . بعد از اینکه موفق به ایجاد لایه منطق شدید . باید بتوانید بین لایه منطق و لایه داده ارتباط برقرار کنید .( همانطور که میدانید لایه منطق از لایه داده درخواست انجام عملیات درج و ... را میکنید .)برای اینکه لایه منطق بتواند به لایه داده دسترسی داشته باشد ، در لایه منطق بر روی References راست کلیک کرده و بر روی زیر منوی Add Reference کلیک کرده و در فرم ظاهر شده بر روی تب Projects رفته و در این صفحه لایه داده خود را انتخاب و بر روی Ok کلیک کنید . حالا شما میتوانید در لایه منطق از لایه داده استفاده کنید .(کلاس ایجاد شده را با نام Class1 را حذف کنید)
نکته : در زمان بار کردن یک DLL ، سیستم عامل تلاش می کند تا آن را در آدرس پایه ای که در DLL مشخص شده است ، قرار دهد . اگر این آدرس توسط قطعه ای دیگر اشغال شده باشد ، سیستم باید عملیات تصحیحی لازم برای پیدا کردن یک بخش خالی دیگر در حافظه و قرار دادن DLL در آدرس جدید را انجام دهد . هر بار که یکDLL بار می شود این فرایند از نو تکرار می شود. برای اینکه این مشکل حل شود می توان یک آدرس پایه یکتا را به یک DLLنسبت داد . که در این صورت دیگر هزینه تصحیح را نخواهیم داشت. در C#.Net میتوان ازفضای آدرس های بین &H004000000 و &H800000000 استفاده کرد.
برای این کار بر روی نام پروژه ی BusinesseLogicLayer راست کلیک کرده و زیر منوی Properties را انتخاب کرده و به قسمت Build رفته و بر روی دکمه Advanced کلیک کرده و در
فرم ظاهر شده مقدار فیلد DLL Base Address را به 0x11280000 تغییر دهید .
4)لایه نمایش همان لایه است که در ابتدا هنگام ایجاد پروژه بصورت خود کار به پروژه شما افزوده شد . (SimpleN-Tier) . همانطور که می دانید لایه نمایش باید به لایه منطق (BusinessLogicLayer ) دسترسی داشته باشد . بدین منظور همان کاری که در مرحله قبل صورت گرفت را تکرار می کنیم تا لایه نمایش بتواند به لایه منطق دسترسی داشته باشد.
5)در آخر باید در لایه نمایش بر روی نام پروژه SimpleN-Tier راست کلیک کرده و از زیر منوی گزینه Set as startup project را انتخاب کنید. حالا مراحل ایجاد یک پروژه 3 لایه به پایان رسید
. کد های نمونه برنامه تا حد زیادی قابل فهم و واضح می باشد . دوستان اگر در جایی مشکل داشتن مطرح کنند تا رفع ابهام شود یا در صورت لزوم کد ها اصلاح شود. فایل های دیتابیس همراه این پروژه قرار داده شده است.
با تشکر
-
نقل قول: سناریو 4 - معماری چندلایه(N-Tier/N-Layer Architecture)
دوستان حال بر روی مثالی که کازیز iroonidotnet ارسال کردند بحث می کنیم،
لطفا" از ارسال پروژه خودداری نمایید و فعلا" تنها بر روی همین پروژه گفتگو نمایید،
هر زمان هم نیازی به تغییر در پروژه بود، کاربر iroonidotnet تغییران لازم را اغمال و پروژه جدید را آپلود می کنند،
از ایشان به خاطر این ارسال سپاسگزارم،/