مفاهيم اوليه سرويس های وب
در مجموعه مقالاتی که بدين منظور نوشته خواهد شد به بررسی اصولی سرويس های وب و جايگاه آنان در فرآيند طراحی و پياده سازی برنامه های توزيع شده پرداخته می گردد . در اين راستا لازم است در ابتدا به مقاهيم اوليه برنامه های توزيع شده ، تکامل تدريجی برنامه های توزيع شده ، محدوديت های موجود در رابطه با معماری برنامه های توزيع شده ، رويکردهای متفاوت بمنظور طراحی و پياده سازی برنامه های توزيع شده ، پرداخته گردد تا زمينه علمی مناسب، برای پرداختن به مفاهيم اوليه سرويس های وب فراهم گردد .
مقدمه
تعريف برنامه توزيع شده
چرا به برنامه های توزيع شده نياز داريم ؟
• هزينه سيستم های Mainfarme . يکی از اولين دلايل مهم ، هزينه های بالای سيستم های Mainframe است . اين مسئله از دو زاويه متفاوت قابل بررسی است : هزينه بالای سرمايه گذاری اوليه که بسياری از سازمان ها و موسسات توان مالی آن را ندارند و دوم اينکه در اين مدل ، دارای صرفا" يک نقطه آسيب پذير با ريسک بالا می باشيم .
• مالکيت اختصاصی داده ها. يکی از فاکتورهای مهم ديگر، سياست های مربوط به مالکيت داده ها است . سازمان ها و موسسات که دارای داده های اختصاصی خود می باشند، علاقه مند به واگذاری مسئوليت مديريت داده های مربوطه ، به ساير مکان های فيزيکی نمی باشند .
• امنيت . يکی ديگر از فاکتورهای مهم در اين زمينه موضوع امنيت است . برای يک سازمان ، اولا" دستيابی به اغلب داده های آن می بايست بسادگی محقق گردد و ثانيا" داده ها ی حساس موجود در سازمان می بايست از بعد امنيتی، ايمن نگهداری گردند . تامين دو خواسته فوق ( رويکردهای رقابتی و رويکردهای امنيتی ) با جدا سازی فيزيکی داده ا از يکديگر محقق خواهد شد ( انباشت داده ها، با نگرش های متفاوت در رابطه با سرعت در دستيابی و ايمن در ذخيره سازی ، ضرورت وجود برنامه های توزيع شده را بخوبی نمايان می سازد )
مسائل فوق، ضرورت حرکت بسمت ايجاد يک الگوی جديد بمنظور طراحی برنامه های کامپيوتری را مطرح و بر همين اساس نسل جديدی از برنامه های کامپيوتری با عنوان " برنامه های توزيع شده" در عرصه نرم افزار بوجود آمد .
برنامه های توزيع شده و ارائه دهندگان سرويس
با توجه به ضرورت و تعجيل در طراحی يک الگوی جديد برای برنامه های توزيع شده و عدم وجود استانداردهای صنعتی لازم در اين خصوص ، شرکت های عظيم نرم افزاری هر يک با توجه به ديدگاه های خود ، اقدام به عرضه راهکارهائی در اين زمينه نمودند.شرکت های فوق، در رابطه با اينکه می بايست برنامه های توزيع شده بصورت عناصر توزيع شده ، توليد گردند ، اتحاد نظر داشتند . بدين ترتيب عناصر متفاوت و توزيع شده در يک برنامه، بعنوان ارائه دهندگان سرويس به يک برنامه منطقی ايفای وظيفه می نمايند. با توزيع قابليت ها و پتانسيل ها ، امکانات اساسی( بلاک های اوليه ) بمنظور ايجاد برنامه های بزرگ، بسادگی فراهم می گردد . رويکرد فوق ، مسائل و تبعات خاص خود را بدنبال داشت که در ادامه به بررسی برخی از آنان خواهيم پرداخت .
برنامه های توزيع شده و وب
مسائل مربوط به برنامه های توزيع شده سنتی
پياده سازی برنامه های توزيع شده مستلزم استفاده از تکنيک ها و مدل های جديد است . راهکارهای انتخابی و استفاده شده ، خود باعث بروز مسائل جديد نيز خواهند شد. در اين بخش به بررسی مسائل مرتبط با طراحی برنامه های توزيع شده پرداخته و دو معماری خاص در اين زمينه را بررسی خواهيم کرد :
• معماری RPC)Remote Procedure Call-based)
• معماری مبتنی بر پيام (Message-based)
ملاحظات مربوط به طراحی برنامه های توزيع شده
• نوع داده های متفاوت . سيستم های عامل متفاوت، انواع مختلفی از نوع داده ها را حمايت می نمايند. در برخی موارد ، نوع داده ها در سيستم های عامل متفاوت کاملا" با يکديگر سازگار، نمی باشند . بنابراين می بايست از راهکارهای مناسب بمنظور برخورد منطقی با نوع داده های متفاوت موجود در سيستم های مختلف ، استفاده گردد.
• بروز اشکال در سرويس دهنده . با توجه به اينکه عناصر يک سيستم توزيعی، عموما" بصورت از راه دور اجراء می گردند، ما دارای چندين نقطه ( مکان) برای بروز اشکال خواهيم بود. بروز اشکال در يکی از نقاط ، می تواند باعث بروز مسائل عمده ای در رابطه با عملکرد تمام برنامه توزيع شده گردد. بنابراين می بايست راهکارهای مناسب در خصوص مواجه شدن با چنين مواردی، اتخاذ گردد .
• بروز اشکال در سرويس گيرنده . در صورتيکه سرويس دهنده ای وضعيت خاصی را ازطرف سرويس گيرنده ، اخذ و ذخيره می نمايد و سرويس گيرنده با اشکال مواجه گردد، می بايست از روشی بمنظور اعلام بروز اشکال به سرويس دهنده استفاده کرد. تصميم گيری و نحوه برخورد با منابع در اختيار سرويس گيرنده نيز از جمله مواردی است که می بايست راهکارهای آن بدرستی مشخص گردد.
• تلاش برای فراخوانی مجدد . در صورتيکه يک متد از راه دور فراخوانده شود و از طرف سرويس دهنده واکنش لازم داده نشود، نبايد تلاش مجددی برای فراخوانی متد صورت پذيرد. مثلا" در صورتيکه متدی برای محاسبه هزينه يک سفارش فراخوانده شده و سرويس دهنده درخواستی را دريافت تا سفارش را انجام ولی پاسخ گم گردد منطقی نخواهد بود سفارش مربوطه مجددا" ارسال گردد .
• امنيت . در برنامه های توزيع شده فرصت های زيادی برای تهديد های امنيتی وجود دارد . در اين راستا لازم است از يکطرف به مسائل تائيد اعتبار و صلاحيت قانونی و از طرف ديگر به ايمن سازی ارتباطات بين يک سرويس گيرنده و يک سرويس دهنده ، توجه جدی صورت پذيرد . حفاظت در مقابل انواع حملات اطلاعاتی از چالش های مهم در زمينه ايمن سازی برنامه های توزيع شده است .
• يکسان سازی زمان (Clock) . عمليات و فرآيندهای متعددی در برنامه های توزيع شده به پارامتر زمان ارتباط خواهد داشت .. مثلا" در يک سيستم سفارشات تا تکليف وضعيت نحوه پرداخت، مشخص نگردد نمی توان اقدام به پردازش و ثبت سفارش مربوطه نمود. بنابراين می بايست در رابطه با نحوه همسان سازی کلاک(Clock) کامپيوترهای متفاوت که در يک برنامه توزيع شده با يکديگر ارتباط دارند، تصميم لازم اتخاذ گردد .
معماری مبتنی بر RPC
RPC)Remote Procedure Call) ، يک نوع فراخوانی به تابع و يا روتپنی است که برروی يک سيستم از راه دور مستقر است .RPC ، مشابه فراخوانی يک روتين و يا يک تابع معمولی است که کدهای مربوط به فراخوانی تابع ، توسط کاربر بکار گرفته می شود . RPC ، دارای مشخصات زير است :
• مشخص بودن محل سرويس . برنامه نويس ، ضرورتی به آگاهی از محل فيزيکی ارائه دهنده سرويس نخواهد داشت .
• يک مدل آشنا برای برنامه نويسان . اغلب برنامه نويسان نسبت به استفاده از اشکال خاصی از فراخوانی توابع، آشنا بوده و بدفعات در برنامه های خود اقدام به اين کار نموده اند . زير ساخت RPC ، يک Stub ايجاد که نمايانگر کد روتين از راه دور بوده و باعث فراخوانی تابع از راه دور بهمراه پارامترهای مربوطه از طريق شبکه و ارسال اطلاعات ذيربط برای سرويس دهنده RPC ، خواهد شد.بر روی سرويس دهنده RPC ، اطلاعات ارسالی (Stub) از حالت فشرده خارج ، و اطلاعات مربوطه ( آرگومان ها ) برای پردازش در اختيتار تابع صدازده شده ، قرار خواهند گرفت . نتايج مربوطه پس از فراخوانی تابع مربوطه و انجام عمليات ، برای صدا کننده تابع ، ارسال می گردد.
فراخوانی همزمان توابع
ايجاد افزونگی
تجمع دردستيابی
Load balancing و بروز اشکال
اولويت بندی
برخورد با مسائل غيرقابل پيش بينی
• قطع موقت جريان برق سرويس دهنده بر اساس بروز اشکال در سرويس دهنده
• بروز اشکال در منابع مورد نياز برنامه نظير ارتباط با يک بانک اطلاعاتی
• ضرورت استفاده از سخت افزار اضافه بمنظور برخورد با مسائل غيرقابل پيش بينی
معماری مبتنی بر پيام
پيام های غير همزمان
• امکان مسير يابی پيام ها بر اساس لود و اولويت وجود خواهد داشت .
• امکان استفاده بهينه از زمان برای سرويس گيرندگان در موارديکه در انتظار در اختيار گرفتن زمان مربوطه برای انجام عمليات می باشند، فراهم می گردد.
ويژگی های فوق ، خود می توانند باعث بروز مسائل ديگری گردند.
افزايش حجم عمليات پردازش
Interoperability
• نرم افزار صف بندی پيام ها
• نرم افزارهای ارتباطی که بين محيط های متمايز و متفاوت پيام ، قادر به ارائه توانائی خود باشد .
در صورت تامين ملزومات فوق و پس از پذيرش هزينه های اضافی ، ممکن است نتايج مطلوب و مورد نظر کسب نگردد . راه حل های مبتنی بر پيام، بعنوان روشی استاندارد بمنظور پياده سازی برنامه های توزيع شده موفق عمل نمی نمايند.
اولويت نادرست پيام ها
استانداردهای وب
وجود مشکل در ارتباط با پروتکل های باينری
مدل های اشياء توزيع شده نظير DCOM)Distributed Component Object Model) ، ( RMI)Java Remote Method Invocation) و CORBA(Common Object Request Broker Architecture ) ، دارای محدوديت عمده استفاده از پروتکل های باينری می باشند . استفاده از پروتکل های باينری ، باعث بروز مسائل متعددی می گردد :
• Firewalls . اولين مسئله در رابطه با پروتکل های باينری، Point to Point بودن آنان می باشد . هر ارتباط با يک نقطه پايانی که درون فايروال وجود دارد، مستلزم باز نمودن برخی از پورت ها برای مبادله اطلاعات توسط مديريت فايروال سيستم است . برای اکثر سازمان ها اين ريسک امنيتی ،قابل قبول نخواهد بود .
• Interoperability . يکی ديگر از مسائل، تعامل بين مدل های اشياء متمايز است . هر مدل اشياء از پروتکل های انحصاری خود استفاده می نمايد. می توان نرم افزاری را بمنظور ترجمه بسته های اطلاعاتی بين مدل های متفاوت اشياء ، ايجاد نمود. ( ممکن است نتايج نسبتا" خوبی را هم بدنبال داشته باشد ) . دستاورد رويکرد فوق ، الزام اغلب سازمان ها بمنظور استفاده از يک مدل اشياء برای پياده سازی تمام سيستم های خود در سازمان مربوطه، خواهد بود. در صورتيکه يکی از Partner های سازمان از يک مدل اشياء رقابتی ديگر استفاده نمايد ، می تواند باعث بروز مسائل متعددی گردد .
• فرمت های داده . يکی ديگر از مسائل مربوط به پروتکل های باينری، رمزگشائی داده ارسال شده با استفاده از اينچنين پروتکل هائی است . هر پروتکل با استفاده از روش خاص خود اقدام به رمزنمودن اطلاعات می نمايد. مشکل در ترجمه داده از يک فرمت به فرمت ديگر ما را بسمت سياست جداسازی سازمانی مبتنی بر فرمت داده ها که آنها را قادر به برخورد مناسب با داده ها می نمايد ، سوق خواهد داد .
با توجه به مسائل فوق در ارتباط با استفاده از پروتکل های باينری ، ضرورت وجود يک پروتکل يکدست و قابل استفاده در همه جا که بسادگی تفسير و قادر به حمل داده های رمز شده باشد ، بخوبی احساس می گرديد. بدين ترتيب تمام نگاه ها متوجه وب شد تا بتوان بکمک آن راه حل جامعی را ارائه تا هر شخص بسادگی قادر به استفاده از آن گردد .
اينترنت و وب
HTML ، زبانی است که نحوه افزودن علائم نشانه گذاری ( بشکل مجموعه ای از تگ ها ) به سندهای مبتنی بر متن را بمنظور ارائه اطلاعات در يک مرورگر وب و نحوه نمايش متن موجود در سند ، مشخص می نمايد. سندهای حاوی تگ های HTML ، سندهای ابرمتنی ناميده می شوند.
مزايای HTTP
XML فرمتی مناسب برای داده ها
• استفاده آسان بر روی اينترنت
• وضوح و شفافيت لازم
• سهولت در ايجاد
• تفسير و پردازش آسان
• توسعه پذير، مستقل ازمحيط مربوطه
رشد و گسترش XML ، دليلی قاطع بر مناسب بودن آن بعنوان يک فرمت عمومی داده است .
فايروال دوستانه
سرويس دهندگان وب قادر به Forward نمودن درخواست ها برای هر نوع سرويسی می باشند که يک درخواست HTTP را تشريح و قادر به ارائه پاسخ مبتنی بر HTTP باشند. تمامی عمليات فوق، بدون نياز به هرگونه پيکربندی مجدد و يا عدول از سياست های مربوط به فايروال، انجام می شود.
مسائل در ارتباط با وب
• امنيت . با توجه به عمومی بودن زير ساخت اينترنت ، ارتباطات انجام شده دارای پتانسيل لازم بمنظور آسيب پذيری در مواردی نظير : ره گيری ، اصلاح ، Spoofing ( روشی که با استفاده از آن امکان دستيابی غير مجاز به يک کامپيوتر فراهم می گردد ) و ساير مسائل مربوط به دستيابی ، خواهند بود.
• کارآئی . عموم کاربران اينترنت همچنان از خطوط Dial-up برای دستيابی به اينترنت استفاده می نمايند. همين مسئله باعث بروز مسائل متعددی در رابطه با کارآئی برنامه ها و خدمات مربوطه خواهد شد. بدين ترتيب در ارتباط با بکارگيری برنامه هائی با شرايطی خاص و پيچيده بر روی بستر وب ، دچار محدوديت هائی خواهيم بود .مثلا" برخی از برنامه ها ی محاوره ای نيازمند يک ارتباط متعامل مناسب با سرويس دهنده می باشند. محدوديت های مربوط به پهنای باند ارتباطات از نوع Dial-up ، باعث محدوديت در ارائه نوع برنامه های محاوره ای بر روی بستر وب می گردد.
مسائل مربوط به کارآئی و امنيت بهمراه مسائل موجود واقعی نظير قطع جريان برق سرويس دهنده و از کار افتادن برخی سرويس ها ( حتی بزرگترين وب سايت ها نمی توانند تضمين نمايند که همواره به ارائه خدمات مشغول هستند) باعث شده است که طراحی برنامه ها با رويکرد اجراء در يک شبکه اختصاصی بيشتر مورد توجه قرار گيرد و عملا" برنامه در يک ميدان محدودتر ولی ايمن و کارآ ، توزيع و استفاده گردد.
مقدمه
سرويس وب چيست ؟
عناصر اساسی سرويس های وب
بلاک های ساخت (Building - Blocks)
عدم وجود محدوديت در رابطه با اندازه يک سرويس وب
منابع ايستا يا برنامه های محاوره ای
ارتباط و همبستگی سرويس های وب
آينده سرويس های وب
• 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 |
• 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 استفاده می نمايد.