GXA چیست؟
خاستگاه GXA را می توان از مقاله های با عنوان Web Services Framework از Microsoft
و IBM دانست. در این مقاله کارهایی شرح داده شده بود، که باید انجام شوند، تا یک وب
سرویس (وب سرویس یک قسمت از منطق برنامه است که از طریق اینترنت قابل دسترسی است) بتواند
بین سازمانها (با ساختارهای متفاوت و زیربناهای مختلف)، اجرا شده و قابل استفاده شود.
برخی از موارد مطرح شده در این مقاله عبارتند از:
- امنیت: مواردی که رعایت آنها در مورد خاستگاه و محتویات
یک پیام تضمین کافی را بدهد.
- تراکنشها: چگونگی عملکرد، هنگامی که چند سرویس بر روی
داده های چند لایه، کار می کنند و چگونگی اثر داده
ها بر هم.
- هماهنگی: چگونگی تعامل و انتقال اطلاعات بین وب سرویس
های مختلف.
- پیام رسانی مطمئن: مطمئن شدن از اینکه کسی که پیام را
دریافت میکند همان است که پیام برای او ارسال شده است.
- تعیین مسیر برای پیام.
- چگونگی الصاق داده های دودویی به پیام.
GXA، نسخه Microsoft برای پیاده سازی مقاله
ی مطرح شده است. GXA یک سری راهبرد با
هدف مرتب کردن وب سرویس
ها و یکپارچه سازی برنامه ها در بستر اینترنت است. در واقع
هدف GXA، استفاده از وب سرویس ها با یک استاندارد خاص است که این مهم، هماهنگ شدن برنامه
هایی را به دنبال خواهد داشت که در بسترهای مختلف طراحی شده و سرویس می دهند.
معماری GXA
GXA یک معماری چند لایه دارد که برروی خصوصیات وب سرویس بنا شده است. لایه بالاتر
از این لایه را به دو بخش میتوان تقسیم کرد.
- لایه اول که شامل ماژولهای SOAP است. مانند WS-Security وWS-Attachment که به متن
و ساختار پیام می پردازند.
- لایه دوم، شامل یک سری پادمان زیرساختی است. این لایه مشخص
میکند که پیام ها چطور درپیِ هم بیایند، تا پاسخ یک نیاز ما باشند. برای مثال ترتیب
ارسال پیامها به یک وب سرویس برای به
روز کردن یک رکورد از پایگاه داده در این قسمت
مشخص می شوند.
شکل زیر معماری کلی پیاده سازی شده در GXA را نشان می دهد. در ادامه به شرح و بسط
این لایه ها و موارد مهمی که در طراحی آنها درنظرگرفته شده و پیاده
سازی شده است، می
پردازیم.
1- امنیت (WS-Security)
یکی از دغدغه های مهم در استفاده از وب سرویسها، امنیت است، که شامل موارد زیر
است:
- نحوه کد کردن و پنهان سازی اطلاعات.
- نحوه اعتبارسنجی.
- امضای الکترونیکی.
WS-Security به نیازهای بالا پاسخ می گوید و به نیازهای شما در برقرار امنیت پاسخ
می دهد. WS-Security یک سری مشخصات و دستورالعمل است، که چگونگی پیاده سازی این موارد
را مشخص می کند و از طریق WSDK قابل دسترسی است. WS-Security مشخص می
کند که چگونه
نشانه های امنیتی با پیام همراه می شوند تا امنیت لازم در استفاده از وب سرویس ها و
SOAP فراهم شود.
WS-Security دو شیوه X.509 و Kerberos را پشتیبانی میکند.
برای افزودن گواهی به پیام ها و جلوگیری از دستکاری آنها، لازم است که پیامها کد
شوند و با امضای دیجیتال همراه شوند. برای این کار باید از XML-Encrypt و XML-Signatureاستفاده
کرد که نحوه استفاده از این دو ابزار، در WS-Security آورده شده است.
2- تراکنش (WS-Transaction)
با زیاد شدن تعداد وب سرویس های مورد استفاده در یک برنامه، نحوه تعامل بین آنها
و اطمینان حاصل کردن از اعمال شده تغییرات، به عنوان یک دغدغه مطرح می شود و ضرورت
داشتن یک استاندارد، بیش از پیش ضروری به نظر می رسد. WS-Transaction یک شرح و بسط
است که توسط IBM و BEA منتشر شده است که در آن نحوه هماهنگ کردن عملیات در وب سرویس
ها، به طوری که از اعمال شدن درست تغییرات در پایگاه داده اطمینان حاصل شود، شرح داده
شده است. WS-Transaction به تنهایی یک راه حل جامع نیست و با استفاده از WS-Security
(که قبلا توضیح داده شده) و WS-Coordination (که توضیحات آن در ادامه خواهد آمد) تکمیل
می شود.
در WS-Transaction دو نوع تراکنش وجود دارد. یکی تراکنش بنیادین (Atomic Transaction)
است که مبتنی بر حفاظت بسیار زیاد است و دیگری Business Activity که تراکنش هایی با
عمر زیاد را پشتیبانی می کند و حفاظت کمتری دارد.
3- هماهنگی (WS-Coordination)
این قسمت با WS-Transaction ارتباط تنگاتنگی دارد WS-Coordination به برنامه نویسان
اجازه میدهد تا پردازشهای پیچیده بین وب سرویس ها تعریف کنند و نحوه تعامل وب سرویس
ها
و گردش داده (DataFlow) بین وب سرویسها را مشخص کنند. زبانهای مختلفی برای این کار
وجود دارد مانند XLANG که WSFL (Web Services Flow Language) که متعلق به مایکروسافت
و آی بی ام هستند.(کارگزار BizTalk مایکروسافت از Xlang استفاده میکند) البته دو شرکت
مذکور به همراه BEA یک شرح و بسط منتشر کردهاند و نام آن را BPEL4WS (Business Process Execution Language for Web Services) گذاشتهاند (این نام گذاری در نوع خود جالب است).
البته هیچ پیاده سازی ای تا کنون برای آن انجام نشده است.
Sun به همراه SAP ، نیز WSCI (Web Services Choreography Interface) را ایجاد کرده
است و از آن استفاده می کند.
4- فرستادن پیام های مطمئن (Reliable Messaging)
بسیاری از برنامه ها به تضمینی در مورد رسیدن پیام آنها به برنامه مقصد (حتی در
صورت پایین بودن سرویس در آن لحظه) احتیاج دارند. مایکروسافت از MSMQ (Microsoft Message Queuing) و آی بی ام ازMQ استفاده میکند که هر دو آنها قابلیت کارکردن با پهنه های
(Platformهای) متفاوت را ندارند و با دیوارهای آتش نیز مشکلاتی دارند.
5- مسیر یابی و ارجاع (Routing and Referral)
مفهوم مسیریابی (route) این است که شما تعیین کنید که پیام شما چه مسیری را برای
رسیدن به مقصد طی خواهد کرد. برای مثال، یک تراکنش مالی دارید و میخواهید نهادی
را هم از این کار مطلع کنید. برای این کار، باید قبل از رسیدن پیام به مقصد از
یک پایانه در بین راه عبور کند و در آنجا نیز ثبت شود تا نهاد موردنظر نیز از این تراکنش
مطلع شود.
راه حل مایکروسافت برای این کار WS-Routing است و WS-Referral است و راه
هایی را
مشخص میکند که کارگزارها می توانند به طور پویا، واسطه
ها (کارگزارهای میانی که پیام
ها از آنها گذر می کند تا به مقصد برسد) را شناسایی کرده و راههای مناسب را بین آنها
انتخاب کنند. هر دو مورد در WSDK پیاده سازی شده و قابل استفاده است.
6- انتقال دادههای دودویی (Binary Attachments)
چون وب سرویس ها براساس SOAP و XML بنا شده
اند، پس مبتنی بر متن میباشند. بسیاری
از اطلاعات رد و بدل شده در وبسرویسها، متنی است بنابراین مشکلی در این موارد وجود
ندارد. ولی برخی از داده ها مانند صدا و تصویر چنین نیستند. برای انتقال چنین داده
هایی
که دودویی هستند باید الگوریتمی داشته باشیم که اطلاعات دودویی را به متن تبدیل کند.
یکی از این الگوریتم ها Base64 Encoding نام دارد.
البته کد کردن و کدگشایی باعث بالا رفتن بار پردازشی خواهد شد و حجم اطلاعات نیز
افزایش خواهد یافت. برای حل این مشکل باید راهی انتخاب شود که در آن بتوان این اطلاعات
دودویی را به پیام ضمیمه کرد. مایکروسافت WS-Attachment و DIME (Direct Internet Message Encapsulation) را در این زمینه، به عنوان راه حل ارایه میکند که راه هایی برای ضمیمه
کردن اطلاعات به پیام و Encapsulate کردن آن دارد.
هر دو این موارد در WSDK پیاده سازی شدهاند و قابل استفاده هستند. سایر شرکتها
مانند IBM و OASIS (Organization for the Advancement of Structured Information Systems)
این دو مورد را نپذیرفته و از سایر روشها استفاده میکنند..