سرويس هاي وب يکي از مهمترين تحولات اخير در زمينه نرم افزار بوده که قطعا" دستاوردهاي فراواني را در ارتباط با طراحي و پياده سازي نرم افزار ، بدنبال خواهد داشت . سرويس هاي وب ، تسهيلات لازم بمنظورايجاد نسل جديدي از برنامه هاي وب را ارائه مي نمايند. در مجموعه مقالاتي که ارائه گرديد با مفاهيم اوليه سرويس هاي وب آشنا شديم . در ادامه سلسله مباحث مربوط به سرويس هاي وب ، به بررسي معماري آنان خواهيم پرداخت .
مقدمه
بمنظور ايجاد برنامه هاي توزيع شده قدرتمند و انعطاف پذير ، موارد متعددي وجود دارد که مي بايست به آنها توجه گردد:
در موارديکه قصد ارتبا ط بين منابع نرم افزاري وجود داشته باشد ، منابع مي بايست بدرستي و بخوبي با يکديگر مرتبط گردند( منابع مشخص و از يکديگر متمايز گردند).
ارتباط بين برنامه ها مي بايست متکي بر استانداردهاي اينترنت باشد .
اينترفيس هاي ( بخش هاي مرتبط با استفاده کننده ) منابع نرم افزاري ، مي بايست براي استفاده عموم منتشر و امکان دسترسي به تعاريف اينترفيس بهمراه مستندات مربوطه وجود داشته باشد .
برنامه هائي که با لحاظ نمودن موارد فوق ، طراحي و پياده سازي مي گردند ، مزاياي زير را بدنبال خواهند داشت :
مي توان از سرويس هاي نرم افزاري و منابع خارجي بمنظور طراحي و پياده سازي نرم افزار مورد نظر خود استفاده کرد.
امکان ايجاد منابع نرم افزاري بيشتري بصورت ماژولار ، وجود خواهد داشت ( کيت هاي نرم افزاري با قابليت استفاده مجدد ) .
هزينه توليد نرم افزار کاهش و بهره وري افزايش خواهد يافت .
مطرح شدن ايده عرضه نرم افزار بعنوان سرويس . بدين ترتيب در مقابل عرضه يک نرم افزار Stand-alone ، مي توان از رويکرد نرم افزار بعنوان سرويس ، استفاده نمود.
عناصر معماري مبتني بر سرويس
معماري مبتني بر سرويس براي پياده سازي برنامه هاي توزيع شده ،ايده آل مي باشد . معماري فوق ،امکان پياده سازي پويا ، آزاد و گسترده برنامه هاي توزيع شده را فراهم مي نمايد.
امروزه شاهد بکارگيري سيستم هاي متعددي مي باشيم که خود از چندين برنامه و يا زير سيستم استفاده مي نمايند. با توجه به ارتباط بين سيستمها با يکديگر ، ايجاد و اعمال يک تغيير در ارتباط با هر يک از زير سيستمها مي تواند باعث بروز اشکال در تعداد زيادي از عناصر وابسته و يا ساير برنامه ها گردد . رويکرد فوق ، افزايش هزينه نگهداري اين نوع سيستم ها را بدنبال خواهد داشت .
معماري مبتني بر سرويس ، وابسته به سه عنصر اساسي است که هر يک داراي جايگاه خاص خود مي باشند : Service Provider ( ارائه دهنده سرويس ) ، Service consumer ( مصرف کننده سرويس ) و Service broker ( کارگزار سرويس ) . شکل زير معماري فوق را نشان مي دهد .
ارائه دهنده سرويس ، گره اي در شبکه ( اينترانت و يا اينترنت ) است که امکان دستيابي به اينترفيس يک سرويس نرم افزاري را فراهم مي نمايد . گره ارائه دهنده سرويس ، امکان دستيابي به سرويس هاي يک سيستم تجاري ، يک زير سيستم و يا يک عنصر را بوجود مي آورد .مصرف کننده سرويس ، گره اي در شبکه است که به سرويس ارائه شده توسط يک ارائه دهنده سرويس مرتبط و از امکانات و پتانسيل هاي سرويس ارائه شده در جهت پياده سازي سيستم خود استفاده مي نمايد. مصرف کننده سرويس را مي توان بمنزله يک برنامه سرويس گيرنده بر روي يک گره در نظر گرفت . کارگزار سرويس ، گره اي در شبکه است که مسئول تشريح سرويس را برعهده داشته و مي توان آن را بمنزله يک دفترچه آدرس در نظر گرفت که براي جستجو و يافتن سرويس ، مورد استفاده قرار مي گيرد. مصرف کننده سرويس ( متقاضي ) ، درخواست خود را در ارتباط با سرويس موردنظر به کارگزار ارائه و کارگزار، سرويس درخواستي بهمراه ارائه دهنده مورد نظر را پيدا مي نمايد .
ارتبا ط بين وظايف سه گانه
عناصر سه گانه اشاره شده در معماري مبتني بر سرويس ، با يکديگر مرتبط تا زمينه تحقق عمليات زير فراهم گردد :
عرضه سرويس . ارائه دهندگان سرويس ، سرويس ها ي خود را براي يک کارگزار سرويس ، عرضه مي نمايند ( ثبت در دفترچه آدرس ) . اطلاعات ارائه شده شامل : تعريف اينترفيس سرويس ، محل ارائه دهندگان سرويس ، ساير اطلاعات حمايتي و يا مستندات ضروري خواهد بود.
يافتن سرويس . مصرف کنندگان ، سرويس ها ي مورد نياز خود را با کمک يک کارگزار ، پيدا خواهند کرد .
ارتباط به سرويس . مصرف کنندگان سرويس به سرويس هاي خاصي که توسط يک ارائه دهنده سرويس ارائه شده است ، مرتبط و زمينه استفاده آنان از سرويس مورد نظر فراهم خواهد شد. فرآيند فوق ، شامل تائيد مصرف کنندگان خواهد بود.
عمليات يافتن و نسبت دهي سرويس ها مي تواند بصورت پويا انجام گيرد . بدين ترتيب برنامه ها قادر خواهند بود بصورت پويا خود را پيکربندي نمايند. مثلا" اگربرنامه اي تشخيص دهد که مدت زمان پاسخ از يک ارائه دهنده سرويس ، زماني غير معقول است ، مي تواند در زمان اجراء ، تصميم بر استفاده از يک ارائه دهنده سرويس ديگر نمايد .
معماري سرويس هاي وب و معماري مبتني بر سرويس
عناصر اساسي در معماري سرويس وب عبارتند از :
ارائه دهنده سرويس وب .گره اي در شبکه که مسئوليت ميزبان نمودن يک سرويس وب را برعهده خواهد داشت .
مصرف کننده سرويس . گره اي در شبکه که مسئوليت ميزبان نمودن هر سرويس گيرنده اي را که قادر به ارتباط با استفاده از HTTP باشد را برعهده مي گيرد. مرورگرها ، برنامه هاي کنسول و برنامه هائي با رابط کار گرافيکي سنتي ، نمونه هائي از برنامه هاي سرويس گيرنده مي باشند.
کارگزار سرويس وب. گره اي در شبکه که مسئوليت ميزبان نمودن يک ريجستري سراسري از تمامي سرويس هاي وب در دسترس را برعهده خواهد داشت .( نظير يک کتاب آدرس جامع ) .
تمامي گره هاي فوق ، قادر به ارتباط با يکديگر از طريق شبکه هاي مبتني بر پروتکل TCP/IP مي باشند . در سرويس هاي وب ، سه گره تعريف شده در معماري مبتني بر سرويس ، متناظر با عناصر سرويس هاي وب خواهند بود:
کارگزار سرويس ، مسئوليت ميزبان نمودن UDDI)Universal Description,Discovery and Integration ) را برعهده خواهد داشت .
ارائه دهنده سرويس ، مسئوليت عرضه سرويس هاي وب از طريق صفحات ASP.NET با انشعاب asmx . را برعهده خواهد داشت .
مصرف کننده سرويس ، قابليت برقراري ارتباط از طريق HTTP ويا SOAP)Simple Object Access Protocol) را دارا مي باشد .
همانگونه که اشاره گرديد، در معماري يک سرويس وب از سه عنصر اساسي استفاده مي شود : ارائه دهنده سرويس وب ، استفاده کننده سرويس وب و کارگزار سرويس وب . در ادامه به تشريح هر يک از عناصر فوق خواهيم پرداخت . ( در اين بخش از مقاله به بررسي ارائه دهنده سرويس پرداخته و در بخش دوم اين مقاله ، مصرف کننده سرويس و کارگزار سرويس ، تشريح خواهند شد ) .
ارائه دهنده سرويس
يکي از مهمترين عناصر در معماري سرويس وب ، جايگاه و نقش ارائه دهنده سرويس است . زيرساخت ايجاد شده توسط ارائه دهنده سرويس ، امکانات لازم حمايتي و ميزبان نمودن سرويس هاي وب رافراهم مي نمايد. قابليت پردازش پروتکل HTTP و سرويس اعتبار سنجي ، نمونه هائي از زير ساخت ارائه شده توسط ارائه دهنده سرويس مي باشند. درصورتيکه ارائه دهنده سرويس قادر به ارائه چنين زيرساختي نباشد ، سرويس وب مي بايست خود اين زير ساخت را حمايت نمايد .وضعيت فوق، طراحي و پياده سازي سرويس هاي وب را با مشکل بيشتر مواجه خواهد کرد.
سرويس دهنده وب
يک ارائه دهنده سرويس مي بايست حداقل شامل يک گوش دهنده ( listener ) پروتکل باشد . براي سرويس هاي وبي که توسط فريمورک دات نت و يا ويژوال استوديو دات نت ، پياده سازي مي گردند ، گوش دهنده پروتکل مي بايست يک HTTP listener باشد . با توجه به اينکه يک ارائه دهنده سرويس قادر به ميزبان نمودن چندين سرويس وب خواهدبود ،ارائه دهنده سرويس ،مي بايست امکان هدايت مناسب يک درخواست به سرويس وب مناسب را دارا باشد . ( قابل مقايسه با سرويس RPCCC) Remote Procedure Call Subsystem)، که مسئوليت پاسخگوئي به درخواست هاي وارده DCOM وهدايت آنان به يک سرويس دهنده مناسب COM است) .مصرف کنندگان ناشناخته سرويس وب ، قادر به دستيابي به يک ارائه دهنده سرويس مي باشند . بنابراين لازم است ، سرويس دهنده وب سرويس هاي پايه امنيتي را حداقل در سطح پروتکل، ارائه نمايد. IIS ، که يک سرويس دهنده وب است ، سرويس هاي مورد نياز يک سرويس وب را ارائه مي نمايد :
IIS يک HTTP listener است
IIS با استفاده از معماري ISAPI ، مي تواند بعنوان يک gateway در رابطه با سرويس هاي وب رفتار نموده و علاوه بر ميزباني از سرويس هاي وب متعدد ، زمينه هدايت صحيح آنان را نيز فراهم نمايد.
IIS زيرساخت قابل ملاحظه اي در رابطه با امنيت را ارائه مي نمايد .
IIS و سرويس هاي وب
يک سرويس دهنده وب نظير IIS ، قادر به فراخواني يک سرويس از جانب يک سرويس گيرنده با استفاده از گزينه هاي متعددي است . سرويس دهنده وب قادر به فعال نمودن ( اجراء ) يک برنامه CGI)Common Gateway Interface) ، اجراي يک مفسر اسکريپت بمنظور برخورد با صفحات ASP و يا فراخواني يک برنامه ISAPI است .زمانيکه IIS همراه با CLR فعاليت مي نمايد ، از يک فيلتر ISAPI بمنظوربررسي درخواست هائي در ارتباط با صفحات با انشعاب asmx استفاده و در ادامه يک ميزبان زمان اجراء را فعال مي نمايد . ميزبان زمان اجراء ، کد مربوط به سرويس وب را که توسط فريمورک دات نت پياده سازي شده است ، اجراء خواهد کرد.
در بخش دوم اين مقاله به بررسي نقش و جايگاه مصرف کنندگان و کارگزاران سرويس ها ي وب ، خواهيم پرداخت .