مقاله در مورد معماری سرویس گرا

word قابل ویرایش
29 صفحه
8700 تومان
87,000 ریال – خرید و دانلود

معماری سرویس گرا

معماری سرویس گرا به عنوان یکی از آخرین دستاوردها در تولید نرم افزار، به نظر می رسد، در سالهای آتی معماری غالب صنعت فناوری اطلاعات و ارتباطات باشد. علت بوجود آمدن این معماری، ایده ای بود که در ذهن تعدادی از معماران آن وجود داشت و آن نرم افزار به عنوان سرویس بود.

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

واژه های کلیدی
SOA = Service Oriented Architecture,
SOE = Service Oriented Enterprise,
SOI = Service Oriented Infrastructure,

MDA = Minimum Descent Altitude,
XML = Extensible Markup Language,
خوش تعریف = Well-defined,
WSDL = Web Service Description Language,
SGML = Standard Generalized Markup Language,

واحدهای نرم افزاری آماده در شبکه = Network-available Software Unit,
سرویس های سطح کسب و کار = Business-level services,

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

ساختمان می توانند از آن بهره برداری کنند. در جهان امروز طیف مخاطبانی که بالقوه می توانند از سرویس شما استفاده کنند، کل کاربران روی شبکه اینترنت است. بنابراین باید مکانیزمی بوجود می آمد، که می توانست پاسخگوی این محیط جدید (اینترنت) و کاربران آن باشد و بنابراین معماری سرویس گرا بوجود آمد.
این معماری توسط دو شرکت IBM , Microsoft بوجود آمد، که هر دو شرکت طی سالهای اخیر از حامیان اصلی سرویس های وب و عامل بسیاری از ابداعات جدید در حیطه ی سرویس های وب، مانند UDDI ,WSE بوده اند.
قابل ذکر است، که در آخرین معماری در حال توسعه، در تولید نرم افزار که هنوز هم در مرحله

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

 

سرویس ها چه هستند؟
بسیاری از ما آنقدر با تکنولوژی های سرویس های وب آشنا هستیم که اغلب درباره این که خود سرویس ها واقعا چه هستند، فکر نمی کنیم. هر کس که از سایت های تجارت الکترونیکی به صورت آنلاین خرید کرده باشد، با مفهوم سرویس ها آشنا است. وقتی که سفارش تا ن را دادید، باید اطلاعات کارت اعتباری تان را ارایه کنید که به طور معمول توسط یک فراهم کننده سرویس ثانویه، تایید و شارژ می شود. وقتی که سفارش پذیرفته شد، شرکت سفارش گیرنده با یک شرکت فراهم کننده سرویس حمل ونقل سرویستان را فراهم می کند و در نهایت کالای شما تحویلتان می شود.
در ادامه سه تعریف می آوریم که در کنار یکدیگر ماهیت یک سرویس راشرح می دهند:
۱- سرویس ها اجزاء مستقلی هستند که پیغام های XML با ساختار مشخص و خوش تعریف را پردازش می‏کنند.
• XML ساده ترین ورژن SGML استاندارد برای ایجاد و طراحی سند های HTML است(مناسب برای استفاده در سایت های اینتر نتی).
• SGML یک استاندارد مدیریت اطلاعات است که در سال ۱۹۸۶ به وسیله سازمان بین المللى استاندارد سازى (ISO) معرفى گردید و وسیله اى است براى ارائه اسناد مستقل از یک سیستم یا برنامه کاربردى خاص ضمن به کارگیرى اطلاعاتى چون قالب بندى، شاخص دهى و حفظ اطلاعات پیوندى در اسناد.
۲- سرویس ها دارای رابط های خوش تعریف هستند که به وسیله یک سند مبتنی بر XML که سند
WSDLخوانده می شود، به این سند گاهی قرارداد WSDL نیز گفته می شود، پردازش می شوند. محتویات این سند،‌ عملیاتی (متدهایی) که توسط سرویس ارائه می شود را شرح می دهد. از

جمله اطلاعات مربوط به انواع داده، اطلاعات نحوه اتصال به سرویس، جهت یافتن و ارتباط با عملیات سرویس وب.
۳- سرویس ها دارای نقاط انتهایی (Endpoint)هستند که استفاده کنندگان از سایر سرویس ها می‏توانند بر اساس آدرس سرویس (URL)معمولاً به آن ها متصل شوند. این همان چیزی است که ارتباط(جفت شدن) آزادانه خوانده می شود.

 هایی هستند که بر اساس بکارگیری چند سرویس ساده ( یا ترکیبی) ایجاد می شوند. برای مثال، ممکن است سیستم توزیع شده ای بر اساس چند سرویس ساده صدور صورتحساب، ثبت سفارش، مدیریت روابط مشتری و… سرویس های ترکیبی گسترده تری در ارتباط با حرفه ای خاص ایجاد نماید.
پس می توان گفت: سرویس ها اجزای توزیع شده با رابط های تعریف شده و مشخص هستند که پیغام های XML را پردازش و تبادل می کنند.

معماری سرویس
چندین مصرف‌کننده سرویس می‌توانند با ارسال پیام اقدام به فراخوانی سرویس‌ها نمایند. این پیام‌ها معمولا توسط یک گذرگاه سرویس تغییر شکل داده شده و به سوی سرویس مناسب هدایت می‌گردند. معماری سرویس می‌تواند یک موتور قواعد تجاری را فراهم سازد که امکان تلفیق قواعد تجاری در یک سرویس یا چندین سرویس را عملی سازد. معماری سرویس مزبور همچنین یک زیربنای مدیریت سرویس فراهم می‌آورد که سرویس‌ها و اعمالی از قبیل بازرسی، پرداخت صورتحساب، و واقعه‌نگاری (logging) را مدیریت می‌نماید. به علاوه، این معماری انعطاف‌پذیری ناشی از دارا بودن فرایندهای تجاری تغییر پذیر را به سازمان‌ها ارزانی می‌دارد، فرایندهایی که نیازمندی‌های تنظیمی همانند Sarbanes Oxley (SOX) را مد نظر قرار می‌دهند، و سرویس‌های اختصاصی را بدون تحت تاثیر قرار دادن سایر سرویس‌ها تغییر می‌دهند.

معرفی SOA و چند کار برد آن:
معماری سرویس‌گرا (SOA) شکل تکامل یافته محاسبه‌گری توزیع شده مبتنی بر فرضیه طراحی تقاضا/پاسخ برای برنامه‌های کاربردی همگام و ناهمگام است. منطق تجاری یا توابع اختصاصی یک برنامه کاربردی به صورت ماژولار در آمده‌اند و به عنوان سرویس‌هایی برای برنامه‌های کاربردی مصرف‌کننده/کلاینت ارائه گردیده‌اند. مهم‌ترین نکته‌ در مورد این سرویس ‌ها طبیعت اتصال آزادانه

آنهاست؛ بدین معنی که رابط سرویس، مستقل از پیاده‌سازی است.
تعاریف گوناگونی از معماری سرویس گرا ارائه شده است که از جمله آنها می توان به تعاریف زیر اشاره کرد:
۱٫ مجموعه قوانین، سیاست ها و چارچوب هایی که نرم افزارها را قادر می سازد تا عملکرد خود را از طریق مجموعه سرویس های مجزا و در عین حال مربوط به هم در اختیار سایر درخواست

 

کنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پیاده سازی و تنها از طریق رابط های استاندارد و تعریف شده، این سرویس ها را پیدا کرده و فراخوانی نمایند.
۲٫ روشی برای ساخت سیستم های توزیع شده ای است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویس ها قرار می گیرد.
۳٫ از دیگرتعاریف ارائه شده می توان به “واحدهای نرم افزاری آماده در شبکه (Network-available Software Unit) ” یا “سرویس های سطح کسب و کار (Business-level services) ” اشاره کرد.
معماری‌های سرویس‌گرا دارای خصوصیات اصلی زیر هستند:
– سرویس ‌های SOA دارای رابط ‌های خود توصیف‌گر در اسناد XML مستقل از پلتفرم هستند. زبان توصیف سرویس‌های وب (WSDL) استاندارد به کار برده شده برای توصیف این سرویس‌ها می‌باشد.
– سرویس‌های 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) در اختیار قطعات دیگر قرار می دهند که این رابط ها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابط های محلی یا دور). در ضمن این رابط ها می توانند به همان نرم افزار کاربردی یا به آدرس

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

مهمترین مفاهیم و اصول در نظر گرفته شده در طراحی سرویس گرا به شرح زیر می باشد:
۱- کپسوله سازی سرویس (service encapsulation) تاکید بر متمرکز کردن عملیات وابسته به داده در یک واحد (کپسول) مشخص و پنهان کردن پیاده سازی و مکانیزم درون واحد نرم افزاری است.
۲- اتصال آزاد بین سرویس ها (service loose coupling) تاکید بر استقلال سرویس ها و کاهش وابستگی سرویس ها به یکدیگر است فقط کافی است سرویس ها از وجود هم آگاه باشند.
۳- قرارداد سرویس دهی (service contract) ارتباط بین سرویس ها بر اساس قرارداد تعریف شده ای است که در اسناد فنی بطور مشخص ذکر می شود.
۴- مجرد ساختن سرویس (service abstraction) تاکید بر جدا کردن پیاده سازی از رابط (جهان خارج) و پنهان کردن مکانیزم و نحوه انجام کار در درون واحد ارائه دهنده ی سرویس می باشد.
۵- استفاده مجدد و بازبکارگیری سرویس (service reusability) تاکید بر طراحی سرویس ها به نحوی است که بتوان آنها را در سامانه های مختلف بکار برد. با تاکید بیشتر بر استفاده مجدد.
۶- قابلیت ترکیب سرویس (service composability) به معنی آنست که سرویس ها به نحوی طراحی شوند که با برخورداری از قابلیت ترکیب شدن ایجاد سرویس های مرکب (کامپوزیت) امکان پذیر باشد.
۷- خودگردانی سرویس (service autonomy) عبارتست از قابلیت و قدرت سرویس در بکارگیری و مدیریت منابع خود بطور مستقل و همچنین کنترل کامل بر منطق پیاده سازی خود.
۸- بدون حالت بودن سرویس (service statelessness) به این معنی است که سرویس باید در مورد فعالیت های گذشته (فراخوانی های گذشته) کمترین اطلاعات را نگهدارد و تاکید بر طراحی سرویس بنحوی است که حالت های وابسته به گذشته کمتری داشته باشد.
۹- قابلیت کشف شدن سرویس (service discoverability) به این معنی است که سرویس باید در یک محیط شبکه با استفاده از سازوکارهای مناسب توسط برنامه های دیگر آشکار شود.
به بیان کلی،‌ SOA فرایندی تکامل یافته را ارائه می نماید و ازاین نظر می تواند آن را بلوغ سروی

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

آن ها پاسخ داده می شود، و این سرویس ها به طور واضح و دقیق سیاست های ارتباطی و رابط های خود را اعلام می کنند.

شکل ۱- SOA کارها را تغییر می دهد

SOAP, WSDL, UDDI
WSDL، UDDI و SOAP قطعات اساسی زیربنای SOA هستند WSDL .برای توصیف سرویس به کار برده شده است؛UDDI، برای ثبت و جستجوی سرویس‌ها وSOAP، به عنوان یک لایه نقل و انتقال جهت ارسال پیام‌ها میان مصرف‌کننده سرویس و فراهم‌کننده سرویس. در حالی که SOAP ساز و کار پیش‌فرض برای سرویس‌های وب است، تکنولوژی‌های جایگزین، انواع دیگری از انقیادها (binding) را برای یک سرویس تحقق می‌بخشند. یک مصرف‌کننده می‌تواند به جستجوی یک سرویس در رجیستری UDDI بپردازد، WSDL را برای سرویسی که دارای توصیف است تهیه نماید، و سرویس را از طریق SOAP فراخوانی کند.

چرا SOA؟
واقعیت موجود در سازمان‌های IT این است که زیربنا در میان سیستم‌های عامل، برنامه‌های کاربردی، نرم‌افزارهای سیستمی، و زیربنای کاربردی به صورت ناهمگن است. برخی برنامه‌های کاربردی موجود برای اجرای فرایندهای فعلی تجارت مورد استفاده قرار گرفته‌اند، بنابراین آغاز از صفر برای ساختن زیربنای جدید یک رویکرد قابل انتخاب محسوب نمی‌گردد. سازمان‌ها باید به شکلی

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

می‌سازد، و سازمان موجود و برنامه‌های کاربردی نسل قبل را به عنوان سرویس‌ها ارائه می‌کند، در نتیجه سرمایه‌های زیربنای IT موجود را حراست می‌نماید.
یک سازمان استفاده کننده از SOA می‌تواند یک برنامه کاربردی مرکب زنجیره تامین را با استفاده از مجموعه‌ای از برنامه‌های کاربردی موجود که کارکرد خود را از طریق رابط‌های استاندارد ارائه می‌دهند، ایجاد نماید.

شکل ۲ – مقایسه ی دو نوع معماری
SOA سرویس‌ وب نیست
آن گونه که به نظر می‌رسد در مورد ارتباط میان SOA و سرویس‌های وب نوعی سردرگمی عمومی وجود دارد. در یکی از گزارش‌های Gartner مورخ آوریل ۲۰۰۳، 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)پیغام رسانی مطمئن سرویس وب: مکانیسم هایی برای تضمین اطمینان از رسیدن پیغام، حتی در صورتی که یک یا چند سرویس در زنجیره سرویس ها قابل دسترس نباشند، را فراهم می سازد. این مشخصه شامل روش هایی برای اعلام رسیدن پیغام است، به طوری که فرستنده بتواند بفهمد که آیا گیرنده در دریافت پیغام موفق بوده است یا نه

.
با معرفی و ثبت مشخصه های جدید و بهبود مشخصه های قبلی، مشخصه های سرویس های وب دائما ًدر حال تکامل هستند. البته، مجموعه مشخصه های پایه ای که در این مقاله بیان شد، احتمالاً برای مدتی به عنوان زیر بنای اصلی مشخصه های سرویس های وب باقی خواهند ماند،‌ چرا که این مشخصه ها نیازهای اصلی و بنیادی برنامه های کاربردی سرویس گرا را پوشش می دهند.

Web Services Enhancements (WSE) 2.0 مجموعه ای از ابزارهای مدیریت شده تحتNET . را جهت پیاده سازی مشخصه های سرویس های وب برای توسعه دهندگان فراهم آورده است WSE .جهت فراهم آوردن پشتیبانی بیشتر زیرساختی، فراتر از آنچه که در حال حاضر به وسیله چارچوب کاری دات نت تامین می شود، ‌برای راه حل ها ی SOA ارایه شده است. به کمک WSE همچنین زیر ساخت پردازشی برای میزبانی سرویس های وبی که WS-Specification را پیاده سازس می کنند، فراهم می آورد. برای مثال، WSEبه شما امکان می دهد که به آسانی سرویس های وبی بسازید که رمز گذاری و امضاهای دیجیتال را روی درخواست ها و پاسخ های سرویس وب اعمال می کنند. در نهایت،‌WSE یک ابزار بهره وری است که برای هدایت توسعه دهندگان دات نت به سمت نسخه آینده Indigo طراحی شده است. Indigo از محصولات آینده مایکروسافت است که پشتیبانی یک پارچه برای برنامه های کاربردی پیغام رسانی و سرویس گرا را هم فراهم می آورد.

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

شکل ۳ – معماری سرویس گرای مقدماتی

 

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

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

شکل ۴ – معماری سرویس گرای توسعه یافته

معماری مقدماتی در لایه پایینی این معماری لایه ای قرار گرفته است. لایه ترکیب سرویس در معماری توسعه یافته، شامل توابع و نقشهای لازم برای یکپارچه کردن چند سرویس به عنوان سرویس ترکیبی می باشد. سرویس ترکیبی بدست آمده، توسط Service Aggregator بعنوان یک سرویس مقدماتی استفاده می گردد و یا توسط درخواست کنندگان سرویس بکارگرفته می شود.
Service Aggregator تهیه کننده سرویسی است که سرویس های ارائه شده توسط سایر تهیه کنندگان را یکپارچه می نماید تا از آنها سرویس های جدید بسازد، همچنین مشخصات و کدهایی را تهیه می کند تا در مورد سرویس های ترکیبی عملیات زیر را انجام دهد:
– متناسب کردن: کنترل اجرای سرویس های ترکیب شده و مدیریت گردش داده ها در بین آنها و انتقال آن به خروجی.

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

محدودیت ها و نوع پارامترهای سرویس های بکار رفته.
– ترکیب خواص سرویس ها: بکارگیری، مجتمع سازی و دسته بندی ویژگی های سرویس های ترکیب شده جهت بدست آوردن خواص ترکیبی جدید که دربردارنده کارایی، هزینه، امنیت، جامعیت، قیاس پذیری، در دسترس بودن و قابلیت اطمینان می باشد.
استانداردهای جدید ارائه شده با عنوان زبان اجرای پردازشهای حرفه برای سرویس های وب، تلاشی است که بر اساس XML، تعریف سرویس های وب جدید را که از ترکیب سرویس های موجود بدست می آیند، ارائه دهد. یک پردازش BPEL بصورت انتزاعی با ارجاع و اتصال به portTypeهای تعیین شده در WSDL ای ایجاد می شود که در سرویسهای وب موجود در یک پردازش، تعریف شده است.
مدیریت نرم افزارهای کاربردی مهم و بحرانی تجارت الکترونیک، می بایست نظارت عمیق و جامعی در محیط های توزیع شده داشته باشد. خارج از دسترس بودن یک عنصر کلیدی در سیستم های توزیع شده، تاثیر منفی زیادی بر کل چرخه گذاشته و باعث بیرون رانده شدن ارائه کننده سرویس از بازار می شود.
برای رویارویی با چنین موقعیت هایی، سازمان ها نیاز به کنترل دائم سرویس و حصول اطمینان از سلامتی سیستم دارند. کارایی می بایست همیشه، در هر شرایطی و با هر بار کاری، در سطح قابل قبولی باشد.
برای مدیریت قسمتهای مهم و بحرانی و سرویس های ویژه، معماری توسعه یافته، در لایه مدیریت سرویس بعنوان بالاترین سطح، سرویس های مدیریت شده را ارائه کرده است.
این لایه شامل دو قسمت مدیریت عملکرد و مدیریت بازار می باشد. کارکرد مدیریت عملکرد بدین صورت است که قسمتهای مهم سیستم را پشتیبانی می نماید. این لایه جزئیاتی از کارایی سیستم را جهت ارزیابی آن ارائه می دهد و بدین صورت سازمان را قادر می سازد تا بر اساس وضعیت نرم افزار و تکمیل شدن تراکنش های حرفه، تصمیم گیری نماید. اپراتور سرویس، مسئول انجام امور مربوط به این واحد است. مدیریت عملکرد، قابلیت بسیار مهم و کلیدی است که می تواند صحت و کارایی کلی سیستم را کنترل نماید و بدین ترتیب از بروز مشکلات شدید و خطا در سرویس ها جلوگیری کند.
این خطاها ممکن است بر اثر اجتماع و هماهنگ سازی سرویس ها و بخاطر عدم رعایت توافق های در سطح سرویس (SLA) اتفاق بی افتد.
مدیریت و کنترل های مناسب باعث کاهش احتمال بروز چنین خطاهایی می شود؛ بدین ترتیب که صحت، پایداری و همچنین مناسب بودن ارتباط بین توابع بکار رفته در سرویس های ورودی و خروجی را بررسی و کنترل می نماید.
قسمت دیگر در لایه مدیریت، مدیریت بازار می باشد. مسئولیت این واحد ارائه پروتکل ها و قوانین استاندارد در سطح حرفه می باشد تا از این طریق امکان استفاده از سرویسهای تعبیه شده در بازارهای مختلف بوجود آید.

در ضمن برخی از تسهیلات و سرویسهای پایه برای امور مالی، تضمین کیفیت و… در این لایه قرار می گیرد تا از این طریق بازارهای مختلف بتوانند در کمترین زمان به سرویس ها دسترسی یابند.
این قسمت از لایه مدیریت، توسط سازندگان بازار که کنسرسیومی از شرکت های فعال د
می توان معماری سرویس گرا را روشی در جهت بهبود طراحی و استفاده از سیستم های نرم افزاری دانست، اگرچه مشکلات و چالش های پیش روی آن همچنان نیازمند بررسی تجارب گذشته و نیز ارائه راه حل مناسب پیرامون مسائل مطرح در این معماری می باشند.

معماری سرویس گرا در تولید نرم افزار
همان طور که در عنوان آن مشخص است، به مفهومی در سطح معماری، اشاره می کند و بنابراین در مورد چیزی پایه ای و اساسی در سطوح بالا است، که پایه و اساس آن تجربیات بدست آمده در تولید سیستم های نرم افزاری مبتنی بر CBD و دو اصل اساسی در صنعت مهندسی نرم افزار یعنی تولید نرم افزار بصورت با همبستگی زیاد و در عین حال با چسبندگی کم است. بنابراین ایده های برنامه نویسی سرویس گرا ایده ای جدید نیست و شما شاید قبلا از آن استفاده کرده باشید. اما جمع آوری بهترین تجربیات از تولید چنین سیستم هایی بصورت مجتمع و ناظر به وضعیت تکنولوژیکی امروز بشر، که همان مفاهیم مطرح شده در معماری سرویس گرا است چیز جدیدی است.
مهندسان نرم افزار، همیشه گفته اند که نرم افزار باید به شکلی نوشته شود که همبستگی زیاد ولی در عین حال اتصال کمی داشته باشد. شرکت های بزرگ نرم افزاری هم در جهت گام برداشتن برای رسیدن به این دو اصل، تکنولوژی هایی را بوجود آوردند که به برنامه نویسان اجازه دهد تا به این دو هدف در تولید نرم افزارهای خود تا حد زیادی دست یابند. برای مثال می توان به تکنولوژی هایی مانند COM+ , CORBA و RMI و موارد دیگر، اشاره کرد. مشاهده کردید که موضوع برنامه نویسی سرویس گرا، مفهموم جدیدی نیست و این معماری تلاشی دیگر در جهت تولید نرم افزارهای با همبستگی زیاد و در عین حال با چسبندگی و اتصال کم است. ممکن است بپرسید، پس چرا با وجود تکنولوژی های قدرتمندی چون CORBA ,COM+ ,RMI چیز جدیدی بوجود آمد؟ مگر تکنولوژی های قبلی موفق نبودند؟ بله مهمترین اشکال در معماری های قدرتمندی چون موارد مذکور این بود که تولید کنندگان آنها سعی داشتند، که تکنولوژی خود را بر بازار غالب نمایند. رویایی که هرگز به حقیقت نمی پیوست.
بنابراین با توجه به این موضوع که این تکنولوژی ها قادر به تعامل مناسب با یکدیگر نبودند عملاً اصل همبستگی زیاد بصورت خود بخود رد می شد. البته معماری های مذکور اشکالات دیگری هم داشتند که نسبت به مورد بالا از اهمیت کمتری برخوردار است که از جمله آنها می توان به عدم هماهنگی با اصول امنیتی مورد استفاده در اینترنت اشاره کرد. البته بعدها راه حل هایی هم برای این مشکل بوجود آمد) مانند (RPC Over HTTP اما به این علت که از روز اول، در طراحی این تکنولوژی ها این امر در نظر گرفته نشده بود، از کارایی مناسبی برخوردار نبودند. مفهموم همبستگی زیاد و در عین حال با چسبندگی و اتصال کم، وقتی بخواهد در جهت ارزیابی یک

سیستم نرم افزاری یا تکنولوژی، مورد استفاده قرار گیرد بسیار مبهم می شود. حتی کسی می تواند ایده های همبستگی و چسبندگی را باهم ترکیب کند!. برای جلوگیری از چنین ابهاماتی، شما می تواند از ویژگی های معماری سرویس گرا به عنوان یک راه برای ارزیابی میزان همبستگی و چسبندگی و اتصال یک سیستم نرم افزاری یا یک تکنولوژی استفاده کنید. اگرچه مفاهیم مطرح شده در معماری سرویس گرا دقیقاً همان مفاهیم همبستگی زیاد و در عین حال چسبندگی کم

نیستند، اما سیستم هایی که بر اساس معماری سرویس گرا طراحی و پیاده سازی شده اند، نشان داده اند که توانسته اند تا حد بسیار زیادی ویژگی های همبستگی زیاد و در عین حال چسبندگی کم را بخوبی در خود ایجاد و حفظ کنند.
در چهار دهه اخیر، پیچیدگی نرم افزارها روز به روز بیشتر شده و تقاضا برای نرم افزارهای قدرتمندتر افزایش یافته است. در این میان، به نظر می رسد که روش های قدیمی جوابگوی نیازهای در حال رشد کنونی نیستند و نیاز به ایجاد و بکارگیری روش هایی است که بوسیله آنها بتوان بر این پیچیدگی ها در زمان هایی کوتاه تر غلبه کرد. از طرفی امکان کنار گذاشتن سیستم های نرم افزاری موجود که تا به حال مشغول سرویس دهی به مشتریان بوده اند، وجود ندارد و می بایست سیستم های جدید را بصورت یکپارچه و در کنار همین سیستم ها بوجود آورد. معماری سرویس گرا، با تکیه بر محاسبات توزیع شده و بر پایه شبکه ها و لایه های میانی و همچنین زبان هایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، بعنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذکور مطرح گردیده است.
در روش فوق هدف فقط اینکه سیستمی داشته باشیم که بتواند سرویس بدهد نیست بگونه ای دیگر در این روش طراح مثلا به حسابداری به عنوان یک سیستم خاص نباید نگاه کند که به دیگرسیستم ها سرویس می دهد و کار حسابداری انجام می دهد بلکه باید به این شکل نگاه شود که مجوعه سرویس هایی آماده شود براساس فرآیند های سیستم حسابداری که این سرویسها در presentation layer ای می توانند توسط یک نرم افزار یا بصورت سناریو های مختلف در جاهای مختلف فرآخوانی شده و یک فرآیند یا بخشی از فرآیند مربوط به حسابداری راانجام دهند که می توانند هر بخشی از این فرآیند مربوط به یک کار یا سیستم باشد مثلا در سیستم های ERP درسازمانها می توان فرآیند درخواست جنس از یک مجتمع تولیدی را توسط مشتری در نظر بگیریم می توان سناریوئی چید تا درخواست مشتری بررسی, درصورت عدم وجود جنس درخواست

مواداولیه ازانبار و درنهایت تامین خواسته مشتری با صدور یک سند در حسابداری پایان یابد که هرکدام ازاین گام های سناریو می توانند در سیستم گردش کاری یا در پشت صحنه توسط نرم افزار هدایت شده ودرنهایت با فراخوانی سرویسهای مختلف از سیتم های مختلف و اثر گذاری هریک این سناریو اجرا شود.

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 8700 تومان در 29 صفحه
87,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد