تبليغاتX
گرید کامپیوتینگ-Grid computing

گرید کامپیوتینگ-Grid computing

سایت تخصصی در مورد گرید کامپیوتینگ-grid computing-globus و سیستم های توزیع شده و علوم جديد كامپيوتر

چالش های برنامه های توزيع شده

مفاهيم برنامه نويسی   
 چالش های برنامه های توزيع شده   

 

 

  همزمان با رشد وب ، عموميت يافتن استفاده از کامپيوترهای شخصی و پيشرفت های مهم در زمينه دستيابی به شيکه های با سرعت بالا ، پردازش های توزيع شده بشدت مورد توجه قرار گرفته است . در اين نوع پردازش ها ، همواره می بايست بر دو اصل مهم تاکيد و راهکارهای مناسب را دنبال کرد. اولين مسئله توجه به معماری مبتنی بر Component ( عنصر) برای توليد نرم افزار و دومين مسئله نحوه تبين ارتباط بين عناصر ذيربط و تشکيل دهنده يک نرم افزا ر در محيط هائی با پردازش های توزيع شده است . همانگونه که قبلا" اشاره گرديد، برنامه های مبتنی بر وب که خود نمونه ای از پردازش های توزيع شده می باشند از مدل N-Tier پيروی می کنند. کليد طلائی طراحی اين نوع نرم افزارها ، توانائی نوشتن عناصر ( اجزاء) بگونه ای است كه از يكطرف امكان بكارگيری آنها  بسادگی در لايه ها و حتی  چندين برنامه فراهم شده و از طرف ديگر امكان ارتباط اين عناصر با يكديگر صرفنظر از زبان برنامه نويسی استفاده شده و ساير موارد ذيربط ،  فراهم گردد. ما مي بايست جعبه های سياهی را طراحي كنيم كه صرفنظر از ماهيت درون هر يك ، قادر به استفاده از توان آنها در بخش يا بخش های از يك و يا چندين نرم افزار باشيم . 
سير تکامل پردازش های توزيع شده
از گذشته تا کنون دو مدل اساسی  در پردازش های توزيع شده مورد توجه قرار گرفته است . RPC(Remote Procedure Call) و Client Server  . ارتباطا ت مبتنی بر RPC ، نسبت به Client Server دارای قدمت بيشتری بوده و بعنوان شاه كليد برنامه هاي توزيع شده در محيط يونيكس مطرح بوده است . يونيكيس يكی از اولين سيستم های عامل در زمينه استفاده كامل از امكانات ارتباطي پروتكل TCP/IP است . پروتكل فوق بهمراه استانداردهای مربوطه آن بعنوان ستون فقرات شبكه هاي مبتني بر يونيكس مطرح بوده است . مثلا؛ استاندارد DNS(Domain Name System) جهت همترازی آدرس يك كامپيوتر و نام آن ، FTP(File Transfer Protocol)، امكاني جهت تبادل فايل ها و پروتكل TelNet ، ارائه دهنده تسهيلات لازم  جهت دستابی به ترمينال ها . اگر امروز ما در دنيائی زندگی مي كنيم كه پروتكل TCP/IP  محور اساسي گفتمان در  شبكه های كامپيوتری   است ، بيش از بيست سال قبل يونيكيس چنين وضعيتی را دارا بوده  است . برنامه نويسان تحت يونيكيس بخوبی از توانائي های آن برای نوشتن برنامه های توزيع شده استفاده كرده اند. برنامه نويسان فوق از ارتباطات مبتني بر Socket جهت نيل به اهداف خود استفاده مي كردند. بر اساس رويكرد فوق ، اگر برنامه ای قصد ارتباط با برنامه ديگری را داشت ، بر اساس آدرس TCP/IP و يك شماره پورت ، يك لينك با آن برنامه ايجاد مي كرد.اين رويكرد تا مدت ها بعنوان يك راه حل مناسب جهت طراحی و اجرای برنامه های توزيع شده حضوری موفق  در عرصه برنامه های توزيع شده داشت .پس از مدت زمانی رويكرد فوق با دو چالش جدی مواجه گرديد : 1 – برنامه نويسان مجبور بودند كه نام و يا آدرس سرويس دهنده و شماره پورت مورد نياز جهت برقراری ارتباط را در Source  برنامه ها مستقيما" مشخص نمايند . 2 – برنامه نويسان گوناگون مي توانستند از پورت های يكسان برای برنامه های متفاوت استفاده نمايند .بديهی است در چنين حالتی Conflict ( تعارض ) بين شماره پورت ها امری اجتناب ناپذير بود. بمنظور برخورد با دو چالش فوق ، كميته يونيكيس مفهوم ارتباطات مبتنی بر RPC را مطرح كرد. بر اساس رويكرد فوق برنامه ای با نام Portmapper بر روی هر سرويس دهنده اجرا و بين برنامه های اجرائی بر روی سيستم ها ی متفاوت ، حكميت خواهد كرد. بر اين اساس هر برنامه بجای تلاش جهت ايجاد يك ارتباط با يك پورت خاص بر روي يك سيستم ، درخواست خود را برای Portmapper ارسال و وی مسئول ايجاد اطلاعات لازم جهت برقراری ارتباط خواهد بود. راه حل فوق با اينكه مسئله ارتباطات بين پردازه های توزيع شده را بگونه ای حل كرده بود ، ولي در رابطه با فورمت داده های مبادله شده بين برنامه ها سكوت اختيار كرده بود.در اين راستا تكنولوژی ديگری با نام XDR(eXternal Data Representation)، روشی را جهت تشريح داده های يك برنامه برای برنامه ديگر تعريف نمود. مي توان گفت كه XDR پيش كسوت XML است . RPC يك روش نسبتا" ساده ، انعطاف پذير برای پردازش های توزيع شده را ارائه كرد. شايد اين سوال مطرح شود كه چرا تكنولوژی فوق نتوانست تسلط و چيرگی خود را بر روی پردازش های مبتنی بر Client/Server ادامه و مستمر نمايد؟

مدل ارتباطي RPC تسلط مقتدر  خود را در دنيای يونيكس بخوبي ادامه داد  ولي با پيدايش و نياز به ارتباطات مبتني بر Client Server ( PC-to-server ) با يك مانع جدی مواجه گرديد. مشكل اساسی پروتكل هائی بوند كه در اغلب سيستم های Client Server  استفاده مي گرديد.پروتكل TCP/IP استاندارد تمامی توليدكنندگان نبود و هر توليدكننده پروتكل های اختصاصي خود را داشت مثلا؛ شركت ناول از IPX و شركت ماكروسافت از NetBEUI استفاده می كردند.چون پروتكل TCP/IP بعنوان استاندارد در دنياي سرويس دهندگان مبتني بر PC ، هنوز مطرح نشده بود و ارتباطات مبتنی بر RPC گزينه ای مناسب در اين زمينه نبودند، چراكه ستون فقرات تكنولوژی فوق بر پروتكل TCP/IP استوار بود. بنابراين در مقطعي با رشد شديد روش های ارتباطي نظير ODBC  براي دستيابي به بانك های اطلاعاتي ، صف بندی پيامها برای تبادل همزمان ، IPC و … مواجه شديم . پس از اينكه پروتكل TCP/IP به ميدان Client Server قدم گذاشت ، مجددا" ارتباطات مبتنی بر RPC مورد توجه قرار گرفت . در اين راستا تكنولوژيهای ارتباطی متفاوتی نظير : OLE ، Com ، Dcom ، Corba ، J2EE ،‌Java Enterprise ، Tuxedo و… مطرح گرديدنند. تمامی تكنولوژيهای فوق بدنبال ارائه تسهيلات ، انعطاف پذيری و اعتماد سازی بيشتر در برنامه های توزيع شده بودند.  مطلب فوق شايد مهمترين دليل رويكرد شركت های عظيم نرم افزاري جهت  ارائه يك ساختار استاندارد براي توليد اين عناصر باشد.
دو مدل استاندارد عمده تاکنون ، در اين زمينه مطرح و ارائه شده است .(DCOM(Distributed Component Object Model و CORBA Common Object Request Broker Architecture ، مدل های استاندارد شده در اين زمينه می باشند.

تعاريف و اصطلاحات

  • Interface . مجموعه ای از متدها که مسئوليت ارائه عمليات وارائه  قابليت ها را برعهده خواهند داشت .

  • Object class or class . نام مورد نظر  برای پياده سازی يک و يا چندين اينترفيس

  • Object (or object instance . نمونه ئی از برخی کلاس ها

  • Object server . پردازه ای که مسئوليت ايجاد و ميزبانی نمونه هائی از برخی کلاس ها را برعهده دارد.

  • Client . پردازه ای است که  متدی ازيک شی را فرا می خواند

مقايسه DCOM و CORBA
دو استاندارد فوق از مدل سرويس گيرنده / سرويس دهنده برای ارتباطات خود استفاده می نمايند. در اين راستا سرويس گيرنده بمنظور اخذ يک سرويس ، متدی را  توسط يک شی راه دور که بعنوان يک سرويس دهنده در مدل سرويس گيرنده / سرويس دهنده رفتار می نمايد ، فرا می خواند.سرويس ارائه شده توسط سرويس دهنده بصورت يک شی کپسوله می گردد. اينترفيس مربوط به شی توسط يک زبان تعريف اينترفيس (IDL) مشخص خواهد شد. اينترفيس های تعريف شده در يک فايل IDL بعنوان يک پيمان ارتباطی بين سرويس دهنده و سرويس گيرنده  ايفای وظيفه می نمايد.سرويس گيرندگان با فراخوانی متدهای تشريح شده در IDL با سرويس دهنده ارتباط برقرار می نمايند.در اين راستا مدل و نحوه پياده سازی شی از ديدگاه سرويس گيرنده مخفی نگاه داشته می گردد. برخی از مفاهيم برنامه نويسی شی گراء نظير : Encapsulation,Polymorphism,Single inheritance در سطح IDL ارائه شده است . تکنولوژی CORBA در سطح IDL از ويژگی Multiple inheritance حمايت می کند.

مدل ارتباطی بين يک پردازه  سرويس گيرنده ويک شی سرويس دهنده در تکنولوژي های CORBA,DCOM ، تابع مدل مبتنی بر شی RPC است . شکل زير ساختار RPC را نشان می دهد.

 مشاهده تصوير با ابعاد بزرگتر

 برای فراخوانی يک تابع راه دور ، سرويس گيرنده يک فراخوانی به Client Stub را انجام خواهد داد. Stub پارامترهای مربوط به فراخوانی تابع را در يک پيام درخواستی بسته بندی و يک Wire Protocol را بمنظور حمل پيام برای سرويس دهنده فرا می خواند. پس از حمل  ، در سرويس دهنده ، پيام در اختيار Server stub گذاشته شده تا عمليات بازگشائی بسته ارسالی انجام و زمينه فراخوانی متدهای مربوط به شی مورد نظر فراهم گردد.در تکنولوژی DCOM ،  وClient Stub بعنوان Proxy و Server Stub بعنوان Stub ناميده می شوند. در تکنولوژی CORBA  ، و Client stub بعنوان stub و Server stub بعنوان Skeleton ناميده می گردد.


تكنولوژی COM . مهمترين ويژگی تكنولوژی فوق قابليت استفاده مجدد و ارتباط متقابل براي عناصر( اشياء) توزيع شده است . بدين ترتيب پياده كنندگان نرم افزار اين امكان را پيدا خواهند كرد تا با در كنار هم قرار دادن اين عناصر و استفاده متعدد از آنان (حتي اگر توليدكنندگان آنها متفاوت باشند) ، قادر به خلق آثار ماندگار  در سريعترين زمان ممكن و متكی بر اصول مهندسی نرم افزار باشند. تكنولوژی Com  بصورت ناگهاني مطرح نگرديد و ريشه در تلاش هائی دارد كه از مدت ها قبل بعنوان يك نياز مطرح  شده بود ، معرفي  تكنولوژی OLE(Object Linking & Embedding)  در سال ،1991 اولين تلاش در اين زمينه بود كه توسط شركت مايكروسافت برای ارتباط و پيوستگی بين مستندات  مجموعه برنامه های آفيس مطرح گرديد. حوزه عملكرد تكنولوژی فوق بر روی مستندات ( Documents ) متمركزاست. در ادامه شركت مايكروسافت به اين نكته پی برد كه تكنولوژی فوق نبايد صرفا" متمركز بر روی مستندات باشد و مي تواند عملكردی جامع تر را داشته باشد.  بدين منظور نسخه شماره 2 ، OLE  در سال1995 مطرح گرديد و اين نسخه در ادامه تمامي عناصر و اجزای موجود در محيط ويندوز را شامل گرديد و بدين ترتيب COM  مطرح شد. در اوايل ، تكنولوژی فوق  در رابطه با عناصر و اجزای توزيع شده امكانات قابل توجه ای ارائه نكرده بود .شايد يكي از مهمترين دلايل آن ، عدم عرضه يك سيستم عامل شبكه ای از طرف مايكروسافت تا آن زمان بود.همزمان با عرضه ويندوز 95 و ويندوز NT  در سال 1996 و مطرح شدن امكانات شبكه ای و ضرورت توزيع ، اجراء و ارتباط بين عناصر توزيع شده، تكنولوژی DCOM(Distributed COM)  مطرح گرديد.سرانجام در سال 1997 نسخه توسعه يافته اين تكنولوژی با نام COM+  توسط شركت مايكروسافت ارائه گرديد.شکل زير معماری بکارگرفته شده درتکنولوژی DCOM را نشان می دهد.

 مشاهده تصوير با ابعاد بزرگتر

 

تكنولوژي CORBA . همزمان با گرايش بسمت طراحي و پياده سازی نرم افزارهاي  متكي بر مدل N-Tier  از يكطرف و نياز شديد به پياده سازي نرم افزار هاي متكی بر وب ، ضرورت توجه و بازنگری در نحوه طراحی و پياده سازی عناصر توزيع شده مورد اهتمام جدی شركت های بزرگ نرم افزاري قرار گرفت . شركت ماكروسافت در اين زمينه منادی تكنولوژی های   COM/DCOM/COM+ ، Internet Explorer و ActiveX   و  ساير شرکت ها " کوربا" را   مطرح كردند . اولين نسخه تکنولوژی فوق درسال 1992 توسط   OMG   كه بالغ بر ششصد عضو دارد، ارائه گرديد. آخرين نسخه آن ( نسخه شماره 2 ) در سال 1996 عرضه شده است . عملکرد تکنولوژی فوق شباهت زيادی به DCOM دارد. شکل زير معماری بکارگرفته شده در تکنولوژی فوق را نشان می دهد.

 مشاهده تصوير با ابعاد بزرگتر

بهرحال هدف تمامی تکنولوژی های عرضه  شده درزمينه پردازش های توزيع شده ،ارائه امکانات و استانداردهای لازم برای توليد و بکارگيری عناصر بمنظور ايجاد  نرم افزارهای توزيع شده بوده تا از اين طريق زمينه استفاده از سرويس ها و خدمات در بر نامه های توزيع شده بصورت محلی و يا از راه دور فراهم گردد.

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

 برای برنامه نويسی توزيع شده تاكنون متدلوژی های متفاوتی مطرح بوده است . سرويس های وب جديدترين رويکرد در اين زمينه می باشند. چرا با اين همه تنوع ، ما مجددا؛ به يك معماری جديد برای پردازش برنامه های توزيع شده نياز داريم ؟ چرا ما به سرويس های وب نياز داريم ؟ چرا خودمان را با يكی از متدهای موجود نظير RPC ، DCOM ، CORBA  تطبيق نمی دهيم ؟ پاسخ به تمام سوالات فوق و موارد مشابه ظهور و رشد سريع اينترنت  و وب است . در حقيقت اينرنت زمينه مناسب جهت تكامل برنامه های توزيع شده را فراهم نمود.  تکنولوژی های پيش از اين، اغلب  در شبكه های اختصاصی  ايمن و اعتمادپذير مورد استفاده قرار می گرفتند.برنامه های توزيع شده كه بر روی اينترنت اجراء می گردند، دارای چالش های خاص خود بوده و با توجه به تنوع ، وسعت بسيار زياد و رشد فزاينده ، ضرورت وجود يك مدل جديد برای برنامه نويسی توزيع شده بدرستی احساس می گردد.

كالبد شكافی سرويس های وب

سرويس های وب تصوير جديدی از برنامه های توزيع شده را ارائه داده اند . در اين راستا سه هدف عمده دنبال می شود :

  •  برنامه ها بسادگی برنامه های ديگر بر روی وب را پيدا كرده و با آنها تبادل اطلاعاتی داشته باشند.

  •  از تمامی توان اينترنت و پروتكل های مربوطه استفاده گردد.

  •  يك متدولوژی ايمن برای تبادل اطلاعاتی را ارائه نمايد.

در ادامه به بررسی نحوه تحقق هر يك از اهداف سه گانه فوق در تكنولوژی جديد سرويس های وب خواهيم پرداخت .

هدف اول :

يكی از اولين مسائل موجود در رابطه با برنامه نويسی توزيع شده ، نياز به روشی جهت نمايش واستفاده از داده  در برنامه ها است ،  شايد يكي از اولين را ه حل های ممكن در اين خصوص طراحی يك ساختمان داده مشترك باشد كه تمامی برنامه ها جهت مبادله داده ها از آن استفاده و  پيمان تفاهمی را امضاء كرده باشند ! . بديهی است در چنين وضعيتی تغيير در يك ساختمان داده ، مستلزم ايجاد تغييرات در برنامه هائی است كه بنوعی مصرف كننده داده های موجود در آن ساختمان داده هستند. مسئله فوق می تواند بعنوان يك مانع جدی جهت اعمال تغييرات در برنامه محسوب گردد. تمامی برنامه ها در اکثر اوقات می بايست، جهت استفاده از يك يا چند ساختمان داده به توافق رسيده باشند.و اين مسئله كوچكی نخواهد بود. XML پاسخی مناسب به اين نياز است . Xml يك متدولوژی مناسب برای استاندارد نمودن انتقال داده ها و رمز گشائی آنان است . يك فايل Xml ( يك مستند ) شامل داده ها و روشهای تشريح آنان است . بنابراين يك برنامه می تواند با دريافت يك فايل Xml قادر به تشخيص محتويات فايل و فورمت مربوط به المانهای داده ئی آن باشد. با استفاده از Xml ، فورمت داده ها می تواند تغيير كرده ، المانهای داده ئی تغيير ، افزايش و يا حتی حذف گردند، بدون اينكه نياز به انجام تغييرات در برنامه هائي باشيم كه از داده های فوق استفاده مي كنند. Xml شاه كليد طلائی سرويس های وب است . Xml الگوئی جهت تبادل داده ها بين برنامه ها و روتين هائی خواهد بود كه پايه و اساس آنها متكی بر سرويس های وب است . Xml يك عنصر استراتژيك در خط توليد محصولات شركت ما كروسافت بشمار مي آيد. اين عنصر حياتی هم در پروژه دات نت و هم در ساير محصولات شركت ماكروسافت نظير آفيس يك نقش محوری و تعيين كننده را برعهده دارد. با بهره گيری از تكنولوژی Xml برای تبادل داده ها يك بخش از جدول معمای سرويس های وب حل مي گردد.يكي ديگر از بخش های اين جدول معما ، يافتن پاسخی شايسته برای اين سوال است كه برنامه ها چگونه يكديگر را برای تبادل داده پيدا مي كنند؟در اغلب برنامه های توزيع شده و همچنين مدل سنتي Client Server ،‌ برنامه ها مي بايست به روشنی و صراحت لهجه در رابطه با برنامه ها و روتين هائی كه می خواهند با آنها در ارتباط باشند ، آگاهي لازم را كسب نمايند . استفاده از درج كد بصورت مستقيم در متن برنامه ها  ما را دچار مشكلاتی خواهد كرد كه در رابطه با تبادل داده ها نيز به آن اشاره شد. يعنی تغيير ساختار يك برنامه( برنامه توزيع شده )  كاری بس مشكل خواهد بود. تفكيك برنامه ها از يكديگر يكی از بزرگترين چالش ها و يكی از مهمترين رويكردها در رابطه با سرويس های وب است

مثال : فرض کنيد برنامه ای توزيع شده را داشته باشيم که بخشی از آن بر روی Desktop و بخشی ديگر بر روی سرويس دهنده اجراء می گردد هر بخش مسئول تامين برخی از خواسته های مورد نظر است . هر  قسمت بخشي از مسئوليت برنامه را كه همانا محاسبه ماليات است بر عهده خواهند گرفت ، بخش مربوط به سرويس گيرنده  مسئول ارائه توابع مربوط به بررسي صحت  و ذخيره سازی داده ها بوده و بخش موجود بر روی سرويس دهنده نيازمند انجام عمليات پيچيده ای جهت يافتن جداول مالياتی و  محاسبه ماليات مربوطه خواهد بود كه ممكن است هر سال ضرائب آن نيز تغيير يابند. اگر سيستم فوق با نگرش  سرويس های وب طراحي گردد ، ‌برنامه موجود بر روی سرويس دهنده مي تواند از روتين های خارجي ( نوشته شده توسط ساير افراد و استاندارد شده ) نوشته شده جهت محاسبه ماليات استفاده نمايد. در چنين فضائی ، برنامه موجود بر روی سرويس دهنده داده های مورد نياز را از  طريق يک فايل Xml برای  يک روتين اختصاصی ارسال کرده و روتين مربوطه ، داده های دريافتی را بعنوان مواد اوليه پردازش استفاده و نتايج بدست آمده بصورت يک فايل Xml برای برنامه موجود بر روی سرويس دهنده ارسال خواهد شد.  بصورت يك فايل  به برنامه موجود بر روي سرويس دهنده ارسال خواهد شد.  با استفاده از اين نوع شيوه طراحي برنامه هاي موجود بر روی Desktop  و سرويس دهنده  تا ساليان سال بدون نياز به اعمال تغييرات جديد به فعاليت خود ادامه داده و در اين رهگذر آن چيزی كه مي بايست تغيير كند جداول مالياتي بهمراه ضرائب جديد است . رسالت فوق برعهده يك روتين عام و استاندارد شده قرار گرفته و بسادگي قادر به تطبيق خود با شرايط جديد خواهد بود.

طراحی برنامه هائی از اين نوع ( مثال فوق ) با نگرش سرويس های وب ،‌ اين سوال را مطرح مي سازد  كه چگونه برنامه ها و روتين ها در يك محيط متكی بر سرويس های وب مي توانند يكديگر را پيدا نمايند؟چگونه برنامه موجود بر روی سرويس دهنده ( مثال فوق ) از محل برنامه ( روتين ) محاسبه ماليات آگاهی پيدا مي كند؟  برنامه های متكی بر معماری سرويس های وب با استفاده از دايركتوری ها (Directories) همديگر را پيدا خواهند  كرد. نقش يك دايركتوري در دنيای سرويس های وب ، ارائه يك محل مركزي برای برنامه ها و روتين ها بگونه ای است كه آنها قادر به يافتن ساير برنامه ها و روتين های مورد نظر خود جهت ارتباط باشند. بموازات توسعه و فراگير شدن  سرويس های وب ، مي توان اين انتظار را داشت كه چندين دايركتوری كه بر اساس نوع فعاليت خود ( Business ) طبقه بندی شده اند ، ‌بوجود آيد مثلا؛ توليد كنندگان اتومبيل دارای يك دايركتوری مجزای از شركت های بيمه باشند. چه كسی مسئوليت توزيع و پشتيبانی اين نوع دايركتوريها را برعهده خواهد گرفت ؟ در برخی حالات يكی از شركت های فعال در يك خط تجاری خاص مي تواند اين مسئوليت را برعهده گيرد . مثلا؛ يك توليد كننده اتومبيل مي تواند يك دايركتوری را براي ساير اعضاي صنف خود ايجاد و پشتيباني نمايد و يا تمامی توزيع كنندگان اتومبيل مي توانند با يكديگر متحد  و يك دايركتوری خاص ايجاد تا توسط تمامی توليد كنندگان اتومبيل مورد استفاده قرار گيرد. در حالات ديگر ، دايركتوری ها مي توانند Host گردنند و بعنوان يك حرفه جديد مورد توجه و مديريت قرار گيرند. مثلا؛ يك شركت تازه تاسيس مي تواند يك دايركتوری را بمنظور سرويس دهی به يك بخش خاص از فعاليت های تجاری پياده سازی و حق الزحمه خود را از ساير شركت هائی كه بهآن  دستيابی دارند ،‌ اخذ نمايد.پس از گذشت مدت زمانی ، قطعا" چندين دايركتوری با سرويس دهی مشابه در حرفه های گوناگون بوجود خواهد آمد و رقابت بين اين نوع از شركت ها بستر لازم جهت انتخاب را برای ساير شركت ها و موسسات تجاريی فراهم خواهد كرد.

از بعد فني  اين نوع از دايركتوری ها ( تطبيق سرويس های وب بايكديگر)  با ساير دايركتوريهاي موجود مانند  دايركتوريهائي جهت تاييد اعتبار كاربر و مديريت آنها نظير Active Directory در ويندوز و NDS ناول ، بسيار متفاوت خواهند بود.مثلا؛ دات نت ماكروسافت بگونه ای طراحي شده است كه قادر به تبعيت از  استاندارد Universal Description Discovery and Integration(UDDI) ،‌ باشد.  UDDI يك ساختار مناسب تعريف شده برای يك برنامه است تا از يك طرف  قادر به يافتن ساير برنامه ها بوده   و از طرف ديگر به اين سوال پاسخ دهد كه خود چه سرويسی برای ارائه دادن به ساير برنامه ها را در اختيار دارد.  با توجه به مثال گفته شده ( محاسبه ماليات ) ،‌برنامه فوق مي تواند يك دايركتوری را برای يافتن برنامه هائی كه جداول مالياتي و محاسباتی مربوطه را دراختيار دارند ، ‌جستجو نمايد. دايركتوری ها يك روش مطمئن و اساسی جهت عملكرد برنامه ها بدون نياز به تغيير را ارائه مي دهند. (سخن دايركتوری به مخاطبان خود: من تغيير خواهم كرد ، شما لازم نيست تغيير كنی ، با خيال راحت كار خود را ادامه دهيد!)

تا اينجا اين مسئله روشن شد كه چگونه Xml و دايركتوری های سرويس های وب برنامه نويسي توزيع شده را راحت تر كرده و يك زير ساخت مناسب جهت اين كاربا قابليت تسهيل در اعمال  تغييرات قراهم شده است  . بدون اتكاء به رويكرد فوق ، اضافه كردن يك Partner جديد و يا تغيير يك المان داده ئی مستلزم اعمال تغييرات زياد در تمامی برنامه ها در يك برنامه جامع توزيع شده است .

هدف دوم : 

اما چگونه مي توان اين سطح از دانش و تجربه را در محيط شبكه اي كه صرفا؛ قادر به درك مجموعه محدودي از پروتكل ها نظير Http  , SMTP  , FTP  است ، معرفی و استفاده کرد؟ چگونه می توان يك تكنولوژی جديد در دنيائی مملو از سرويس دهندگان فايروال و Proxy  را مطرح و عمومی نمود؟. پروتكل های موجود اينترنت برای انجام عمليات مورد نياز در محيط های متكي بر سرويس های وب  اولا" به اندازه لازم   انعطاف پذير نبوده  و ثانيا" تعداد آنها محدود است .  يك Partner  نمي تواند صرفا" يك فايل Xml را بكمك پروتكل FTP برای يك Partner ديگر ارسال و در انتظار پاسخ مناسب باشد.  SOAP(Simple Object Access Model) ،‌ يك پروتكل متكي بر Xml بوده كه امكانات لازم جهت تبادل داده  بين برنامه های هر partner با Partner ديگر را فراهم مي نمايد. از نكات جالب توجه پروتكل فوق مي توان به اين مسئله اشاره كرد كه امكان فعاليت  بر روی ساير پروتكل های موجود اينترنت نظير Http , SMTP را دارا است . البته در اولين نسخه ای كه از پروتكل فوق پياده سازی مي گردد،  استفاده بر روي Http مطرح شده است . بهرحال استفاده از  SOAP بر روی Http ، سرويس های وب قادر به حركت بر روی اينترنت بدون نياز به اعمال تغييرات عمده در فايروال های موجود ، خواهند بود. از پروتكل SOAP ،‌ علاوه براينكه براي انتقال داده های عمومی با فورمت Xml استفاده مي شود ، همچنين برای انتقال نوع خاصی از مستندات متكی بر Xml يعنی مستندات WSDL(Web Service Description Language) نيز استفاده مي گردد. مستنداتی از اين نوع  جزئيات يك سرويس خاص ارائه شده توسط يك برنامه  را تشريح و ساير اطلاعات  ضروری در رابطه با نحوه ارتباط با برنامه را مشخص خواهند كرد.  يك برنامه Partner ،برنامه ديگر را از طريق يك دايركتوری ، SOAP  و WSDL بمنظور تعيين محدوديت ها و قوانين مربوط به گفتمان مشترك بين يك برنامه و برنامه ديگر ، آگاه مي سازد . ( عصر گفتگوی منطقی برنامه ها هم فرا رسيده است و برای آن چارچوب تعريف شده است ! ! ) . به مثال گفته شده برگرديم ، برنامه مالياتي مي تواند يك برنامه محاسبه مالياتی را براساس يك دايركتوری پيدا كند در ادامه  از طريق پروتكل SOAP يك فايل WSDL را ارسال تا متوجه شود كه برنامه فوق چه نوع عمليات خاصی را مي تواند انجام  و در صورت لزوم  چه نوع داده ئی را مي بايبست  مبادله نمايد.

هدف سوم : 

تصور اين موضوع كه ما مي خواهيم تمامی فعاليت های تجاری خود را بهمراه مسائل شخصی از طريق سرويس های وب در اينترنت انجام دهيم  ،‌ شايد تا اندازه ای نگران كننده باشد. اگر سرويس های وب مي خواهند جايگاهي بلند مرتبه  را پيدا نمايند ، قبل از هر چيز مي بايست متدولوژيهای امنيتي قابل قبولی را ارائه نمايند. ماكروسافت در اين زمينه ايده جالب ،‌  استفاده از متدولوژيهای تاييد اعتبار كاربر كه توسط IIS  ارائه شده است  را، مطرح كرده است . در دنيای دات نت برنامه های Partner مي بايست دارای اعتبارنامه معتبر و تصويب شده در مجلس IIS باشند. اعتبارنامه ها مي تواند بر اساس NT Lanmanager(NTLM)  و يا Kerberos ( Active Directory ) باشند . اگر با يك نگاه منصفانه  به مدل ارائه شده توسط شركت ماكروسافت نظری داشته باشيم ،‌ در خواهيم يافت كه نوعی اطمينان از تاييد با مركزيت IIS بوجود خواهد آمد كه از يكطرف توانائی و از سوی ديگر انعطاف پذيری سرويس های وب را بيشتر خواهد كرد. چراكه برنامه هاي Partner ،‌مي بايست با شفافيت بدانند كه چگونه توسط برنامه های ديگر تاييد گردند. در حال حاضر يك مكانيزم قابل قبول و انعطاف پذير برای بدست آوردن يك مجوز عمومي ( جواز عمومي )  از يك منبع مستقل بين المللي وجود ندارد تا برنامه ها با اتكاء به آن همديگر را باور و تاييد نمايند.

امنيت در دات نت زمانيكه نگاه خود را بر روي سرويس گيرندگان متمركز نمائيم ، قابل تامل است . چون سرويس هاي وب مي بايست بصورت يكسان و يكنواخت طراحي گردند تا بتوانند خدمات متكي بر سرويس گيرندگان را ارائه نمايند، داشتن يك روش تاييد صلاحيت  براي  سرويس گيرنده كه چندين برنامه موجود بر روي سرويس گيرنده را به  به سرويس دهي فرا خواهد خواند ، بسيار مهم بوده و اگر چنين مدلي اين امكان را فراهم آورد كه كاربري يك بار تاييد گردد و صلاحيت آن در طول چندين برنامه موجود بر روي سرويس دهنده تاييد گردد بمراتب بهتر خواهد بود ( عالي است ! ) هدف محصول Passport  شركت ماكروسافت تاييدي بر انعطاف پذيري سرويس گيرندگان است كه خود بخشي از پروژه بزرگ دات نت است . هدف Passport تاييد يك كاربر از طريق يك مرورگر وب و ارسال اعتبارنامه وی برای چندين برنامه است  كه بر روی سرويس دهنده مشغول ارائه خدمات مي باشند.  در حقيقت  محصول فوق زمينه پيدايش  فدراسيون برنامه ها ی كامپيوتري را فراهم كرده تا بدين طريق سرويس گيرندگانی كه بنوعی تاييد می گردنند ، صلاحيت استفاده از تمامی برنامه های موجود در فدراسيون را خواهند داشت .عليرغم برخی انتقادات كه به اين محصول شركت ماكروسافت  انجام شده است ( منتقدين مي گويند كه با اين كار شركت ماكروسافت نمامي كاربران Online شبكه را كنترل مي كند) اين شركت همچنان بر آن مهر تاييد زده و آن را بعنوان يك بخش اساسی در پروژه دات نت خود قلمداد مي كند. ماكروسافت حتی بدنبال افزايش قابليت هايی Passport بگونه ای است كه تمامي محصولات خود را تحت پوشش قرار دهد. شايد در آينده اعتبارنامه Passport در Active Directory ذخيره و مجوزی برای استفاده از محصولات اين شركت هم باشد.

مهمترين چالش شركت ماكروسافت ايجاد يك تكنولوژی جديد با نام سرويس هاي وب نيست ، مهمترين چالش آنها  “  بودن “  و مديريت پروژه دات نت بگونه ای است كه بسادگی قابل فهم بوده و پياده كنندگان نرم افزار را تشويق به استفاده از برنامه های دات نت نمايد. برخي از منتقدين اين مسئله را عنوان كرده اند كه دات نت يك توانائی اضافه است كه ماكروسافت به محصولات خود داده است و نمي توان آن را بعنوان يك امكان جديد برای نسل جديدی از برنامه های توزيع شده قلمداد كرد.

منبع:  http://www.srco.ir/tutorial/Component.asp

 

+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:58  توسط یوسف عبدلیان باریکرسفی  | 

سیستم ها ی چند وظیفه ایMulti tasking

سیستم ها ی چند وظیفه ایMulti tasking


در تکنیک چندنخی (multitasking) یک فرایند (process) که برنامه‌ای در حال اجراست , می‌تواند به بخشها یا نخهایی (بندهایی ) تقسیم شود که می‌توانند به صورت همزمان اجراء شوند.
برنامه‌هایی که چند وظیفه مستقل از هم را انجام می‌دهند می‌توانند به صورت چند نخی نوشته شوند. گاهی اوقات به سیستمهای multithreading سیستمهای چند تکلیفی یا چند وظیفه ای (multitasking)هم گفته می‌شود.
فرآیند (process)یا پردازش اساس یک برنامه در حال اجراست که منابعی از سیستم به آن تخصیص داده شده است (شامل رجیسترها,حافظه,فایلها و دستگاهها).فرآیند می‌تواند مجموعه‌ای از یک یا چند نخ باشد.
به نخ, رشته یا بند هم گفته می‌شود . کلیه اطلاعات مربوط به هر پروسس , در یکی از جداول سیستم عامل به نام جداول process Control Block=PCB ذخیره می‌شود. این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسس‌هاست که در حال حاضر موجودیت دارد.
اطلاعات موجود در PCB عبارتند از :

  • حالت جاری پردازش
  • شماره شناسایی پردازش
  • اولیت پردازش
  • نشانی حافظه پردازش
  • نشانی محل برنامه پردازش بر روی دیسک
  • نشانی سایر منابع پردازش
  • محلی برای حفظ ثباتها .
+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:51  توسط یوسف عبدلیان باریکرسفی  | 

سیستم های بی درنگReal Time

سیستم های بی درنگReal Time


سیستمهای بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده می‌شوند. سیستم در این حالت می‌بایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد .
سیستمهای کنترل صنعتی, پزشکی , کنترل موشک و غیره از این دسته‌اند.
در سیستمهای بی درنگ زمان پاسخ باید سریع و تضمین شده باشد ولی در سیستم اشتراک زمانی مطلوبست که زمان پاسخ سریع باشند (ولی اجباری نیست).درسیستم دسته‌ای هیچ محدودیت زمانی در نظر گرفته نمی‌شود.
در سیستمهای بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه ‌های ROM استفاده می‌شود. سیستم عاملهای پیشرفته نیز در این سیستمها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدا می‌کند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی می‌شود.
سیستمهای بی درنگ با سیتسمهای اشتراک زمانی تناقض دارند لذا نمی‌توانند هر دو توأماً وجود داشته باشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستم‌های بلادرنگ از حافظه مجازی و اشتراک زمانی استفاده نمی‌کنند.
به این سیستم‌ها «بی درنگ سخت» نیز گفته می‌شود.
در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی, نسبت به سایر وظایف اولیت دارد و تا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستمها مهلت زمانی(deadline) را پشتیبانی نمی‌کنند استفاده آنها در کنترل صنعتی ریسک آور است . هر چند که این سیستمهای بی درنگ نرم می‌بایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستمهای بی درنگ سخت نمی‌باشد.
از کاربردهای سیستم بی درنگ نرم می‌توان رزرواسیون شرکتهای هواپیمایی ,چند رسانه‌ای (multimedia) واقعیت مجازی (Virtual reality) را نام برد. این سیستمها به ویژگی‌های سیستم عاملهای پیشرفته (که توسط بیدرنگ سخت حمایت نمی‌شوند)نیازمندند . بعضی از نسخه‌های UNIX مانند solaris 2 خاصیت بیدرنگ نرم را دارا می‌باشند.
در برخی کاربردها (مثل کنترل صنعتی)در کامپیوترها از سیستم عامل استفاده نمی‌شود. از آنجا که در سیستمهای کنترل صنعتی برنامه می‌بایست در اسرع وقت در مقابل یک اتفاق , از خود عکس العمل نشان دهد , وجود واسطه سیستم عامل باعث کند شدن مراحل می‌گردد.
+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:50  توسط یوسف عبدلیان باریکرسفی  | 

سیستم های چند برنامه ای Multi programming

سیستم های چند برنامه ای Multi programming


در نسل سوم کامپیوترها (80-1965) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه‌ها را می‌توان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی CPU boundیا CPU Limiter ( مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات Cpu می‌شود ودیگری برنامه های تنگنای I/O Limited)I/O )مانند برنامه‌های تجاری که بیشتر زمان کامپیوتر صرف ورود داده‌ها و خروج اطلاعات می‌شود.
یک اشکال مهم سیستم های دسته‌ای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان منتظر می‌شود. در این حال CPU بیکار می‌ماند و مجبور است صبر کند تا عملیات I/Oبه اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود 80تا90 درصد وقت CPU به هدر برود.
برای رفع این مشکل از تکنیک multiprogramming استفاده می‌شود. بدنی ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می‌شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می‌ماند, پردازنده به کار دیگری داده می‌شود. اگر تعداد کارهای موجود در حافظه کافی باشد می‌توان CPU را تقریباً صد در صد مشغول نگه داشت .
البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه‌ها بر همدیگر اثر سوء نداشته باشند . لذا مدیریت حافظه بحث مهمی در سیستم عامل می‌باشد.
+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:50  توسط یوسف عبدلیان باریکرسفی  | 

سیستم های چند پردازندهای Multi processing

 

سیستم های چند پردازندهای Multi processing


 

کامپیوترها می‌توانند به جای یک CPU چندین CPU داشته باشند که در اینصورت به آنها سیستم multiprocessing میگویند.جهت استفاده از این سیستمهای نیاز به یک سیستم عامل خاص می‌باشد که بتواند چندین برنامه یانخهای یک فرآیند ) را به صورت موازی واقعی روی آنها اجراء کند .
سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی چند CPU به کار می‌روند.
در سیستم چند پردازنده‌ای , CPUها باید بتواند از حافظه , امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند .مزایای این سیستمهای عبارتند از :
1.زیاد شدن توان عملیاتی (throughput) .منظور از throughput تعداد کارهایی است که در یک واحد زمانی تمام می‌شوند. بدیهی است هر چقدر تعداد پردازنده‌ها بیشتر باشد تعداد کارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست , مثلا اگر تعداد پردازنده‌ها n باشد سرعت اجراء برنامه‌ها nبرابر نمی‌شود چرا که بخشی از وقت پردازنده‌ها جهت مسائل کنترلی و امنیتی وسوئیچ کردنها به هدر می‌رود.
*صرفه جویی در هزینه‌ها , از آنجا که پردازنده‌ها منابع تغذیه , دیسکها , حافظه‌ها و ادوات جانبی را به صورت مشترک استفاده می‌کنند در هزینه‌های سخت افزاری صرفه‌جویی می‌شود.
2.تحمل پذیری در برابر خطا(fault-tolerant)سیستم های مالتی پروسسور قابلیت اعتماد را افزایش می‌دهند چرا که خرابی یک CPU سبب توقف سیستم نمی‌شود بلکه تنها سبب کند شدن آن خواهدشد .استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابی جستوجو شده , تشخیص داده شده و در صورت امکان اصلاح شود (یا کنار گذاشته شود). این توانایی به ادامه سرویس , متناسب با سطح بقای سخت افزار ,تنزل مطبوع یا graceful degradationنامیده می‌شود.
سیستمهای عاملهای چند پردازنده‌ای به دو دسته کلی متقارن و نامتقارن تقسیم می‌شوند.:br>
در سیستم چند پردازنده‌ای نامتقارن(Asymmetric Multi Processing = ASMP) یک پردازنده جهت اجراء سیستم عامل و پردازنده‌های دیگر جهت اجرای برنامه‌های کاربران استفاده می‌شود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء می‌شود, ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازنده‌‌ای به دست می‌آید.
این نوع سیستم عامل‌ها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمک پردازنده‌ و پردازنده‌ای که به هم متصل هستند یا دو پردازنده‌ای که از تمام حافظه‌موجود مشترکا" استفاده نمی‌کنند . یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی می‌تواند حالات مختلف داشته باشد.
در سیستم چند پردازنده‌ای متقارن(symmetric Multi Processing = ASMP) سیستم عامل می‌تواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازنده‌ها همزمان اجراء شود. در این حالت حافظه بین تمام آنها مشترک می‌باشد. تمام پردازنده‌ها اعمال یکسانی را می‌توانند انجام دهند. سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:
1.از آنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یک CPU ها اجراء شود باعث می‌گردد که آن پردازنده همواره بار سنگینی داشته باشد, در حالیکه احتمالاً پردازنده‌های دیگر بی کار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن (balancing) بار سیستم می‌شود.
2.در سیستم نامتقارن اگر پردازنده اجراء کننده سیستم عامل خراب شود کل سیستم خراب می‌شود ولی در سیستم متقارن از این نظر امینت بیشتر است چرا که اگر یک پردازنده از کار بیفتد سیستم عامل می‌تواند روی پردازنده‌های دیگر اجراء شود.
3.بر عکس سیستم عامل نامتقارن , سیستم عامل قابل حمل( portable) بر روی سیستم های سخت افزاری مختلف است .
سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 ورژن و همچنین windows NTاز نوع متقارن می‌باشند.
وجود پردازنده‌های متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread) یا فرآیندها (process) روی هر یک از پردازنده‌ها به عهده سیستم عامل است .
گرچه multithreadingو multiprocessingامکانات مستقلی هستند ولی معمولاً با هم پیاده سازی می‌شوند. حتی در یک ماشین تک پردازنده‌ای , چند نخی کارایی را افزایش می‌دهد. همچنین ماشین چند پردازنده‌ای حتی برای فرآیندهای غیر نخی هم کارآمد است .
شکل زیر تفاوت سیستم نامتقارن و متقارن را نشان می‌دهد :
گاهی اوقات به سیستمهای چند پردازنده‌ای ,سیستمهای Tightly Coupled یا ارتباط محکم نیز گفته می‌شود. چرا که پردازنده‌ها کلاک (Clock), گذرگاه و همچنین حافظه مشترکی دارند.

 

منبع : http://daneshnameh.roshd.ir/mavara/mavara-index.php?page=%d8%b3%db%8c%d8%b3%d8%aa%d9%85+%d9%87%d8%a7%db%8c+%da%86%d9%86%d8%af+%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d9%86%d8%af%d9%87%d8%a7%db%8c+Multi+processing&SSOReturnPage=Check&Rand=0

 

+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:49  توسط یوسف عبدلیان باریکرسفی  | 

سیستم های توزیع شدهDistributed system

سیستم های توزیع شدهDistributed system


سیستم عامل توزیع شده در یک محیط شبکه‌ای اجراء می‌شود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود می‌توانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بر گردند.
کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در می‌آید و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیز را با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد.
یکی از مزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامه‌هاست چرا که یک برنامه همزمان می‌تواند از چندین کامپیوتر برای اجراء شدنش استفاده کند.
همچنین به علت توزیع شدن اطلاعات, بانکهای اطلاعاتی حجیم می‌توانند روی یکسری کامپیوترهای شبکه شده قرار بگیرند. و لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود(که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر می‌رود.)
به علت تأخیر‌های انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه دریک سیستم تنها,بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .
همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد ویکی از کامپیوترها خراب شود, داده‌ها را می‌توان از کامپیوترهای دیگر بازیابی کرد از این نظر امنیت افزایش می‌یابد.
به سیستم های توزیع شده گاهی اوقات سیستمهای Loosely Coupled یا ارتباط ضعیف نیز می‌گویند,چرا که هر پردازنده کلاک و حافظه مستقلی دارد . پردازنده‌ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه‌های سریع یا خطوط تلفن ارتباط دارند.
+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:47  توسط یوسف عبدلیان باریکرسفی  | 

سیستم عامل/سیستم‌های توزيع شده

 

سیستم عامل/سیستم‌های توزيع شده

تعریف سیستم توزیع شده: هر سیستمی که بر روی مجموعه ای از ماشین ها که دارای حافظه اشتراکی نیستند، اجرا شده و برای کاربران به گونه ای اجرا شود که گویا بر روی یک کامپیوتر می باشند ، يک سيستم توزيع شده است. در يک سيستم توزيع شده : يک نرم افزار يا مجموعه نرم افزاری واحد و متحد الشکل بر روی هر گره اجرا می شود. همه ماشینها یک کرنل مشابه را اجرا می کند. هر کرنل منابع خود را کنترل می کند

مواردی که در طراحی سیستم توزیع شده باید در نظر گرفت: شفافیت انعطاف پذیری قابلیت اطمینان کارایی خوب قابليت گسترش

قابلیت اطمینان: در دسترس بودن یک فاکتور مهم مرتبط با اين سيستم ها است. طراحی نباید به گونه ای باشد که نیاز به اجرای همزمان کامپوننت های اساسی باشد. افزونگی بیشتر داده هاه باعث افزایش در دسترس بودن شده اما ناسازگاری را بیشتر میکند. قدرت تحمل نقص(Fault tolerance) باعث پوشاندن خطاهای ایجاد شده توسط کاربر می شود.

کارآیی: بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بی فایده می باشد. اندازه گیری کارايی در سيستم های توزيع شده کار آسانی نيست. برای رسيدن به کارايی بايد توازنی خاص در تعداد پیغامها و اندازه کامپوننهای توزیع شده بر قرار باشد.

قابليت گسترش: قابليت گسترش یک اصل کلی برای توسعه سیستمهای توزیع شده می باشد. برای رسيدن به اين قابليت بايد از کامپوننتها، جداول و الگوریتمهای متمرکز دوری کرد. فقط باید از الگوریتمهای غیر متمرکز استفاده شود.

خصوصیات الگوریتمهای غیرمتمرکز:

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


گونه های مختلف سیستمهای توزیع شده: سرور- ایستگاه کاری Processor pool هیبرید یکپارچه

مدل سرور - ایستگاه کاری

مدل Processor Pool


مدل هیبرید

مدل یکپارچه


سیستمهای توزیع شده متکی بر ارتباطات هستند و به طور کلی از دو سرويس زیر استفاده می کنند: انتقال پيام Message Passing فراخوانی از راه دور رویه ها Remote Procedure Call

سیستم توزیع شده از ديد لايه بندی ها

برنامه های کاربردی DBMS,TPS, … سیستم عامل توزیع شده سخت افزار

بخشهای اصلی سیستم عامل توزیع شده • مدیریت فایل • مدیریت منابع • مدیریت حافظه • مدیریت فرآیندها • Kernel

سیستم عامل توزیع شده باید امکانات Encapsulating منابع را مهیا سازد. کرنل و سرورها هر دو وظیفه مدیریت منابع را بر عهده دارند و چون شامل منابع نیز می باشند، باید موارد زیر را مهیا سازند: مجتمع سازی داده ها و سرويس ها Encapsulating پردازش همزمان محافظت داده ها

نحوه دسترسی به منابع کلاینتها با مشخص سازی منابع در آرگومان عملیات (فراخوانی از راه دور رویه ها در سرور یا فراخوانی سیستم در کرنل)به آنها دسترسی پیدا می کنند.


ارتباط بین قسمتهای مختلف DBMS


قسمتهای اضافه DDBMS



معماری سیستمهای توزیع شده


بر اساس استاندارد ISO در مدل معماری Open Distributed Computing موارد ذيل بايد transparent (شفاف) باشند : دسترسی(Access) موقعیت (Location) همزمانی(Concurrency) کپی برداری داده ها (Replication) اشکالات (Failure) تبديل پلتفرم (Migration) کارآیی (Performance) توسعه پذيری (Scaling)


مدلهايی برای تعامل فرآیندها مدل خادم / مخدوم (Client/Server) مدل یکپارچه مدل پایپ فراخوانی رویه از راه دور(RPC)

مدل کلاینت سرور در اين حالت نرم افزار خاص کلاينت روی هر ماشين اجرا می شود و کلاينت با واسطه سرور به منابع دسترسی پيدا می کند. سه مشکل عمده مدل کلاینت سرور عبارت است از: کنترل منابع اختصاصی بر روی یک سرور متمرکز می شود. هر سرور به طور بالقوه یک گلوگاه (Bottleneck) است. برای بهبود کارآیی، پیاده سازی چندگانه برای توابع مشابه باید انجام شود.



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


مدل یکپارچه در این مدل هر نرم افزار کامپیوتر بعنوان ابزاری کامل طراحی شده که دارای فایل سیستمی عمومی و مکانیسمی جهت تفسیر اسامی می باشد. این بدین معناست که هر کامپیوتر در سیستم توزیع شده از یک نرم افزار استفاده می‌کند. توجه داشته باشید که اگر سیستمی بر پایه مدل یکپارچه توسعه یافته باشد، اگر به صورت مناسبی پیکره بندی شده باشد، می تواند به راحتی به شکل سیستمی مبتنی بر مدل Client/Server ديده شود.

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


مدل RPC در سیستمهای مبتنی بر RPC، یک فرآیند می تواند یک رویه را در یک کامپیوتر راه دور فراخوانی کند. هنگامی که عمل فراخوانی انجام می شود، پیغام درخواستی برای کامپیوتر راه دوری که رویه در آن قرار دارد فرستاده می‌شود، سپس فرآیندی ایجاد می شود تا رویه اجرا شود، بعد از کامل شدن این فرآیند، پیغام پاسخ به فرآیند صد‌ازننده فرستاده می شود.

دلایل توزیع داده • DBMS متمرکز در مقابل سیستم پایگاه داده توزیع شده • سیستم پایگاه داده توزیع شده مجموعه ای از داده ها است که از لحاظ منطقی به یک سیستم تعلق دارند ولی از لحاظ فیزیکی در سایتهای مختلف یک شبکه کامپیوتری قرار دارند.

فاکتورهای مختلفی که باعث توسعه سیستم پایگاه داده توزیع شده شده اند عبارت است از: طبیعت توزیع شدگی برخی از برنامه های دیتا بیس افزایش قابلیت اطمینان و در دسترس بودن امکان به اشتراک گذاشتن داده ها افزایش کارآیی

طراحی و پیاده سازی سیستم پایگاه داده توزیع شده از پیچیدگیهای بیشتری برخوردار است و نسبت به DBMS‌های متمرکز توابع بیشتری را باید پیاده سازی کرد از جمله: دسترسی به سایتها و انتقال جستجو ها و داده ها اطلاع از توزیع داده ها و Replication در کاتالوگ DDBMS بکارگیری استراتژیهای مناسب برای اجرای پرس و جو ها و ... که دادهایشان در چندين سایت مختلف قرار دارد. تصمیم گیری در مورد استفاده از کدامین داده Replicate شده سازگار نگه داشتن کپی های داده های Replicate شده قابلیت بازیابی داده ها از سایتهایی که دارای مشکل شده اند. و ...



معماری فیزیکی DDBS





قانونهایی برای سیستمهای توزیع شده

قانون صفر: سیستمهای توزیع شده باید برای کاربر نهایی دقیقا به صورت سیستمهای متمرکز باشند.

استقلال محلی عدم وابسته بودن به سایت مرکزی عملیات پیوسته استقلال Location استقلال قطعات(Fragmentation) استقلال Replication پردازش توزیع شده جستجوها مدیریت توزیع شده Transaction استقلال سخت افزاری استقلال سیستم عامل استقلال شبکه استقلال DBMS


قانون 1: استقلال محلی سایتها باید تا حد امکان(بیشترین حد ممکن) مستقل باشند. داده های محلی باید در محل ذخیره و مدیریت شوند(با توجه به در نظر گرفتن یکپارچگی و امنیت) عملیات محلی باید حتما در خود محل اجرا شوند. تمام عملیات در یک سایت باید توسط همان سایت کنترل شود. این بدین معناست که سایت X نباید برای انجام موفقیت آمیز عملیات خود وابسته به سایت Y باشد. در برخی موارد، از دست دادن مقدار کمی از استقلال، اجتناب ناپذیر است: § مشکل قطعه قطعه شدن(قانون 5) § مشکل Replication(قانون 6) § به روز رسانی رابطه Replicate شده(قانون 6) § مشکل محدودیت یکپارچگی بین چند سایت(قانون 7) § A problem in participation in a 2 phase commit process(قانون 8)

قانون 2: عدم وابسته بودن به سایت مرکزی به هیچ عنوان نباید برای یک سرویس مرکزی به یک سایت وابسته بود. بعنوان مثال نباید دارای یک پردازشگر مرکزی(متمرکز) جستجوها یا مدیریت مرکزی(متمرکز) Transaction بود، چرا که کل سیستم به یک سایت خاصی وابسته می شوند. وابسته بودن به یک سایت خاص، حداقل به دو دلیل زیر غیر مطلوب می باشد: § سایت مرکزی ممکن است یک گلوگاه(Bottleneck) باشد. § سیستم ممکن است آسیب پذیر باشد. در یک سیستم توزیع شده، عملیات زیر (در میان سایر عملیات) حتما باید توزیع شده باشند: § مدیریت دیکشنری § پردازش جستجو § کنترل همزمان § کنترل بازیابی

قانون 3: عملیات پیوسته هیچگاه نباید نیاز به خاموش کردن (از قبل پیش بینی شد)ه کل سیستم برای اعمال تغییرات داشته باشیم. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید باعث توقف کل سیستم شود. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید نیازمند تغییری در برنامه های کاربر یا فعالیتهای ترمینال باشد. حذف سایت X از سیستم توزیع شده، نباید ئقفه های غیر ضروری در سرویس ایجاد کند. ایجاد و حذف و تکثیر قطعات به صورت پویا باید در یک سیستم توزیع شده امکان پذیر باشد. باید بتوان بدون نیاز به خاموش کردن کل سیستم، DBMS یک سایت را به روز کرد.

قانون 4: استقلال Location نه تنها کاربران نباید از محلی فیزیکی ذخیره داده ها مطلع باشند، بلکه از لحاظ منطقی باید به تصور کنند که داده ها در سایتهای محلی خودشان قرار دارد. ساده کردن برنامه های کاربر و فعالیتهای ترمینال اجازه تغییر سکو فراهم کردن استقلال Location برای عملیات ساده بازیابی ساده تر از عملیات به روز رسانی می باشد. داشتن طرحی برای نام گذاری داده توزیع شده(Distributed Data Naming Scheme) و ایجاد پشتیبانی مناسب از طریق زیر سیستم دیکشنری مواردی که باید در مورد کاربران پیاده سازی شود: § کاربر U باید شناسه معتبری برای ورود در سایتهای مختلف داشته باشد. § پروفایل هر کاربر برای هر شناسه مجاز باید در دیکشنری باشد. دسترسی های هر کاربر در هر سایت به وی اختصاص داده شود.

قانون 5: استقلال قطعات(Fragmentation) سیستمهای توزیع شده از قطعه قطعه شدن داده ها پشتیبانی می کنند، منوط به اینکه یک رابطه خاص قابلیت تقسیم به قسمتهای مختلف برای ذخیره در محلهای فیزیکی گوناگون را داشته باشد. سیستمی که این قابلیت را داشته باشد، از استقلال قطعات نیز پشتیبانی می کند. کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا داده ها در قسمتهای مختلف ذخیره نشده اند. از دلایل قطعه قطعه شدن داده ها، می توان به افزایش کارآیی اشاره کرد. قطعه قطعه شدن افقی(Select) قطعه قطعه شدن عمودی(Project) قطعه قطعه شدن باید در متن یک پایگاه داده توزیع شده تعریف شود. استقلال قطعات همانند استقلال Location باعث ساده تر شدن برنامه های کاربر و فعالیتهای ترمینال می شود. داده هایی که به کاربران نمایش داده می شود، از ترکیب منطقی قطعات مختلف (به واسطه الحاقها(Joins) و اجتماعات(Unions) مناسب)به دست می آید.


مثالی از قطعه قطعه شدن: داده ها از دید کاربران: شماره کارمندی دپارتمان حقوق E1 DX 450.000 E2 DY 400.000 E3 DZ 500.000 E4 DY 630.000 E5 DZ 400.000

قطعه مشهد قطعه تهران



شماره کارمندی دپارتمان حقوق شماره کارمندی دپارتمان حقوق E2 DY 400.000 E1 DX 450.000 E4 DY 630.000 E3 DZ 500.000

	 	 	 	E5	DZ	400.000


محل فیزیکی ذخیره داده ها(مشهد) محل فیزیکی ذخیره داده ها(تهران)

قانون 6: استقلال Replication کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا داده ها تکرار(replicated) نشده اند. سیستم توزیع شده از کپی برداری دادها پشتیبانی می کند، به شرط آن که یک رابطه( یا بطور کلی تر یک قطعه از رابطه) بتواند از لحاظ فیزیکی در کپی های مجزا و در سایتهای مجزا ذخیره شود. کپی برداری داده ها باید همانند قطعه قطعه شدن برای کاربران شفاف(غیر قابل تشخیص) باشد. دلایل عمده کپی برداری داده ها § کارآیی § در دسترس بودن(دسترسی) مشکل انتشار به روز رسانی استقلال Replication همانند استقلال قطعات و استقلال Location باعث ساده تر شدن برنامه های کاربر و فعالیتهای ترمینال می شود. رو نوشت از داده ها (Snapshots)


مثالی از کپی برداری داده ها:

داده ها از دید کاربران: شماره کارمندی دپارتمان حقوق E1 DX 450.000 E2 DY 400.000 E3 DZ 500.000 E4 DY 630.000 E5 DZ 400.000

قطعه مشهد قطعه تهران



شماره کارمندی دپارتمان حقوق شماره کارمندی دپارتمان حقوق E2 DY 400.000 E1 DX 450.000 E4 DY 630.000 E3 DZ 500.000

	 	 	 	E5	DZ	400.000


                 کپی قطعه تهران                                        کپی قطعه مشهد




شماره کارمندی دپارتمان حقوق شماره کارمندی دپارتمان حقوق E1 DX 450.000 E2 DY 400.000 E3 DZ 500.000 E4 DY 630.000 E5 DZ 400.000


محل فیزیکی ذخیره داده ها(مشهد) محل فیزیکی ذخیره داده ها(تهران)



قانون 7: پردازش توزیع شده جستجوها یکی از مهمترین و حیاتی ترین نکات در مرود سیستمهای پایگاه داده توزیع شده، انتخاب استراتژی مناسب برای پردازش توزیع شده جستجو(Query) می باشد. پردازش جستجو در سیستم های توزیع شده شامل موارد زیر می باشد: عملیات محلی ورودی و خروجی(I/O) و CPU در سایتهای مجزا تبادل اطلاعات میان سایتهای فوق الذکر Query Compilation Ahead Of Time Views That Span Multiple Sites integrity constraints that within DDBS that span multiple sites


قانون 8: مدیریت توزیع شده Transaction دو نکته مهم برای مدیریت Transaction، کنترل بازیابی(Recovery Control ) و کنترل سازگاری(Consistency Control) می باشد که نیاز به اعمال و دقت بیشتری در محیط های توزیع شده دارند. در یک سیستم توزیع شده، یک Transaction می تواند باعث اجرای کد در چندین سایت شده که همین امر خود می تواند باعث عملیات به روز رسانی در سایتهای مختلف شود. هر Transaction را می توان شامل چندید Agent در نظر گرفت که هر Agent، فرآیندی است که از طرف Transaction در سایت به خصوصی اجرا می شود.

بن بست عمومی: هیچ سایتی نمی تواند با استفاده از اطلاعات داخلی خود، آن را تشخیص دهد. قانون 9 :استقلال سخت افزاری • صرفه نظر از اینکه چه Platform سخت افزاری استفاده می شود، کاربران باید تصویر واحدی از سیستم داشته باشند. • بهتر است بتوان یک DBMS را بر روی سیستمهای سخت افزاری مختلف اجرا کرد. • بهتر است سیستم های مختلف سخت افزاری سهم یکسانی در یک سیستم توزیع شده داشته باشند. • نمی توان به راحتی فرض کرد که همواره می توان از سیستمهای همگن استفاده کرد، به همین دلیل هنوز باید یک DBMS بر روی سیستمهای مختلف سخت افزاری قابل اجرا باشد.

قانون 10: استقلال سیستم عامل • بهتر است که علاوه بر استقلال سخت افزاری، قادر به راه اندازی DBMS بر روی سیستم عاملهای مختلف (حتی سیستم عاملهای مختلف بر روی یک سخت افزار) باشیم. • حداقل سیستم عاملهای مهمی که باید DBMS پشتیبانی کند(با توجه به معیارهای تجاری)، عبارتند از: MVS/XA؛ MVS/ESA، VM/CMS، VAX/VMS، UNIX(محصولات مختلف)، OS/2، MS/DOS و WINDOWS

قانون 11: استقلال شبکه • مطلوب آن است که بتوانیم شبکه های نامتجانس مختلف را پشتیبانی نماییم. • از دید یک DBMS توزیع شده، شبکه یک سرویس مطمئن انتقال پیغام می باشد. • مفهموم مطمئن در عبارت فوق را می توان بدین صورت توصیف نمود که به طور مثال اگر شبکه پیغامی را از سایت X برای تحویل به سایت Y دریافت کرد، سرانجام آن پیغام را به سایت Y تحویل دهد. • نباید در محتوای پیغامها خللی ایجاد شده و پیغامها باید به ترتیب فرستاده شدن ارسال شده و بیش از یکبار نیز تحویل مقصد نشوند. • شبکه مسئول تایید سایت(Site Authentication) نیز می باشد. • یک سیستم ایده آل باید هم از شبکه های محلی(LAN) و هم از شبکه های گسترده(WAN) پشتیبانی نماید. • سیتمهای توزیع شده باید معماریهای مختلف شبکه را پشتیبانی نمایند.

قانون 12:استقلال DBMS سیستم توزیع شده ایده آل باید استقلال DVBMS را مهیا سازد.

+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:46  توسط یوسف عبدلیان باریکرسفی  | 

مفاهيم اوليه سرويس های وب - بخش چهارم

مفاهيم اوليه سرويس های وب - بخش چهارم

آنچه تاکنون گفته شده است :
بخش اول
: مفاهيم اوليه  برنامه های توزيع شده و چالش های مربوطه
بخش دوم : بررسی دو نمونه معماری  در رابطه با برنامه های توزيع شده
بخش سوم : تاثير استانداردهای وب در فرآيند طراحی و پياده سازی برنامه های توزيع شده
و اما در اين بخش ، به بررسی مفاهيم اوليه سرويس های وب خواهيم پرداخت .

مقدمه
مسائل موجود در رابطه با مدل های متفاوت اشياء در برنامه های توزيع شده ، باعث گرديد تا پياده کنندگان بدنبال راهکارهای مناسب و جايگزينی در اين زمينه باشند . با توجه به سرعت در تطبيق استانداردهای وب ، بديهی است که راه حل های ارائه شده می بايست مبتنی بر استانداردهای وب باشد . همين امر باعث ظهور و عرضه سرويس های وب گرديد.

سرويس وب چيست ؟
 سرويس وب، يک URL ، بمنظور آدرس دهی  مجموعه ای  از قابليت ها ئی است  که می توان آنان را از طريق شبکه و بمنظور ايجاد بلاک های اوليه در توليد يک برنامه های توزيع شده  ، بخدمت گرفت. يکی از نمونه های اوليه در اين زمينه ، برنامه Microsoft passport است . برنامه فوق ، سرويس های تائيد اعتبار را ارائه می نمايد . تمامی سرويس های فوق ، از طريق درخواست های مبتنی بر HTTP ، قابل دسترس و استفاده خواهند بود .

عناصر اساسی سرويس های وب
 عناصر اساسی در سرويس های وب، شامل : HTTP ,XML  و SOAP) Simple Object Access Protocol)  است . SOAP  ، يک پروتکل HTTP کم حجم و مبتنی بر XML بمنظور مبادله اطلاعات است . پياده سازی  تکنولوژی های فوق ، توسط کنسرسيوم وب کنترل و هدايت می گردد .

بلاک های ساخت (Building - Blocks)
سرويس های وب مشابه جعبه های سياهی بوده ( نظير عناصر) که صرفنظر از نحوه پياده سازی، می توان آنها را بسادگی بخدمت گرفت . سرويس های  وب ، باعث کپسوله نمودن پياده سازی و ارائه يک رابط مناسب برای ارتباطات توسط  سرويس وب می گردند . بنابراين می توان از سرويس های وب ، بعنوان بلاک های اوليه در ايجاد  برنامه های متعدد استفاده کرد .

عدم وجود محدوديت در رابطه با اندازه يک سرويس وب
سرويس های وب ، محدوديتی در رابطه با حجم و اندازه مورد نظر ندارند. يک سرويس وب ، می تواند از عناصر ساده ای نظير عناصر مورد نياز برای ثبت يک سفارش تا برنامه های بسيار بزرگ نظير برنامه های مالی را شامل شود . در اين راستا می توان از سرويس های وب در سطوح متفاوت متعدد و بمنظور ارائه يک راه حل مناسب استفاده کرد .

منابع ايستا يا  برنامه های محاوره ای
دامنه استفاده از سرويس های وب بسيار گسترده بوده و در اين راستا می توان از آنان بمنظور ارائه اطلاعات ايستا و يا سرويس های پويا  و بر اساس نقطه نظرات کاربران ، استفاده کرد . سرويس های وب ، قادر به ارائه  مجموعه ای از اطلاعات ايستا می باشند . مثلا" يک سرويس وب ، می تواند با توجه به  درخواست کاربر ، اطلاعات جمعيت شناسی مربوط به يک شهر خاص را ارائه نمايد. در موارد ديگر ، پياده کنندگان ممکن است از سرويس های وب بمنظور توليد برنامه هائی با قابليت محاوره ای بالا ، استفاده نمايند. مثلا" يک وب سايت مسافرتی ، می تواند مجموعه سرويس های لازم در خصوص يک مسافرت را بصورت Online در اختيار متقاضيان قرار دهد. در چنين مواردی ، کاربران می توانند با استفاده از سرويس های وب ، تمامی خدمات  مربوط به يک مسافرت را  دريافت نمايند ( گرفتن هتل  ، برنامه ريزی پرواز ، ثبت و اخذ بليط و ... )

ارتباط و همبستگی  سرويس های وب
يک سرويس وب ، قادر به ارتباط  با ساير سرويس های وب بمنظور ارائه يک مجموعه مناسب از سرويس ها است . مثلا" يک سرويس وب برای يک آژانس مستغلات ، ممکن است از سرويس وب ديگر برای تائيد و صحت کارت اعتباری ، بمنظور موافقت در ارائه تسهيلاتی نظير وام بانکی بصورت Online استفاده نمايد .در آينده برنامه های توزيع شده فراوانی با استفاده از سرويس های وب ، ايجاد می گردد . در اين نوع برنامه ها ، سرويس های وب بر اساس شاخص های متعددی ، انتخاب خواهند شد. در دسترس بودن ، قيمت ، کارآئی و کيفيت،  نمونه هائی از معيارهای لازم در خصوص انتخاب يک سرويس وب ، بشمار می آيد .

آينده سرويس های وب 
چرا می باسيت نسبت به موفقيت سرويس های وب ابراز اميدواری کرد ، در حاليکه تمام تکنولوژی های ديگر تاکنون با مشکل مواجه شده اند ؟ بمنظور پاسخ به سوال فوق ، لازم است به برخی از عوامل موفقيت سرويس های وب ، اشاره گردد .

  • Interoperability . سرويس های وب با استفاده از SOAP فراخوانده می شوند . چون SOAP دارای ماهيتی مستقل از محيط مربوطه است ، پياده کنندگان ضرورتی به مشخص نمودن نحوه ارتباط بين عناصر DCOM ، CORBA  و ساير پروتکل های ديگر ، نخواهد داشت . بدين ترتيب هر سرويس وب ، قادر به ارتباط با هر سرويس وب ديگر خواهد بود . با توجه به اينکه سرويس های وب ، قادر به ارتباط از طريق HTTP و XML می باشند ، هر گره موجود در شبکه که قادر به حمايت از تکنولوژی های فوق باشد ، توان ميزبان بودن و يا دستيابی به سرويس های وب را دارا خواهد بود .

  •  حمايت از زبان های متعدد . پياده کنندگان قادر به نوشتن سرويس های وب با استفاده از زبان ها ی متعددی خواهند بود . بدين ترتيب ، ضرورتی به فراگيری يک زبان جديد و استانداردسازی يک زبان خاص، بمنظور ايجاد و يا استفاده از سرويس های وب نخواهد بود .

  • استفاده مجدد از برنامه ها . استفاده از عناصر و کتابخانه های موجود بهمراه سرويس های وب بسادگی انجام خواهد شد . توليدکنندگانی  نظير شرکت ماکروسافت ، ابزار لازم برای بکارگيری عناصر و کتابخانه ها را  فراهم نموده اند . اغلب شرکت ها دارای تعداد زيادی  منابع نرم افزاری نظير : عناصر، توابع کتابخانه ای   و برنامه ها ،   می باشند. استفاده از امکانات موجود ( منابع نرم افزاری )  ، همواره مقرون بصرفه تر از پياده سازی مجدد آنان است .

  • استفاده از استانداردهای حمايت شده صنعتی . تمامی  توليد کنندگان، از مشخصات تکنولوژی های مرتبط  با سرويس های وب ، حمايت می نمايد( خصوصا" HTTP,XML,SOAP ). بدين ترتيب امکان ارتباط سيستم های نامتجانس بسادگی فراهم خواهد شد . مثلا"  عنصری که با  #C  نوشته شده و بعنوان يک سرويس وب استفاده می گردد ،  بسادگی قادر به استفاده توسط هر نوع برنامه مبتنی بر CGI خواهد بود که با   ++C نوشته شده و پتانسيل  ايجاد يک درخواست مبتنی بر SOAP و پردازش نتايج  مربوطه را دارا باشد.

 پشته تکنولوژی وب و دات نت

پشته تکنولوژی وب و دات نت

SOAP                                      System.Web.Services

XML or Binary Formats       System.Runtime.Remoting

HTTP                                       System.Net

Sockets                                   System.Net.Sockets

TCP/IP                                    System.Net.Sockets


بمنظور طراحی و پياده سازی برنامه های توزيع شده ، از گزينه های متعددی استفاده می گردد . انتخاب هر گزينه مبتنی بر مجموعه ای از پارامترهای متفاوت است . تمامی تکنولوژی های موجود در اين زمينه را می توان بر اساس خصوصيات مربوطه در يک پشته (Stack) سازماندهی کرد. در بالاترين سطح اين پشته،  تکنولوژی SOAP  و در پايين ترين سطح ، پروتکل TCP/IP قرار می گيرد. انتخاب تکنولوژی موجود در سطوح پايين تر در پشته فوق ،  افزايش کارآئی را بدنبال خواهد داشت . در چنين مواردی پياده کنندگان می بايست اطلاعات لازم و مناسبی از تکنولوژی انتخابی مربوطه را داشته باشند . بموازات حرکت در سطوح پائين تر ،  سطح اطلاعات و دانش مربوطه ، افزايش و پياده کنندگان می بايست در اين زمينه مهارت های خاصی را داشته باشند . بدين ترتيب استفاده از SOAP نسبت به TCP/IP ،  به دانش و مهارت های بمراتب کمتری نياز خواهد داشت ( نظير انتخاب زبان ماشين و يا يک زبان برنامه نويسی سطح بالا برای برنامه نويسی ).

  • TCP/IP . پائين ترين سطح در پشته تکنولوژی است . در اين سطح ،  عناصر توزيع شده از يک برنامه برای ارتباط با يکديگر از  TCP/IP ،  استفاده می نمايند. فريمورک دات نت،   بمنظور حمايت از اين نوع ارتباط،  از کلاس های متعدد موجود در Namespace با نام System.Net.Sockets  استفاده  می نمايد.

  • Sockets . در صورتيکه قصد حمايت از session  در برنامه ای وجود داشته باشد، می توان از Socket استفاده کرد. فريمورک دات نت،  بمنظور حمايت از اين نوع ارتباط،  از کلاس های متعدد موجود در Namespace با نام System.Net.Sockets استفاده  می نمايد.

  • HTTP . در صورتيکه قصد برقراری ارتباط با سرويس دهندگان وب و يا امکان ارتباط از طريق فايروال ، وجود داشته باشد ، می توان از HTTP استفاده کرد.  فريمورک دات نت،  بمنظور حمايت از اين نوع ارتباط ، از کلاس های متعدد موجود در Namespace با نام System.Net استفاده  می نمايد.

  • XML  يا فرمت های باينری . با استفاده از تکنولوژی های فوق ، امکان پياده سازی يک برنامه توزيع شده براساس دستيابی از راه دور اشياء،  وجود دارد. در چنين مواری مسائل متعددی نظير يکسان بودن اشياء و فرمت مبادله اطلاعات بين اشياء از راه دور،  وجود خواهد داشت. فرمت مبادله اطلاعات  می تواند بصورت باينری و يا سريال سازی XML برای شی مربوطه باشد.فريمورک دات نت ، بمنظور حمايت از اين نوع ارتباط ، از کلاس های متعدد موجود در Namespace با نام System.Run time.Remoting  استفاده  می نمايد.

  • SOAP . در صورتيکه قصد پياده سازی سرويس های از راه دوری وجود دارد که ارتباطی بسيار نزديک ( آزاد )  با  ساير سرويس ها ی مصرف کننده را  داشته  و تماما" مبتنی بر استانداردهای وب می باشند  ، می توان يک سرويس وب را پياده سازی کرد. پروتکل انتخابی برای اين نوع برنامه ها SOAP است . فريمورک دات نت ،  بمنظور حمايت از اين نوع ارتباط،  از کلاس های متعدد موجود در Namespace با نام System.Web.Services  استفاده  می نمايد.

در بخش پنجم اين مقاله ، به بررسی گزينه های موجود در دات نت برای سرويس های وب اشاره می گردد .

+ نوشته شده در  پنجشنبه بیستم فروردین 1388ساعت 19:45  توسط یوسف عبدلیان باریکرسفی  |