نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
آخ اینطوری نرم فزاری که به سیستم ما متصل میشه، می تونه به هر لایه ایی که خواست در هر سطحی دسترسی داشته باشه، اون وقت باید یک سطح Authentication هم برای این کار بزاریم، البته حتی در این صورت هم حداقل Interface سایر لایه ها در اختیار فردی که نیازی به آنها نداره قرار میگیره.
اولا چرا فکر میکنید اون نرم افزار به هر لایه ای که خواست و در هر سطحی می تونه وصل بشه ؟!
مگه نه اینکه معماری ما چند لایه است ؟ پس زمانی که ما بالاترین لایه که در اینجا سرویس ماست رو در اختیار یک نرم افزار دیگه میزاریم اون شخص یا نرم افزار فقط به اون سرویس دسترسی داره و لایه های زیرین از دید لایه های بالا مخفی هستند . مثلا شما سرویسی دارید به نام GetDebitCustomers که لیست مشتریان بدهکار رو برمیگردونه من به عنوان شخص ثالث میتونم از این سرویس شما اگه اجازه داشته باشم استفاده کنم ولی نمیتونم به کد لایه Biz شما که لایه زیر لایه سرویس هست و GetDebitCustomers در اونجا نوشته شده دسترسی داشته باشم . در واقع لایه سرویس یک entry point هست و نه Biz شما
دوما اگه شما نمخواهید همه سرویس ها رو در اختیار بزارید همون سرویس هایی که دوست دارید رو در لایه سرویس به صورت global قرار بدید . این یک مساله خاص هست و اصل مساله رو زیر سوال نمی بره . در واقع این شمایید که باید برای case خودتون یک راه حل مناسب پیدا کنید وگرنه اصل قضیه معماری SOA (سرویس گرا) الان به عنوان یک اصل در طراحی و توسعه سیستمهای نر افزاری پذیرفته شده و شرکتهایی مثل سان و مایکروسافت هم در ویرایش جدید محصولاتشون بشدت دارن از این Pattern ها پشتیبانی میکنن