مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

payam64

عضویت از 1397/01/14

معماری چند لایه

  • جمعه 29 تیر 1397
  • 19:03
تشکر میکنم

سلام خدمت شما مهندس مدائنی بزرگوار

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

واقعا آدم برای یادگیری در مورد معماری چند لایه در اینترنت گیج میشه چون هرکسی اسم لایه ها رو با یک کاربردی متفاوت توضیح داده و هیچ آموزش جامعی ک واقعا معماری n-tier را با یک نمونه پروژه توضیح بده وجود نداره.

در هر صورت خیلی خیلی از شما سپاسگذار میشم توضیح مختصری در مورد لایه های بکار رفته در پروژتون بدین میدونم درخواست نامعقولی هست نسبت به معماری پروژه که حتما شخصی سازی شده هست، ولی خیلی ممنون میشم لااقل لایه های مهم رو توضیح مختصری در موردش بدین 

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 29 تیر 1397
  • 21:09

سلام

ابتدا توصیه میکنم پروژه سورس باز مثل Nop Commers و orChard رو ببینید

مقاله زیر هم میتونه کممتون کنه

معماری چند لایه ی نرم افزار چیست؟

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • شنبه 30 تیر 1397
  • 09:54

سلام دوست عزیز

مبحث معماری لایه ها یا در واقع n-Layer  با بحثی که لابلای نوشته تان بدان اشاره کرده بودید یعنی n-Tier  کاملا متفاوت است

لایه ها به تقسیم بندی کدها بر اساس الگوی طراحی اشاره دارد اما تایرها بیشتر مباحث مربوط به توزیع لایه ها بر روی سرورهای متفاوت است

کاربر سایت

payam64

عضویت از 1397/01/14

  • شنبه 30 تیر 1397
  • 11:02

"سلام دوست عزیز

مبحث معماری لایه ها یا در واقع n-Layer  با بحثی که لابلای نوشته تان بدان اشاره کرده بودید یعنی n-Tier  کاملا متفاوت است ... "

بله دوست عزیز متوجه نکته اشاره شده شما هستم اشتباه لوپی بود

در ضمن مهندس مدائنی عزیز فرق بین 3 لایه domail.model و Business و service رو میگید و آیا دستورات و کوئری های پرس و جو linq همیشه بایددر لایه repository باشن؟

کاربر سایت

salman_b

عضویت از 1396/02/18

  • یکشنبه 31 تیر 1397
  • 09:38

به نظر من وقتی از EF استفاده میکنیم در واقع لایه ی دسترسی به داده همون System.Data.Entity هستش که در واقع همون dbContext هستش و ما از متدهای این لایه جهت دسترسی به داده باید در Business استفاده کنیم.

به نظرم لایه ی انتزاعی بی خودی بیایم بکشیم روی EF که خودش هم uow هست و هم dbSet هایی که نقش مخازن رو بازی میکنند، فقط کد رو کثیف کردیم و کاری کردیم که قدرت بی نظیر EF مخصوصا در ورودی های لامبدا و خروجی های Anynomous رو اومدیم به شدت محدود کردیم و یه جورایی EF رو زندانی کردیم.

تمام قدرت EF انعطافی هستش که به خروجی و کوئری ها میده و نباید توی لایه ای به عنوان DAL انتزاعی اون رو حصر کنیم.

مایکروسافت اومده یه DAL ساخته و گفته بیاین از این استفاده کنید و ADO رو فراموش کنید. این معماری که میاد لایه بندی میکنه خیلی خوبه اما به شرطی که دقیقا درک کنیم چی رو لایه ی جدا در نظر میگیره

اینکه بیایم LinQ to Entities رو چادر سرش بکشیم و بگیم فقط می تونی اینطور عمل کنی متضاد هستش با ایده ی خلق ORM هایی مثل EF

شاید یکی بگه که با این کار میام و کاری میکنم که پروژه ی من منعطف بشه و اگه خواستم به راحتی تکنولوژی دسترسی به داده ام رو عوض میکنم! در صورتی که اصلا به این راحتی نیست و در هر صورت کلی وابستگی بین منطق و دسترسی پیدا میکنین مخصوصا توی عبارات لامبدا اگه برای انعطاف ورودی سرویس ها لحاظ بشن

یه راهم هست

Hard Coding!

خب اگه واقعا کسی دوست داره لایه دسترسی به داده ایجاد کنه با EF برای اینکه کاملا وابستگی رو از بین ببره باید Hard Coding انجام بده که خب بازم EF نیومده که شما خودتون رو توی دردسر بندازید!

این معماری های چند لایه مخصوصا Domain Driven Design رو اصلا منطقی نیست با EF انجام بدین و شاید اصلا عملی هم نباشه

اگه به دنبال این لایه بندی ها هستین Linq و  EF رو فراموش کنید و برین سراغ ADO یا Dapper

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

عرض دیگری ندارم.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)