معماری سرویس گرا به عنوان یکی از آخرین دستاوردها در تولید نرم افزار، به نظر می رسد، در سالهای آتی معماری غالب صنعت فناوری اطلاعات و ارتباطات باشد.
علت بوجود آمدن این معماری، ایده ای بود که در ذهن تعدادی از معماران آن وجود داشت و آن نرم افزار به عنوان سرویس بود.
در مدل نرم افزار به عنوان سرویس، شما نرم افزار خود را بگونه ای طراحی می کنید که قابل استفاده توسط سیستم های دیگر باشد یعنی دیگران می توانند برای استفاده از سرویس شما ثبت نام کنند و هر موقع که لازم داشتند از خدمات آن بهره ببرند، همانند حالتی که در مورد شبکه های تلویزیون کابلی وجود دارد.
تا زمانی که شما به سرویس متصل هستید، می توانید هر لحظه که خواستید از سرویس استفاده کنید.
برای مدت های طولانی برنامه نویسان سعی می کردند تا، کدهای خود را بصورت modular( یک سیستم از بالا به پایین به زیر سیستم های کوچک و نسبتا مستقل تفکیک می شود ) بنویسند، تا بتوان از آن در تولید نرم افزارهای دیگر استفاده کرد.
تفاوت نوشتن کد بصورت modular و بر اساس معماری سرویس گرا در حجم مخاطبان آن است.
دوباره به همان مثال اول برمی گریم، وقتی شما کد خود را به منظور قابل استفاده بودن توسط نرم افزارهای دیگر، به شکل modularمی نویسید مانند این است که، یک شبکه تلویزیون کابلی درون یک ساختمان خاص دارید و بنابراین فقط ساکنین آن ساختمان می توانند از آن بهره برداری کنند.
در جهان امروز طیف مخاطبانی که بالقوه می توانند از سرویس شما استفاده کنند، کل کاربران روی شبکه اینترنت است.
بنابراین باید مکانیزمی بوجود می آمد، که می توانست پاسخگوی این محیط جدید (اینترنت) و کاربران آن باشد و بنابراین معماری سرویس گرا بوجود آمد.
این معماری توسط دو شرکت IBM , Microsoft بوجود آمد، که هر دو شرکت طی سالهای اخیر از حامیان اصلی سرویس های وب و عامل بسیاری از ابداعات جدید در حیطه ی سرویس های وب، مانند UDDI ,WSE بوده اند.
قابل ذکر است، که در آخرین معماری در حال توسعه، در تولید نرم افزار که هنوز هم در مرحله تحقیقاتی است MDA، تدابیری جهت هماهنگی با معماری سرویس گرا در نظر گرفته شده است.
از نمونه های استفاده از این معماری در کشور خودمان، سازمان ثبت احوال کشور است که موظف شده تا پایگاه های اطلاعاتی خود را بصورت سرویس وب و مبتنی بر این معماری به سایر نهادها مانند نیروی انتظامی و سایر دستگاه ها ارائه دهد.
سرویس ها چه هستند؟
بسیاری از ما آنقدر با تکنولوژی های سرویس های وب آشنا هستیم که اغلب درباره این که خود سرویس ها واقعا چه هستند، فکر نمی کنیم.
هر کس که از سایت های تجارت الکترونیکی به صورت آنلاین خرید کرده باشد، با مفهوم سرویس ها آشنا است.
وقتی که سفارش تا ن را دادید، باید اطلاعات کارت اعتباری تان را ارایه کنید که به طور معمول توسط یک فراهم کننده سرویس ثانویه، تایید و شارژ می شود.
وقتی که سفارش پذیرفته شد، شرکت سفارش گیرنده با یک شرکت فراهم کننده سرویس حمل ونقل سرویستان را فراهم می کند و در نهایت کالای شما تحویلتان می شود.
در ادامه سه تعریف می آوریم که در کنار یکدیگر ماهیت یک سرویس راشرح می دهند:
۱- سرویس ها اجزاء مستقلی هستند که پیغام های XML با ساختار مشخص و خوش تعریف را پردازش میکنند.
• XML ساده ترین ورژن SGML استاندارد برای ایجاد و طراحی سند های HTML است(مناسب برای استفاده در سایت های اینتر نتی).
• SGML یک استاندارد مدیریت اطلاعات است که در سال 1986 به وسیله سازمان بین المللى استاندارد سازى (ISO) معرفى گردید و وسیله اى است براى ارائه اسناد مستقل از یک سیستم یا برنامه کاربردى خاص ضمن به کارگیرى اطلاعاتى چون قالب بندى، شاخص دهى و حفظ اطلاعات پیوندى در اسناد.
۲- سرویس ها دارای رابط های خوش تعریف هستند که به وسیله یک سند مبتنی بر XML که سند
WSDLخوانده می شود، به این سند گاهی قرارداد WSDL نیز گفته می شود، پردازش می شوند.
محتویات این سند، عملیاتی (متدهایی) که توسط سرویس ارائه می شود را شرح می دهد.
از جمله اطلاعات مربوط به انواع داده، اطلاعات نحوه اتصال به سرویس، جهت یافتن و ارتباط با عملیات سرویس وب.
۳- سرویس ها دارای نقاط انتهایی (Endpoint)هستند که استفاده کنندگان از سایر سرویس ها میتوانند بر اساس آدرس سرویس (URL)معمولاً به آن ها متصل شوند.
این همان چیزی است که ارتباط(جفت شدن) آزادانه خوانده می شود.
سرویس ها می توانند به دو شکل ساده و ترکیبی ارائه شوند.
سرویس های ترکیبی، سرویس هایی هستند که بر اساس بکارگیری چند سرویس ساده ( یا ترکیبی) ایجاد می شوند.
برای مثال، ممکن است سیستم توزیع شده ای بر اساس چند سرویس ساده صدور صورتحساب، ثبت سفارش، مدیریت روابط مشتری و...
سرویس های ترکیبی گسترده تری در ارتباط با حرفه ای خاص ایجاد نماید.
پس می توان گفت: سرویس ها اجزای توزیع شده با رابط های تعریف شده و مشخص هستند که پیغام های XML را پردازش و تبادل می کنند.
معماری سرویس
چندین مصرفکننده سرویس میتوانند با ارسال پیام اقدام به فراخوانی سرویسها نمایند.
این پیامها معمولا توسط یک گذرگاه سرویس تغییر شکل داده شده و به سوی سرویس مناسب هدایت میگردند.
معماری سرویس میتواند یک موتور قواعد تجاری را فراهم سازد که امکان تلفیق قواعد تجاری در یک سرویس یا چندین سرویس را عملی سازد.
معماری سرویس مزبور همچنین یک زیربنای مدیریت سرویس فراهم میآورد که سرویسها و اعمالی از قبیل بازرسی، پرداخت صورتحساب، و واقعهنگاری (logging) را مدیریت مینماید.
به علاوه، این معماری انعطافپذیری ناشی از دارا بودن فرایندهای تجاری تغییر پذیر را به سازمانها ارزانی میدارد، فرایندهایی که نیازمندیهای تنظیمی همانند Sarbanes Oxley (SOX) را مد نظر قرار میدهند، و سرویسهای اختصاصی را بدون تحت تاثیر قرار دادن سایر سرویسها تغییر میدهند.
معرفی SOA و چند کار برد آن:
معماری سرویسگرا (SOA) شکل تکامل یافته محاسبهگری توزیع شده مبتنی بر فرضیه طراحی تقاضا/پاسخ برای برنامههای کاربردی همگام و ناهمگام است.
منطق تجاری یا توابع اختصاصی یک برنامه کاربردی به صورت ماژولار در آمدهاند و به عنوان سرویسهایی برای برنامههای کاربردی مصرفکننده/کلاینت ارائه گردیدهاند.
مهمترین نکته در مورد این سرویس ها طبیعت اتصال آزادانه آنهاست؛ بدین معنی که رابط سرویس، مستقل از پیادهسازی است.
تعاریف گوناگونی از معماری سرویس گرا ارائه شده است که از جمله آنها می توان به تعاریف زیر اشاره کرد:
1.
مجموعه قوانین، سیاست ها و چارچوب هایی که نرم افزارها را قادر می سازد تا عملکرد خود را از طریق مجموعه سرویس های مجزا و در عین حال مربوط به هم در اختیار سایر درخواست کنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پیاده سازی و تنها از طریق رابط های استاندارد و تعریف شده، این سرویس ها را پیدا کرده و فراخوانی نمایند.
2.
روشی برای ساخت سیستم های توزیع شده ای است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویس ها قرار می گیرد.
3.
از دیگرتعاریف ارائه شده می توان به واحدهای نرم افزاری آماده در شبکه (Network-available Software Unit) یا سرویس های سطح کسب و کار (Business-level services) اشاره کرد.
معماریهای سرویسگرا دارای خصوصیات اصلی زیر هستند:
- سرویس های SOA دارای رابط های خود توصیفگر در اسناد XML مستقل از پلتفرم هستند.
زبان توصیف سرویسهای وب (WSDL) استاندارد به کار برده شده برای توصیف این سرویسها میباشد.
- سرویسهای SOA با پیامهایی که رسماً توسط مدل XML (که XSD نیز نامیده میشود) تعریف شدهاند ارتباط برقرار مینمایند.
ارتباط میان مصرفکنندگان و فراهمکنندگان یا سرویسها معمولا در محیطهای ناهمگن رخ میدهد، با دانش کم یا بدون هیچ دانشی در مورد فراهمکننده.
پیامهای مبادله شده میان سرویسها را میتوان به عنوان اسناد تجاری مهم پردازش شده در یک سازمان نگریست.
- سرویسهای SOA با پیامهایی که رسماً توسط مدل XML (که XSD نیز نامیده میشود) تعریف شدهاند ارتباط برقرار مینمایند.
پیامهای مبادله شده میان سرویسها را میتوان به عنوان اسناد تجاری مهم پردازش شده در یک سازمان نگریست.
- سرویسهای SOA توسط یک رجیستری که به عنوان یک فهرست دایرکتوری عمل میکند نگهداری میگردند.
برنامههای کاربردی میتوانند سرویسها را درون رجیستری جستجو نمایند و سرویس را فراخوانی کنند.
توصیف، تعریف، و یکپارچگی جهانی (UDDI) استانداردی است که برای رجیستری سرویس مورد استفاده قرار گرفته است.
هر سرویس SOA دارای یک کیفیت سرویس (QoS) مرتبط با خود است.
برخی از عناصر اساسی QoS شامل نیازمندیهای امنیتی، از قبیل احراز هویت و صدور مجوز، پیامرسانی قابل اطمینان، و خطمشیهایی در این زمینه که چه افرادی میتوانند سرویسها را فراخوانی نمایند، میباشد.
می توان گفت: معاری سرویس گرا (SOA) روشی جدید و در حال تکامل برای ساخت برنامه های توزیع شده با Distributed Application است.
با رویکرد سرویس گرا می توان راه حل هایی را ارائه داد که به مرز دامنه های سازمان، شرکت یا دپارتمان محدود نیستند.
با استفاده از SOA می توان در شرکتی که دارای سیستم ها و برنامه های کاربردی مختلف روی پلتفرم های متفاوت است، یک راه حل یک پارچه سازی با استقلال زیاد(loosly coupled) ساخت که جریان یکنواخت و هماهنگ کار را تضمین کند.
نیاز به معماری سرویس گرا از جنبه ای دیگر نیز به نحوه بارزی در برنامه های کاربردی E-Commerce مشهود است.
اگر مثلا جزء (componet) مربوط به پرداخت با کارت اعتباری offline و یا غیر فعال باشد، قرار نیست که فرایند فروش متوقف شود.
بلکه سفارش ها بایستی پذیرفته شوند وعملیات پرداخت به وقت دیگری موکول شود.
مثل سایر معماری های توزیع شده، SOA ساخت برنامه های کاربردی با استفاده اجزایی که در domainهای جدا از هم را قرار دارند را ممکن می سازد.
SOA از سرویس های وب به عنوان نقاط ورود برنامه کاربردی استفاده می کند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستم های توزیع شده سنتی مبتنی بر اجزاء هستند.
با این تفاوت که در این جا ارتباط بین سرویس وب و استفاده کننده خیلی آزاداترانه ومستقل تر (loosely coupled) است.
بعلاوه SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرد است.
فاکتورهایی نظیر: قابلیت اطمینان سرویس، جامعیت پیام، یکسانی تراکنش و امنیت پیام.
در امور تجاری واقعی نمی توان روی سرویس هایی که یک درخواست را فقط به خاطر این که بتوانند بفهمند، پردازش می کنند حساب کرد.
در امور تجاری به قطعیت و اطمینان بیشتری نیاز است.
واضح است که سیستم های مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف متفاوت باشد.
با وجود این هیچکدام از این موارد نباید برای کنار گذاشتن یاعدم پاسخ به یک درخواست باشند.
علاوه بر آن نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند واضح است که سیستم های مختلف ممکن است بعضی اوقات غیر فعال باشند و یا پاسخگویی آن ها در دفعات مختلف، متفاوت باشد.
با وجود این، هیچ کدام ازاین موارد نباید دلیلی برای کنار گذاشتن یا عدم پاسخ به یک درخواست باشند.
علاوه بر آن نباید هیچ ابهامی در نحوه فراخوانی یک سرویس وجود داشه باشد.
اگر سیستمی توانایی های خود را در قالب سرویسی روی وب ارائه کند، در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازی و اعلام شود.
بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامه های کاربردی امروزی در SOA حل شده است که احتمال نقض آن در هر مر حله ای از جریان کار بسیار زیاد است.
در SOA فرض بر این است که خطا وجود دارد و می تواند بیفتد، برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد، این معماری طوری طراحی شده است که مجدداً پیام را بفرستد.
و اگر یک سرویس به طور کامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار انفاق بیفتد) آن وقت معماری طوری طراحی شده است که روی دادن خطاهایی که منجر به قطع کامل در خواست سرویس می شود، امکان پذیر نباشد.
SOAقابلیت اطمینان را افزایش می دهد، چون خطاهای موقت در بخشی از جریان کار نمی توانند کل فرایند تجاری را از کار بیاندازند.
در حال حاضر، تکنولوژی سرویس های وب(Web Services)و پیاده سازی نمونه های موفق از آن، نشان داده است که SOA می تواند به عنوان راه حلی عملی و دست یافتنی در طراحی سیستم های جدید و یکپارچه سازی سیستم های بزرگ موجود، مطرح گردد.
البته ذکر تفاوت سرویس های وب و SOA در اینجا لازم به نظر می رسد: سرویس های وب مجموعه ای از تکنولوژی هایی همچون XML,SOAP,WSDL و UDDI می باشد که امکان ارائه راه حل و برنامه نویسی جهت رفع مشکلی خاص را فراهم می نماید.
در حالی که SOA یک معماری است و از مجموعه مشخصی از تکنولوژی ها فراتر می باشد.
اگرچه SOA بر اساس این تکنولوژی ها راه حل ارائه می نماید، اما در عین حال مستقل از هر یک از آنها است.
آنچه اهمیت دارد تعریف سرویس به عنوان مهمترین عنصر این معماری می باشد.
سرویس، رفتار قرادادی تعریف شده ایست که هر قطعه ای می تواند آن را جهت استفاده سایر قطعات در سیستم تهیه و پیاده سازی نماید.
در این معماری، همه توابع به عنوان سرویس تعریف می گردند.
این توابع شامل توابع کسب و کار (Business functions) و تراکنش های حرفهای (Business transactions) می باشند که تراکنش های حرفه ی خود شامل توابع سطح پایین (Low-level functions) و توابع سیستمی سرویس ها(System service functions) هستند.
سرویس ها بصورت مستقل طراحی و پیاده سازی شده و به عنوان جعبه سیاه عمل می نمایند.
قطعات دیگر در خارج از این قطعه نیازی به دانستن نحوه انجام کار در این سرویس را ندارند و تنها به نتیجه آن نیازمندند.
قطعات، سرویس های خود را از طریق رابط ها (interface) در اختیار قطعات دیگر قرار می دهند که این رابط ها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابط های محلی یا دور).
در ضمن این رابط ها می توانند به همان نرم افزار کاربردی یا به آدرسی در محل دیگری از شبکه مرتبط باشند.
رابط ها به عنوان کلیدی در برقراری این ارتباط ها هستند و از طریق آنها نوع پارامترهای ورودی و نتایج (خروجی) مشخص می گردد.
مهمترین مفاهیم و اصول در نظر گرفته شده در طراحی سرویس گرا به شرح زیر می باشد: 1- کپسوله سازی سرویس (service encapsulation) تاکید بر متمرکز کردن عملیات وابسته به داده در یک واحد (کپسول) مشخص و پنهان کردن پیاده سازی و مکانیزم درون واحد نرم افزاری است.
2- اتصال آزاد بین سرویس ها (service loose coupling) تاکید بر استقلال سرویس ها و کاهش وابستگی سرویس ها به یکدیگر است فقط کافی است سرویس ها از وجود هم آگاه باشند.
3- قرارداد سرویس دهی (service contract) ارتباط بین سرویس ها بر اساس قرارداد تعریف شده ای است که در اسناد فنی بطور مشخص ذکر می شود.
4- مجرد ساختن سرویس (service abstraction) تاکید بر جدا کردن پیاده سازی از رابط (جهان خارج) و پنهان کردن مکانیزم و نحوه انجام کار در درون واحد ارائه دهنده ی سرویس می باشد.
5- استفاده مجدد و بازبکارگیری سرویس (service reusability) تاکید بر طراحی سرویس ها به نحوی است که بتوان آنها را در سامانه های مختلف بکار برد.
با تاکید بیشتر بر استفاده مجدد.
6- قابلیت ترکیب سرویس (service composability) به معنی آنست که سرویس ها به نحوی طراحی شوند که با برخورداری از قابلیت ترکیب شدن ایجاد سرویس های مرکب (کامپوزیت) امکان پذیر باشد.
7- خودگردانی سرویس (service autonomy) عبارتست از قابلیت و قدرت سرویس در بکارگیری و مدیریت منابع خود بطور مستقل و همچنین کنترل کامل بر منطق پیاده سازی خود.
8- بدون حالت بودن سرویس (service statelessness) به این معنی است که سرویس باید در مورد فعالیت های گذشته (فراخوانی های گذشته) کمترین اطلاعات را نگهدارد و تاکید بر طراحی سرویس بنحوی است که حالت های وابسته به گذشته کمتری داشته باشد.
9- قابلیت کشف شدن سرویس (service discoverability) به این معنی است که سرویس باید در یک محیط شبکه با استفاده از سازوکارهای مناسب توسط برنامه های دیگر آشکار شود.
به بیان کلی، SOA فرایندی تکامل یافته را ارائه می نماید و ازاین نظر می تواند آن را بلوغ سرویس های وب و تکنولوژی های یکپارچه سازی به حساب آورد.
در SOA به این امر توجه شده است که سیستم های با اهمیت حیاتی که بر مبنای تکنولوژی های توزیع شده ساخته می شوند، باید تضمین های خاصی را تامین نمایند.
در این گونه سیستم ها باید این اطمینان وجود داشته باشد که در خواست های سرویس به طور صحیح مسیر دهی و هدایت می شوند، در زمان مناسب به آن ها پاسخ داده می شود، و این سرویس ها به طور واضح و دقیق سیاست های ارتباطی و رابط های خود را اعلام می کنند.
شکل 1- SOA کارها را تغییر می دهد SOAP, WSDL, UDDI WSDL، UDDI و SOAP قطعات اساسی زیربنای SOA هستند WSDL .برای توصیف سرویس به کار برده شده است؛UDDI، برای ثبت و جستجوی سرویسها وSOAP، به عنوان یک لایه نقل و انتقال جهت ارسال پیامها میان مصرفکننده سرویس و فراهمکننده سرویس.
در حالی که SOAP ساز و کار پیشفرض برای سرویسهای وب است، تکنولوژیهای جایگزین، انواع دیگری از انقیادها (binding) را برای یک سرویس تحقق میبخشند.
یک مصرفکننده میتواند به جستجوی یک سرویس در رجیستری UDDI بپردازد، WSDL را برای سرویسی که دارای توصیف است تهیه نماید، و سرویس را از طریق SOAP فراخوانی کند.
چرا SOA؟
واقعیت موجود در سازمانهای IT این است که زیربنا در میان سیستمهای عامل، برنامههای کاربردی، نرمافزارهای سیستمی، و زیربنای کاربردی به صورت ناهمگن است.
برخی برنامههای کاربردی موجود برای اجرای فرایندهای فعلی تجارت مورد استفاده قرار گرفتهاند، بنابراین آغاز از صفر برای ساختن زیربنای جدید یک رویکرد قابل انتخاب محسوب نمیگردد.
سازمانها باید به شکلی سریع به تغییرات تجاری واکنش نشان دهند؛ از سرمایههای موجود در برنامههای کاربردی و زیربنای کاربردی به منظور تمرکز بر روی نیازمندیهای تجاری جدیدتر استفاده نمایند؛ کانالهای جدید تعامل با مشتریان، شرکا، و تامینکنندگان را پشتیبانی کنند؛ و یک معماری که تجارت ارگانیک را پشتیبانی نماید به کار گیرند.
SOA با طبیعت اتصال آزادانه خود به سازمان ها امکان بهرهگیری از سرویسهای جدید یا ارتقای سرویسهای موجود را به شیوهای قطعه قطعه به منظور تمرکز بر نیازمندیهای تجاری فراهم میآورد، امکانی را برای قابل استفاده نمودن سرویسها در کانالهای متفاوت فراهم میسازد، و سازمان موجود و برنامههای کاربردی نسل قبل را به عنوان سرویسها ارائه میکند، در نتیجه سرمایههای زیربنای IT موجود را حراست مینماید.
یک سازمان استفاده کننده از SOA میتواند یک برنامه کاربردی مرکب زنجیره تامین را با استفاده از مجموعهای از برنامههای کاربردی موجود که کارکرد خود را از طریق رابطهای استاندارد ارائه میدهند، ایجاد نماید.
شکل 2 - مقایسه ی دو نوع معماری SOA سرویس وب نیست آن گونه که به نظر میرسد در مورد ارتباط میان SOA و سرویسهای وب نوعی سردرگمی عمومی وجود دارد.
در یکی از گزارشهای Gartner مورخ آوریل 2003، Yefim V.
Natis این گونه تقاوت میان آنها را شرح میدهد: "سرویسهای وب راجع به مشخصههای تکنولوژی هستند، در حالی که SOA یک قاعدهی طراحی نرمافزار است."شایان ذکر است که WSDL سرویسهای وب یک استاندارد تعریف رابط مناسب SOA است: این نقطهای است که سرویسهای وب و SOA اساسا به یکدیگر پیوند میخورند.
اساساً،SOA یک الگوی معماری است، در حالی که سرویسهای وب سرویسهای پیادهسازی شده توسط مجموعهای از استانداردها میباشند؛ سرویسهای وب یکی از روشهایی است که شما با استفاده از آن میتوانید SOA را پیادهسازی نمایید.
مزیت پیادهسازی SOA با سرویسهای وب این است که شما به یک رویکرد بیطرفانه نسبت به پلاتفرم به منظور دستیابی به سرویسها و interoperability بهتر دست مییابید همچنان که فروشندگان بیشتر و بیشتری مشخصههای بیشتر و بیشتری از سرویسهای وب را پشتیبانی مینمایند.
معرفی WS-IBasic Profile سازمان (WS-I)Web Services Interoperability یک هدف اصلی دارد و آن را ارائه مشخصه های استانداردی است که سرویس های وب بتوانند با استفاده از آن روی پلتفرم های مختلف با هم تعامل داشته باشند.
به بیان دیگر، هدف این سازمان این است که سرویس های وب بتوانند با هم کار کنند، بدون توجه به این که تحت چه سکوی کاری عمل می کنند و یا با استفاده از چه ابزارهایی ایجاد شده اند.
این مشخصه های سرویس های وب زمینه های گسترده ای را پوشش می دهند، از پروتکل های نقل و انتقال داده تا امنیت که مجموعه آن ها تحت عنوان پروفایل پایه WS-I جمع آوری شده اند.
مشخصه های سرویس های وب به طور عمده در گروه های زیر دسته بندی می شوند: نقل و انتقال (Tranport ) این گروه از مشخصه ها، پروتکل های ارتباطی برای انتقال داده های خام بین سرویس های وب را تعریف می کنند و پروتکل های HTTP،HTTPS و SMTP را شامل می شوند.
پیغام رسانی (Messaging) این گروه از مشخصه ها تعیین می کنند که پیغام های XMIL که سرویس های وب تبادل می کنند، چه فرمتی باید داشته باشند.
این گروه مشخصه های SOAP برای نحوه رمز گذاری پیغام و مشخصه های XMIL و XSD برای کلمات کلیدی پیغام، (vocablury)را شامل می شود.
مشخصه های آدرس دهی سرویس های وب نیز در این گروه قرار دارد.
این مشخصه ها اطلاعات مقصد پیغام را از پروتکل نقل و انتقال داده ها، مستقل می سازد.
برای مثال می توان با استفاده از مشخصه های آدرس دهی سرویس های وب، چندین مقصد برای یک پیغام XMIL تعریف کرد.
تشریح (Description) این گروه شامل مشخصه هایی برای تشریح و توضیح یک سرویس وب است.
مشخصه های اصلی این گروه WSDL (برای قرارداد سرویس ) و XSD (برای تعریف شماهای نوع داده) هستند.
این گروه همچنین مشخصه سیاست گذاری سرویس وب(WS-Policy) را شامل می شود که سیاست گذاری هایی که یک سرویس وب به هنگام ارتباط با یک سرویس گیرنده (کلاینت) اعمال می کند و تشریح می کند.
برای مثال یک سرویس ممکن است شرایط خاصی برای فراخوانی عملیاتش داشته باشد.
مشخصه WS-Policy به سرویس وب این امکان می دهد که به سرویس گیرنده های احتمالی بگوید برای اجرای یک درخواست سرویس موفق باید از چه قوانینی تبعیت کنند.
نهایتاً، در این گروه مشخصه UDDI برای یافتن (description) سرویس های وب گنجانده شده است.
ضمانت های سرویس (Service Assurances) سرویس های وب نباید فقط به سادگی پیغام های XMIL را رد و بدل کنند.
این سرویس ها باید تضمینی برای سرویس گیرنده داشته باشند که اولاً پیغام به نحوی ایمن منتقل خواهد شد، ثانیاً این که سرویس گیرنده باید حتما پاسخی دریافت کند، حتی اگر در نقطه ای از جریان کار، نقصی پیش آمده باشد.
این گروه از مشخصه ها شامل مشخصه ی امنیت سرویس وب ( برای تضمین رسیدن پیغام ها) مشخصه ی پیغام رسانی مطمئن سرویس وب ( برای تضمین رسیدن پیغام ها در شبکه های ناپایدار و بدون قابلیت اطمینان) و تعداد زیادی از مشخصه های مربوط به تراکنش است.
ترکیب سرویس (Service Composition) مجموعه گسترده مشخصه های WS-I Basic Profile را نمی توان به طور کامل در هر سرویس وب پیاده کرد.
به همین خاطر، توسعه دهندگان باید مشخصه هایی که برای یک سرویس خاص مهم و مناسب هستند را انتخاب و در آن سرویس پیاده کنند.
برای تامین این هدف، سرویس ها دارای ویژگی ترکیب سرویس هستند.
که به توسعه دهندگان اجازه می دهد مشخصه های مختلف را برای هر سرویس انتخاب کنند و آن ها را در سند WSDL گرد آوری و ثبت کنند.
در ادامه بحث، تعدادی از مهمترین مشخصه های سرویس های وب و اهداف آن را بیان می کنیم: (WS-Seccurity) امنیت سرویس وب: مشخصه ای جامع که مجموعه ای از تکنولوژی های متداول امنیتی را تحت پوشش دارد، از جمله امضاهای دیجیتال و رمز گذاری مبتنی بر نشانه های امنیتی،شامل گواهی های X.509 WS-Policy)) سیاست گذاری سرویس وب: به سرویس های وب امکان می دهد نیازها،) ترجیحاً(preferences و توانایی های خود را براساس مجموعه ای از فاکتورها بیان و مستند سازی می کند کنند.
البته تمرکز بیشتر با فاکتورهای امنیتی است.
برای مثال سیاستگذاری یک سرویس وب می تواند شامل نیازهای امنیتی آن، نظیر رمز گذاری و امضای دیجیتال بر اساس یک گواهی X.509 باشد.
(WS-Adressing)آدرس دهی سرویس وب: نقاط انتهایی سرویس را در یک پیغام مشخص می کندو امکان update شدن این نقاط انتهایی را در مواردی که پیغام بین دو یا چند سرویس منتقل می شود، فراهم می سازد.
این مشخصه به طور گسترده در حال جایگزینی مشخصه قدیمی تر( WS-Routing) مسیر دهی سرویس وب است.
(WS-Messaging)پیام رسانی سرویس وب: امکان پشتیبانی از سایر پروتکل های کانال ارتباطی، نظیر TCP، را در کنار HTTP برای سرویس وب فراهم می سازد.
این مشخصه ساخت و توسعه نرم افزارهای پیغام رسانی، از جمله برنامه های کاربردی غیر همزمان که با استفاده از SOAP روی HTTP ارتباط برقرار می کنند، را تسهیل می کند.
(WS-Secure Conversation) مکالمه ایمن سرویس وب: با استفاده از نشانه های امنیتی (Security tokens) ارتباطات مورد اعتماد برای جلسات کاری فراهم می کند.
(WS-Reliable Messaging)پیغام رسانی مطمئن سرویس وب: مکانیسم هایی برای تضمین اطمینان از رسیدن پیغام، حتی در صورتی که یک یا چند سرویس در زنجیره سرویس ها قابل دسترس نباشند، را فراهم می سازد.
این مشخصه شامل روش هایی برای اعلام رسیدن پیغام است، به طوری که فرستنده بتواند بفهمد که آیا گیرنده در دریافت پیغام موفق بوده است یا نه.
با معرفی و ثبت مشخصه های جدید و بهبود مشخصه های قبلی، مشخصه های سرویس های وب دائما ًدر حال تکامل هستند.
البته، مجموعه مشخصه های پایه ای که در این مقاله بیان شد، احتمالاً برای مدتی به عنوان زیر بنای اصلی مشخصه های سرویس های وب باقی خواهند ماند، چرا که این مشخصه ها نیازهای اصلی و بنیادی برنامه های کاربردی سرویس گرا را پوشش می دهند.
معرفی.NET for Web Services Enhancements 2.0 Web Services Enhancements (WSE) 2.0 مجموعه ای از ابزارهای مدیریت شده تحتNET .
را جهت پیاده سازی مشخصه های سرویس های وب برای توسعه دهندگان فراهم آورده است WSE .جهت فراهم آوردن پشتیبانی بیشتر زیرساختی، فراتر از آنچه که در حال حاضر به وسیله چارچوب کاری دات نت تامین می شود، برای راه حل ها ی SOA ارایه شده است.
به کمک WSE همچنین زیر ساخت پردازشی برای میزبانی سرویس های وبی که WS-Specification را پیاده سازس می کنند، فراهم می آورد.
برای مثال، WSEبه شما امکان می دهد که به آسانی سرویس های وبی بسازید که رمز گذاری و امضاهای دیجیتال را روی درخواست ها و پاسخ های سرویس وب اعمال می کنند.
در نهایت،WSE یک ابزار بهره وری است که برای هدایت توسعه دهندگان دات نت به سمت نسخه آینده Indigo طراحی شده است.
Indigo از محصولات آینده مایکروسافت است که پشتیبانی یک پارچه برای برنامه های کاربردی پیغام رسانی و سرویس گرا را هم فراهم می آورد.
معماری سرویس گرای مقدماتی SOA شیوه ای منطقی برای طراحی سیستم های نرم افزاری است که از طریق آن سرویس هایی جهت ارائه به کاربران یا سایر سرویس های توزیع شده بر روی شبکه ایجاد می شود و این سرویس ها از طریق رابطهای تعریف شده در دسترس می باشند.
معماری سرویس گرای مقدماتی، راهی برای تبادل اطلاعات بین عامل های نرم افزاری بوسیله پیغام تعریف می نماید.
این عامل ها، درخواست کننده سرویس (مشتری) و یا تهیه کننده سرویس می باشند.
علاوه بر این دو، عامل دیگری بعنوان عامل کشف سرویس نیز وجود دارد.
در معماری سرویس گرا معرفی سرویس ها و همچنین نحوه ارتباط این سه شرکت کننده نیز اهمیت دارد.
این ارتباطات عبارتند از: منتشر کردن سرویس، پیدا کردن سرویس و متصل شدن به سرویس.
شکل 3 - معماری سرویس گرای مقدماتی در یک سناریو بر پایه سرویس، تهیه کننده، سرویس را پیاده سازی کرده و از طریق شبکه به ارائه توضیحات آن سرویس برای درخواست کننده یا عامل کشف سرویس می پردازد.
در خواست کننده معمولا درخواست پیدا کردن سرویس را به عامل کشف سرویس می دهد تا از طریق آن به توضیحات ارائه شده سرویس و محل آن دسترسی پیدا کند.
سپس با بکارگیری این اطلاعات به تهیه کننده سرویس متصل شده و از سرویس ارائه شده استفاده می نماید.
بدین ترتیب، سرویس بعنوان قطعه نرم افزاری پیاده سازی شده ای که توسط یک رابط تعریف شده مستند گردیده است و نه تنها بوسیله خود تهیه کننده بلکه توسط سایر عواملی که از نحوه پیاده سازی آن خبر ندارند، نیز قابل استفاده و فراخوانی است.
این ویژگی جعبه سیاه بودن سرویس از اصل ماژولاریتی در مهندسی نرم افزار به ارث رسیده است.
البته سرویس با تعاریفی مانند ماژول، قطعه نرم افزاری یا شی تفاوت دارد، زیرا نه تنها در سطح برنامه ها و نرم افزارهای کاربردی، بلکه در سطح حرفه و حتی مابین سازمان ها نیز قابل بکارگیری و استفاده مجدد می باشد.
در واقع سرویس ها، نمایش عملکرد معنی داری از حرفه هستند که می توانند بنا به نیاز مشتری در سرویس ها و توابع بزرگتر یا جدید بکار گرفته شوند.
رابط ها به سادگی مکانیزمی جهت برقراری ارتباط بین سرویس و نرم افزارها یا سایر سرویس ها ایجاد می نمایند.
از لحاظ تکنیکی، رابط سرویس ها، توضیحاتی در مورد نام و امضاء متدهای یک سرویس هستند که توسط درخواست کننده، قابل فراخوانی می باشند.
معماری سرویس گرای توسعه یافته معماری سرویس گرای مقدماتی به برخی از مسائل موجود در یک معماری مبتنی بر سرویس نمی پردازد.
از جمله این مسائل، مدیریت، هماهنگ سازی سرویس ها، متناسب کردن آنها، امنیت، مدیریت تراکنش ها و...
می باشد.
این نکات که در شکل 2 نمایش داده شده است، در معماری سرویس گرای توسعه یافته در نظر گرفته شده است.
شکل 4 - معماری سرویس گرای توسعه یافته معماری مقدماتی در لایه پایینی این معماری لایه ای قرار گرفته است.
لایه ترکیب سرویس در معماری توسعه یافته، شامل توابع و نقشهای لازم برای یکپارچه کردن چند سرویس به عنوان سرویس ترکیبی می باشد.
سرویس ترکیبی بدست آمده، توسط Service Aggregator بعنوان یک سرویس مقدماتی استفاده می گردد و یا توسط درخواست کنندگان سرویس بکارگرفته می شود.
Service Aggregator تهیه کننده سرویسی است که سرویس های ارائه شده توسط سایر تهیه کنندگان را یکپارچه می نماید تا از آنها سرویس های جدید بسازد، همچنین مشخصات و کدهایی را تهیه می کند تا در مورد سرویس های ترکیبی عملیات زیر را انجام دهد: - متناسب کردن: کنترل اجرای سرویس های ترکیب شده و مدیریت گردش داده ها در بین آنها و انتقال آن به خروجی.
- کنترل کردن: مجوز دادن به رخدادها و اطلاعات تولید شده توسط سرویس های ترکیبی جهت به اشتراک گذاشتن و منتشر کردن رخدادهای ترکیبی سطح بالاتر ( برای مثال از طریق فیلتر کردن و خلاصه سازی).
- مطابقت دادن: حصول اطمینان از حفظ جامعیت سرویس های ترکیبی از طریق تطبیق دادن محدودیت ها و نوع پارامترهای سرویس های بکار رفته.
- ترکیب خواص سرویس ها: بکارگیری، مجتمع سازی و دسته بندی ویژگی های سرویس های ترکیب شده جهت بدست آوردن خواص ترکیبی جدید که دربردارنده کارایی، هزینه، امنیت، جامعیت، قیاس پذیری، در دسترس بودن و قابلیت اطمینان می باشد.
استانداردهای جدید ارائه شده با عنوان زبان اجرای پردازشهای حرفه برای سرویس های وب، تلاشی است که بر اساس XML، تعریف سرویس های وب جدید را که از ترکیب سرویس های موجود بدست می آیند، ارائه دهد.
یک پردازش BPEL بصورت انتزاعی با ارجاع و اتصال به portTypeهای تعیین شده در WSDL ای ایجاد می شود که در سرویسهای وب موجود در یک پردازش، تعریف شده است.