انجام پایان نامه

درخواست همکاری انجام پایان نامه  بانک مقالات رایگان انجام پایان نامه

سفارش پایان نامه

|

انجام پایان نامه ارشد

 پایان نامه 

پایان نامه‏ کامپیوتر

انجام پایان نامه‏ ارشد کامپیوتر

مفاهيم اوليه سرويس های وب - بخش اول
سرويس های وب ، نقطه عطفی در معماری برنامه های توزيع شده بر روی اينترنت می باشند . بدون شک،  يکی از مهمترين تحولات در زمينه برنامه های توزيع شده  ، مطرح شدن سرويس های وب است  که  تاثيرات فراوانی را در رابطه با وضعيت نرم افرار خصوصا" بر روی  اينترنت بدنبال خواهد داشت . ما شاهد  نقطه عطفی در ظهور نسل جديدی از برنامه های کامپيوترهای با قابليت استفاده بر روی بستر وب ،  خواهيم بود که گفتمان برنامه ها در عرصه جهانی  را محقق خواهد کرد ( تحقق آرزوئی بزرگ برای صنعت نرم افزار) .
 در مجموعه مقالاتی که بدين منظور نوشته خواهد شد به بررسی اصولی سرويس های وب و جايگاه آنان در فرآيند طراحی و پياده سازی برنامه های توزيع شده پرداخته می گردد . در اين راستا لازم است در ابتدا به مقاهيم اوليه برنامه های توزيع شده ، تکامل تدريجی برنامه های توزيع شده ، محدوديت های موجود در رابطه با معماری برنامه های توزيع شده   ، رويکردهای متفاوت بمنظور طراحی و پياده سازی برنامه های توزيع شده ، پرداخته گردد تا  زمينه علمی مناسب، برای پرداختن به مفاهيم اوليه سرويس های وب فراهم گردد .
مقدمه
قبل از ابداع کامپيوترهای شخصی،  عملا" برنامه های توزيع شده ای  وجود نداشته است . در آن دوران ، استفاده از کامپيوتر،  شامل نشستن پشت يک ترمينال و برقراری ارتباط با يک سيتستم بزرگ (Mainframe) بود. با اينکه ترمينال ها در  چندين ساختمان و يا حتی محل فيزيکی قرار می گرفتند ،  ولی عملا"  يک کامپيوتر مرکزی وجود داشت که مسئوليت  انجام تمامی پردازش ها و ذخيره سازی  داده ها را برعهده می گرفت .
تعريف برنامه توزيع شده
با ابداع مينی کامپيوترها و کامپيوترهای شخصی،  فعاليت های غيرمتمرکز،  در دو زمينه پردازش و ذخيره سازی ،  آرزوئی دست يافتنی گرديد. با طراحی برنامه های  توزيع شده ،  امکان پردازش و ذخيره سازی داده ها از حالت متمرکز خارج گرديد.يک برنامه توزيع شده،   برنامه ای است که پتانسيل های پردازشی آن ممکن است توسط چندين کامپيوتر فيزيکی تامين  و داده های آن در چندين محل فيزيکی،  مستقر شده باشد .
چرا به برنامه های توزيع شده نياز داريم ؟
در اين رابطه دلايل متعددی عنوان می شود که مهمترين آنان عبارتند از :
•    هزينه سيستم های Mainfarme  . يکی از اولين دلايل مهم ، هزينه های بالای سيستم های Mainframe است . اين مسئله از دو زاويه متفاوت قابل بررسی است : هزينه بالای سرمايه گذاری اوليه که بسياری  از سازمان ها و موسسات توان مالی آن را ندارند و دوم اينکه در اين مدل ، دارای صرفا" يک نقطه  آسيب پذير با ريسک بالا می باشيم .
•    مالکيت اختصاصی داده ها. يکی از فاکتورهای مهم ديگر،  سياست های مربوط به مالکيت داده ها است . سازمان ها و موسسات که  دارای داده های اختصاصی خود می باشند،  علاقه مند به واگذاری مسئوليت مديريت داده های مربوطه ،  به ساير مکان های فيزيکی نمی باشند .
•    امنيت . يکی ديگر از فاکتورهای مهم در اين زمينه موضوع امنيت است . برای يک سازمان ،  اولا" دستيابی به اغلب داده های آن می بايست بسادگی محقق گردد و ثانيا"  داده ها ی حساس موجود در  سازمان می بايست از بعد امنيتی،  ايمن نگهداری گردند . تامين دو خواسته فوق ( رويکردهای رقابتی  و رويکردهای امنيتی ) با جدا سازی فيزيکی داده ا از يکديگر محقق خواهد شد ( انباشت داده ها، با نگرش های متفاوت در رابطه با سرعت در دستيابی و ايمن در ذخيره سازی ، ضرورت وجود برنامه های توزيع شده را بخوبی نمايان می سازد )   
مسائل فوق،   ضرورت حرکت بسمت ايجاد يک الگوی جديد بمنظور طراحی برنامه های کامپيوتری را مطرح و بر همين اساس نسل جديدی از برنامه های کامپيوتری با عنوان " برنامه های توزيع شده" در عرصه نرم افزار بوجود آمد .
برنامه های توزيع شده و ارائه دهندگان سرويس
با توجه به ضرورت و تعجيل در طراحی يک الگوی جديد برای برنامه های توزيع شده و عدم وجود استانداردهای صنعتی لازم در اين خصوص ،  شرکت های عظيم نرم افزاری هر يک با توجه به ديدگاه های خود ،  اقدام به عرضه راهکارهائی در اين زمينه نمودند.شرکت های فوق،  در رابطه با اينکه  می بايست  برنامه های توزيع شده بصورت عناصر توزيع شده ،  توليد گردند ،  اتحاد نظر داشتند . بدين ترتيب  عناصر متفاوت و توزيع شده در يک برنامه، بعنوان ارائه دهندگان سرويس به يک برنامه منطقی ايفای وظيفه می نمايند. با توزيع قابليت ها و پتانسيل ها ،  امکانات اساسی( بلاک های اوليه )  بمنظور ايجاد برنامه های بزرگ،  بسادگی فراهم می گردد . رويکرد فوق ،  مسائل و تبعات خاص خود  را بدنبال داشت که در ادامه به بررسی برخی از آنان  خواهيم پرداخت .
برنامه های توزيع شده  و وب  
با اينکه اينترنت بيش از بيست سال است بوجود آمده است ولی صرفا" در اواسط دهه 1990 به اين موضوع توجه گرديد،  که اينترنت زير ساخت مناسب و مهمی برای ايجاد برنامه های توزيع شده است . پروتکل های ساده مبتنی بر متن در ابتدا بمنظور مبادله سرويس های درخواستی و ارسال اطلاعات بر روی اينترنت پياده سازی گرديد . گسترش و پذيرش چنين پروتکل هائی، باعث شد که اينترنت بعنوان يک محيط موفق برای برنامه های توزيع شده، مطرح گردد. بدين ترتيب در مقابل سروکار داشتن با تکنولوژی های رقابتی و اغلب انحصاری، وجود استانداردهای وب ،  دليلی موجه برای توجه جدی به وب بعنوان بستری مناسب برای طراحی و پياده سازی برنامه های توزيع شده، گرديد.
مسائل مربوط به برنامه های توزيع شده سنتی
پياده سازی برنامه های توزيع شده مستلزم استفاده از تکنيک ها و مدل های جديد است . راهکارهای انتخابی و استفاده شده ،  خود باعث بروز مسائل جديد نيز خواهند شد. در اين بخش به بررسی مسائل مرتبط با طراحی برنامه های توزيع شده  پرداخته و  دو معماری خاص در اين زمينه را بررسی خواهيم کرد :    
•     معماری RPC)Remote Procedure Call-based)
•     معماری مبتنی بر پيام (Message-based)  
ملاحظات مربوط به  طراحی برنامه های توزيع شده  
در زمان طراحی برنامه های توزيع شده مسائل متعددی وجود دارد که می بايست به آنها توجه کرد :
•    نوع داده های متفاوت . سيستم های عامل متفاوت،  انواع مختلفی از نوع داده ها را حمايت می نمايند. در برخی موارد ،  نوع داده ها در سيستم های عامل متفاوت کاملا"  با يکديگر سازگار، نمی باشند . بنابراين می بايست از راهکارهای مناسب بمنظور برخورد منطقی با نوع داده های متفاوت موجود در سيستم های مختلف ،   استفاده گردد.
•    بروز اشکال در سرويس دهنده . با توجه به اينکه عناصر يک سيستم توزيعی،  عموما" بصورت از راه دور اجراء می گردند، ما دارای چندين نقطه ( مکان) برای بروز اشکال خواهيم بود. بروز اشکال در يکی از نقاط ،  می تواند باعث بروز مسائل عمده ای در رابطه با عملکرد تمام برنامه توزيع شده گردد. بنابراين می بايست راهکارهای مناسب در خصوص مواجه شدن با چنين مواردی،  اتخاذ گردد .
•    بروز اشکال در سرويس گيرنده . در صورتيکه سرويس دهنده ای وضعيت خاصی را ازطرف سرويس گيرنده ،  اخذ و  ذخيره می نمايد و سرويس گيرنده با اشکال مواجه گردد،  می بايست از روشی بمنظور اعلام بروز اشکال به سرويس دهنده استفاده کرد. تصميم گيری و نحوه برخورد با منابع در اختيار سرويس گيرنده نيز از جمله مواردی است که می بايست راهکارهای آن بدرستی مشخص گردد.
•    تلاش برای فراخوانی مجدد . در صورتيکه يک متد از راه دور فراخوانده شود و از طرف سرويس دهنده واکنش لازم داده نشود،  نبايد تلاش مجددی برای فراخوانی متد صورت پذيرد. مثلا" در صورتيکه متدی برای محاسبه هزينه يک سفارش فراخوانده شده و سرويس دهنده درخواستی را دريافت تا سفارش را انجام ولی پاسخ گم گردد منطقی نخواهد بود  سفارش مربوطه مجددا" ارسال گردد .
•    امنيت . در برنامه های توزيع شده فرصت های زيادی برای تهديد های امنيتی وجود دارد . در اين راستا لازم است از يکطرف به  مسائل تائيد اعتبار و صلاحيت قانونی   و از طرف ديگر به ايمن سازی ارتباطات بين يک سرويس گيرنده و يک سرويس دهنده ،  توجه جدی صورت پذيرد . حفاظت در مقابل انواع حملات اطلاعاتی از چالش های مهم در زمينه ايمن سازی برنامه های توزيع شده است .
•    يکسان سازی زمان (Clock) . عمليات و فرآيندهای متعددی در برنامه های توزيع شده به پارامتر زمان ارتباط خواهد داشت .. مثلا" در يک سيستم سفارشات تا تکليف وضعيت نحوه پرداخت،  مشخص نگردد نمی توان اقدام به پردازش و ثبت سفارش مربوطه نمود. بنابراين می بايست در رابطه با نحوه همسان سازی کلاک(Clock)  کامپيوترهای متفاوت که در يک برنامه توزيع شده با يکديگر ارتباط دارند،  تصميم لازم اتخاذ گردد .   
بخش های ديگر مقاله :
بخش دوم : بررسی دو نمونه معماری  در رابطه با برنامه های توزيع شده
بخش سوم : تاثير استانداردهای وب در فرآيند طراحی و پياده سازی برنامه های توزيع شده
بخش چهارم : مفاهيم اوليه  سرويس های وب
 
________________________________________
مفاهيم اوليه سرويس های وب - بخش دوم
در بخش اول اين مقاله ، به  مفاهيم اوليه دررابطه با برنامه های توزيع شده و چالش های مربوطه اشاره گرديد . در اين بخش به بررسی اجمالی  دو نمونه از راهکارهای ارائه شده در رابطه با برنامه های توزيع شده يعنی  معماری  RPC و مبتنی بر پيام، خواهيم پرداخت .
معماری مبتنی بر RPC  
معماری مبتنی بر RPC ،  اولين گزينه موجود بمنظور ارائه يک راه حل مناسب در ارتباط با  برنامه های توزيع شده است .
 RPC)Remote Procedure Call) ،  يک نوع فراخوانی به تابع و يا  روتپنی است که برروی يک سيستم از راه دور مستقر است .RPC ، مشابه فراخوانی يک روتين و يا يک تابع معمولی است که کدهای مربوط به فراخوانی تابع ، توسط کاربر بکار گرفته می شود . RPC ، دارای مشخصات زير است :
•    مشخص بودن  محل سرويس . برنامه نويس ، ضرورتی به آگاهی از محل فيزيکی ارائه دهنده سرويس نخواهد داشت .
•    يک مدل آشنا برای برنامه نويسان . اغلب برنامه نويسان نسبت به استفاده از اشکال خاصی از فراخوانی توابع، آشنا بوده و بدفعات در برنامه های خود اقدام به اين کار نموده اند . زير ساخت RPC ، يک Stub ايجاد که نمايانگر کد روتين از راه دور بوده و باعث فراخوانی تابع از راه دور بهمراه پارامترهای مربوطه از طريق شبکه و ارسال اطلاعات ذيربط برای سرويس دهنده RPC ، خواهد شد.بر روی سرويس دهنده RPC ، اطلاعات ارسالی (Stub) از حالت فشرده خارج ، و اطلاعات مربوطه ( آرگومان ها ) برای پردازش در اختيتار تابع صدازده شده ، قرار خواهند گرفت . نتايج مربوطه پس از فراخوانی تابع مربوطه و انجام عمليات ، برای صدا کننده تابع ، ارسال می گردد.
فراخوانی  همزمان توابع
در مدل RPC ، يک برنامه ارتباطی را با يک سرويس دهنده RPC برقرار می نمايد. فراخوانی توابع RPC ، شباهت بسياری به فراخوانی روتين های محلی دارد . سمنتيک بلاک های RPC ، مشابه آنهائی است که در فراخوانی روتين های محلی، مورد استفاده قرار می گيرد. اين حقيقت که سمنتيک بلاک ها مشابه است، بدين معنی است که فراخوانی ها بصورت همزمان می تواند صورت پذيرد. در اين حالت در مواقع ضروری بخشی از کدهای مربوط به اجرای روتين ، بلاک تا پس از برگرداندن مقدار توسط تابع مجددا" آزاد و امکان اجرای آنها فراهم گرد .بمنظور پياده سازی قابليت پردازش همزمان لازم است که با توجه به ماهيت کدهای موجود در يک روتين ، امکان اجراء يک نمونه از آنان را  در هر لحظه فراهم و پس از اطمينان از تکميل عمليات مربوطه ، بخش مربوطه آزاد تا زمينه اجرای ساير پردازه های در نوبت انتظار ، فراهم گردد. وضعيت فوق نظير تابع XOR است و شرط وجود يکی منوط به عدم وجود ديگری خواهد بود. برای اکثر پياده کنندگان نرم افزار ، مدل برنامه نويسی فوق مناسب و بکارگيری آن آسان خواهد بود  گرچه استقرار يک مدل همزمان در بالای معماری توزيع شده ، می تواند باعث بروز مسائلی خاص و از نگاهی ديگر گردد .
ايجاد افزونگی
اولين مسئله در ارتباط با معماری مبتنی بر RPC  ، به يافتن ( کشف ) اطلاعات بر می گردد. برنامه ها چگونه اطلاعات مورد نياز خود را  برای ارتباط با يک نقطه پايانی بمنظور دريافت سرويس مورد نظر، پيدا می نمايند.ساده ترين گزينه در اين راستا که توسط اکثر برنامه نويسان استفاده می گرد ، درج مستقيم (Hard code ) کدهای مربوط به نقطه پايانی ( نقطه تماس ) است . روش فوق مکانيزمی بهينه در اين رابطه نبوده و از يکطرف افزونگی اطلاعات را بدنبال داشته و از طرف ديگر امکان اشکال زدائی يک برنامه را با موانع جدی روبرو خواهد ساخت .
تجمع دردستيابی  
زمانيکه برنامه ای با چندين سرويس توزيع شده ارتباط برقرار می نمايد نسبت به برنامه ديگر که صرفا" با يک سرويس توزيع شده مرتبط می گردد ، دارای استعداد بيشتر، بمنظور پذيرش اشکالات خصوصا" در موارديکه سرويس ها در دسترس نمی باشند ، خواهد بود. تجمع و انباشت در دستيابی يک برنامه توزيع شده ، مستقيما"  تاثير منفی خود را از نحوه پياده سازی برنامه ها اخذ می نمايد.
 
Load balancing  و بروز اشکال   
درج مستقيم کد نقاط پايانی در يک برنامه ، باعث بروز مسئله ديگری می گردد . در اين رابطه برنامه های مبتنی برRPC قادر به استفاده از روشی مناسب و ساده  بمنظور انجام  عمليات Load Balancing پويا ، نخواهند بود .در صورت بروز اشکالات پويا  و عدم دستيابی به سرويس دهنده ، برنامه مربوطه قادر به ارائه پاسخ شايسته نخواهد بود.
اولويت بندی
در معماری مبتنی برRPC ، ا ولويت بندی درخواست ها تقريبا" غير ممکن بوده و تمام درخواست ها بصورت پيش فرض با توجه به الگوريتم FCFS)First Come First Serve) ، پردازش خواهند شد.در چنين مواردی اگر سرويس دهنده ای دارای حجم  پردازش  بالا( لود بالا ) باشد ، سرويس گيرندگان با اولويت بالا  که نيازمند دريافت خدمات مربوطه از سرويس دهنده مربوطه می باشند ، گرفتار تاخير فراوان خواهند شد.








انجام پایان نامه

انجام پایان نامه کامپیوتر، انجام پایان نامه ارشد کامپیوتر، انجام پایان نامه، پایان نامه

برای دیدن ادامه مطلب از لینک زیر استفاده نمایید

 

انجام پایان نامه | دانلود مقاله

سفارش پایان نامه