Skip to Content

آرشیو

مراحل حرفه ای شدن یک برنامه نویس

مراحل حرفه ای شدن یک برنامه نویس

حتماً شما هم افرادی را دیده اید که در برنامه نویسی مهارت خاصی دارند و زبان زد شده اند و هرگاه اسم برنامه نویس می­آید همه یاد آن می افتند و در مقابل افرادی که هرچه تلاش کرده اند نتوانسته اند برنامه نویس خوبی شوند و کار را نیمه کاره رها کرده اند. اما چگونه می توان یک برنامه نویس حرفه ای شد؟
در این مقاله قصد داریم نحوه تبدیل شدن به یک برنامه نویس حرفه ای را مورد بررسی قرار دهیم. با ما همراه باشید.
داشتن دانش برنامه نویسی
اینکه الان شما یک برنامه نویس حرفه ای نیستید مهم نیست، همین که تصمیم گرفته اید تا یک برنامه نویس حرفه ای شوید خودش یک گام طلایی است. همان طور که می دانید برنامه نویسی یک علم است و شما باید آن را کسب کنید و بعد از آن با تمرین مهارت خود را در این زمینه بالا ببرید.
راه های زیادی برای کسب دانش برنامه نویسی وجود دارد.
کتاب های برنامه نویسی: با اینکه همیشه یک کتاب دارای ساختار بسیار منسجمی است و نویسندگان در این امر نهایت تلاش را میکنند اما متاسفانه یادگیری برنامه نویسی از روی کتاب بسیار سخت است. اما یک کتاب برنامه نویسی می تواند مرجع بسیار خوبی برای یک برنامه نویس باشد تا هرگاه مشکلی داشت به آن مراجعه کند.
جستجو در اینترنت: شاید خیلی ها این روش را پیشنهاد کنند و یا خیلی از برنامه نویسان کنونی نیز از این طریق توانسته اند برنامه نویس شوند. اما دقت کنید با جستجو در اینترنت با حجم انبوهی از اطلاعات مواجه خواهید شد که بسیاری از آنها ساختار منظمی هم ندارند و ممکن است جز سر درگمی چیزی بدست نیاورید. همین سردرگمی باعث می شود خیلی ها نیمه کاره یادگیری را رها کنند. برنامه نویس شدن از این طریق بیشتر با سعی خطا خواهد بود و دستو پا شکسته، زیرا هر کس می تواند در وبلاگش برنامه نویسی را به سبک خودش آموزش دهد.
سایتهای مرجع برنامه نویسی: نمونه کدها و گفتگوهایی که میان برنامه نویسان در این سایتها وجود دارد بسیار می تواند برایتان مفید باشد. خوش بختانه سایتهای مرجع برنامه نویسی فوق العاده ای وجود دارد. با این حال خواندن متن و انجام کار از روی آموزش متنی می توانند مشکل و خسته کننده باشد.
کلاس های برنامه نویسی: شما می توانید در یک آموزشگاه برنامه نویسی ثبت نام کنید و یا استاد خصوصی بگیرید و با صرف هزینه نه چندان کم، مهارتی کسب کنید که کیفیت این مهارت شما بسیار وابسته به استاد شما و نحوه تدریسش دارد.
فیلم های آموزشی: فیلم های آموزشی برنامه نویسی به شما این قابلیت را می دهد در هر زمان و هرکجا خواستید آنها را دنبال کنید و هزینه خیلی کمتری نسبت به کلاس رفتن دارد. اما باز کیفیت فراگیری دانش بستگی به فرد مقابل و نحوه تدریسش دارد. اما اگر فیلم های معتبر آموزشی و تایید شده در دنیا را که برترین برنامه نویسان دنیا آن ها را تهیه دیده اند را بیابید، علاوه بر کسب دانش از یادگیری نیز لذت خواهید برد. شرکت لیندا یکی از این شرکت ها است که فیلم های آموزشی برنامه نویسی را برای علاقه مندان کسب مهارت برنامه نویسی تهیه می کند. اما همان طور که می دانید فیلم های شرکت لیندا فارسی نیستند و خرید آنها برای ما ایرانی ها کمی گران در می آید.
کدام روش، بهترین است؟ شاید آسان ترین و لذت بخش ترین شیوه یادگیری دیدن فیلم های کوتاه باشد. اما نیازی به دیدن تمام فیلم ها نیست، در ابتدا دنبال اصول پایه و آنچه که در انجام یک پروژه برنامه نویسی به آن نیاز دارید باشید. بله پروژه! برای یادگیری بهتر و آسان تر و لذت بخش تر باید برای خود پروژه تعریف کنید و در طول انجام پروژه، برنامه نویسی را یاد بگیرید. ما در این راه شما را همراهی خواهیم کرد.
تمرین و انجام پروژه
کسب دانش برنامه نویسی و دیدن فیلم های آموزشی، شروع کار است و شما باید با تمرین و انجام پروژه های مختلف مهارت خود را در برنامه نویسی بالا ببرید. در انجام هر پروژه شما تجربه ای بدست می آورید که این تجربه ها در کنار هم شما را به یک برنامه نویس حرفه ای تبدیل می کند. از پروژه های ساده شروع کنید، مهم نیست قبلا افرادی این پروژه ها را انجام داده اند. شما نیز آنها را به سبک خودتان انجام دهید و یا آنها را تکمیل و بهتر کنید.
خلاق و کنجکاو باشید
در انجام پروژه ها همیشه به دنبال روش جدید و بهتر باشید و سعی کنید کارها را ساده تر کنید. کنجکاو باشید و خودتان را محدود به دانش تان نکنید و مرتبا جستجو کنید. برنامه نویسان حرفه ای هرگز خود را محدود به دانش شان نمی کنند و همواره به دنبال ارتقا دانش خود هستند. هدف از انجام پروزه ها نیز همین است.
مانند برنامه نویس های حرفه ای فکر کنید
پروژه های زیادی انجام شده و شاید فکر کنید که دیگر هیچ پروژه تازه ای برای انجام نیست، اما یک برنامه نویس حرفه ای هرگز اینطور فکر نمی کند. به اطرافتان نگاه کنید، نیاز ها را پیدا کنید و یک ایده جدید را پرورش دهید. مهم نیست ایده تان به چه اندازه بزرگ است. روی ایده تان وقت بگذارید و سعی کنید آن را به انجام برسانید و بعد کم کم آن را گسترش دهید. به عنوان مثال به نرم افزار ورد نگاه کنید، شاید در ابتدا ایده این بود که بتوان کاراکتری را از روی کی بورد وارد کامپیوتر نمود و بعد اینقدر این نرم افزار گسترش یافت که اکنون به عنوان محبوب ترین واژه پرداز است. مثالهای این چنینی بی شمار است.
مشکلات پیش رو
تبدیل شدن به یک برنامه نویس حرفه ای مستلزم تلاش است. ممکن است وسط کار خسته شوید و یا دیگران را ببینید از شما سبقت گرفته اند و نا امیدانه بکار ادامه دهید. اما پیشنهاد می کنم با انگیزه کار را دنبال کنید و تلاش کنید. زیرا هرچه بیشتر تلاش کنید به موفقیت های بیشتری دست خواهید یافت و از برنامه نویسی لذت خواهید برد.
از اینکه این مطلب را تا پایان خواندید از شما متشکرم و امیدوارم این مقاله برای شما مفید بوده باشد.
ادامه مطلب

راهکارهای افزایش سرعت سایت

راهکارهای افزایش سرعت سایت

سرعت بارگذاری سایت برای کاربران و بازدیدکنندگان آن بسیار حائز اهمیت می باشد. طبق گفته Akamai، اگر سایت در سه ثانیه اول بارگذاری نشود نیمی از بازدیدکنندگان، آن را ترک خواهند کرد. در نتیجه این مورد نیز می تواند یکی از عوامل مهم رتبه بندی سایت به شمار بیاید.
Google Page Speed
یکی از بهترین ابزارها جهت پیدا کردن نحوه بهینه سازی سایت و بالابردن سرعت لود آن توسط Google ارائه شده است. “Google Page Speed” یک ابزار بسیار مفید جهت بالابردن سرعت لود سایت می باشد و می تواند مواردی را که در بهبود عملکرد سایت موثر هستند را درقالب یک فهرست نمایش دهد.

شما می توانید Plugin Page Speed را در مرورگرهای Firefox و Chrome نصب کنید، و یا از نسخه ی Insights استفاده نمایید.

افزایش سرعت سایت
Cash و فشرده سازی

یکی دیگر از راهکارهای افزایش سرعت بارگذاری سایت، استفاده از یک سرویس ذخیره سازی و یا پلاگین می باشد به طورمثال اگر از WordPress استفاده می کنید، Super Cache و W3 Cache می توانند مفید واقع شوند. همچنین شما می بایست تمامی تصاویر سایت خود را فشرده سازی کنید (به خصوص اگر از تصاویر JPEG زیادی استفاده می کنید).

کاهش تعداد گزینه ها
معمولا اغلب زمان بارگذاری سایت صرف دانلود و جمع آوری اطلاعات مختلف در صفحه از جمله تصاویر، اسکریپت ها، توضیحات اضافی و غیره می شود و هر عنصر درخواست HTTP خود را ارسال می کند، بنابراین اگر تعداد زیادی از عناصر مختلف جهت بارگذاری وجود داشته باشد، سرعت سایت کم خواهد شد.
  • استفاده از CSS به جای تصاویر
  • محدود کردن تعداد اسکریپت ها و پایین نگه داشتن آنها
بررسی مشکلات دامنه
یکی دیگر از علل کند شدن سرعت سایت می تواند وجود مشکل در DNS دامنه باشد، ابزارهای زیر جهت شناسایی مشکل موجود در DNS به کار گرفته می شوند:
  • ابزارهای شبکه مانند: ping، Nslookup، WHOIS، DNS check
  • intoDNS
  • Leaf DNS

اگر در این زمینه مشکلی وجود داشت، می توان با استفاده از ویرایشگر DNS Zone موجود در Cpanel، آنرا برطرف کرد.

کوتاه کردن کدهای برنامه نویسی
هر کد غیرضروری مانند خطوط اضافی، فضاها و یا تارهای موجود، هرچند خیلی ساده به نظر می رسند، ممکن است تاثیر گذار باشند.
  • جهت تست و بهینه سازی HTML سایت، می توان از GTMetrix نیز استفاده کرد.
  • جهت کم کردن حجم جاوااسکریپت، می توان از JS Compress نیز استفاده کرد.
  • اگر شما مدیریت سرور خود را بر عهده دارید، می توانید با نصب یکی از ماژول های google سایت خود را بهینه سازی کنید.

استفاده از 
WordPress

استفاده از وردپرس بسیار آسان و کاربر پسند می باشد ولیکن عوامل بسیاری وجود دارد که می تواند باعث کند شدن سرعت سایت شود.

استفاده از Themes 

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

استفاده از Plugin
پلاگین ها می توانند موجب بالارفتن قابلیت ها و افزایش بازدید سایت شوند. ولیکن اگر این نوع از پلاگین ها از منابع استفاده کنند، موجب کندی سرعت سایت خواهند شد.
درنتیجه می بایست پلاگین های غیرضروری را حذف و آنهایی را که مصرف منابع بیشتری دارند، شناسایی کرد. با استفاده از ابزارهای زیر می توان نتیجه گرفت که کدامیک از پلاگین ها منابع بیشتری استفاده می کنند و چقدر زمان جهت بارگذاری آن نیاز است.
  • UsageDD
  • Debug Objects
  • Query Monitor
  • Query Monitor
دیتابیس ها
با گذشت زمان، پایگاه داده های وردپرس که از بیت های داده ای غیرضروری همچون فایل های موقت، نظرات اسپم، پیشنویس ها و…  تشکلیل و با استفاده از منابع باعث کندی سرعت سایت می شوند را می توان نادیده گرفت.
ساده ترین روش جهت پاک کردن پایگاه داده ها و بهینه سازی آنها استفاده از یک افزونه موجود برای انجام این کار است به عنوان مثال می توان موارد زیر را نام برد.
  • WP-Sweep
  • WP-DB Manager
پایگاه داده

ادامه مطلب

انواع معماری وب سرویس

انواع معماری وب سرویس

انواع معماری وب سرویس

یکی از مهمترین تحولات در صنعت نرم افزار، پیشرفت و بهبود در زمینه ی معماری نرم افزار و آنهم در سمت وب و اینترنت بوده است. سرویس های وب یا همان وب سرویس، تسهیلات لازم بمنظور ایجاد نسل جدیدی از برنامه های وب را ارائه می نمایند.

مقدمه

اگر قصد دارید نرم افزارها و وب سایت های از نوع distributed یا همان توزیع شده ایجاد کنید، می بایست به نکات زیر توجه کنید:

• در مواردیکه قصد ارتباط بین منابع نرم افزاری وجود داشته باشد، منابع می بایست بدرستی و بخوبی با یکدیگر مرتبط گردند( منابع مشخص و از یکدیگر متمایز گردند).
• ارتباط بین برنامه ها می بایست متکی بر استانداردهای اینترنت باشد.
• اینترفیس های ( بخش های مرتبط با استفاده کننده ) منابع نرم افزاری، می بایست برای استفاده عموم منتشر و امکان دسترسی به تعاریف اینترفیس بهمراه مستندات مربوطه وجود داشته باشد.
برنامه هائی که با لحاظ نمودن موارد فوق، طراحی و پیاده سازی می گردند ، مزایای زیر را بدنبال خواهند داشت :
• می توان از سرویس های نرم افزاری و منابع خارجی بمنظور طراحی و پیاده سازی نرم افزار مورد نظر خود استفاده کرد.
• امکان ایجاد منابع نرم افزاری بیشتری بصورت ماژولار، وجود خواهد داشت ( کیت های نرم افزاری با قابلیت استفاده مجدد ).
• هزینه تولید نرم افزار کاهش و بهره وری افزایش خواهد یافت .
• مطرح شدن ایده عرضه نرم افزار بعنوان سرویس . بدین ترتیب در مقابل عرضه یک نرم افزار Stand-alone ، می توان از رویکرد نرم افزار بعنوان سرویس ، استفاده نمود.

عناصر معماری مبتنی بر سرویس

معماری مبتنی بر سرویس (وب سرویس) برای پیاده سازی برنامه های توزیع شده یا distributed ،بسیار مناسب می باشد. معماری فوق، امکان پیاده سازی پویا ، آزاد و گسترده برنامه های توزیع شده را فراهم می نماید.
امروزه شاهد بکارگیری سیستم های متعددی می باشیم که خود از چندین برنامه و یا زیر سیستم استفاده می نمایند. با توجه به ارتباط بین سیستمها با یکدیگر، ایجاد و اعمال یک تغییر در ارتباط با هر یک از زیر سیستمها می تواند باعث بروز اشکال در تعداد زیادی از عناصر وابسته و یا سایر برنامه ها گردد . رویکرد فوق ، افزایش هزینه نگهداری این نوع سیستم ها را بدنبال خواهد داشت.
معماری مبتنی بر سرویس ، وابسته به سه عنصر اساسی است که هر یک دارای جایگاه خاص خود می باشند : 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 استفاده و در ادامه یک میزبان زمان اجراء را فعال می نماید . میزبان زمان اجراء ، کد مربوط به سرویس وب را که توسط فریمورک دات نت پیاده سازی شده است ، اجراء خواهد کرد.
در این بخش به بررسی نقش و جایگاه مصرف کنندگان و کارگزاران سرویس ها ی وب ، خواهیم پرداخت .

مصرف کننده سرویس

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

فریمورک دات نت با ارائه کلاس هائی در این زمینه، اکثر جزئیات سطح پائین را کپسوله می نماید. کپسوله نمودن جزئیات سطح پائین، ضرورت پیاده سازی زیرساخت را از پیاده کنندگان سلب و آنان را از این فعالیت معاف می نماید .
مکان یابی سرویس : قبل از امکان استفاده از یک سرویس وب ،مصرف کننده می بایست قادر به یافتن آن باشد . یکی از راهکارهای موجود در این زمینه درج کد بصورت دستی ( برخوردی کاملا” ایستا ) در مصرف کننده سرویس وب و در هنگام طراحی است. در چنین مواردی آدرس سرویس ارائه شده بصورت مستقیم در برنامه مصرف کننده سرویس درج خواهد شد.
یکی دیگر از راهکارهای موجود در این زمینه ، امکان یافتن پویای یک سرویس وب توسط مصرف کننده سرویس وب و در زمان اجراء است . بدین ترتیب ، مصرف کننده سرویس وب دارای انعطاف لازم در خصوص انتخاب بین سرویس های وب رقیب با عملکرد مشابه و بر اساس ویژگی هائی خاص نظیر قیمت و کارآئی ، خواهد بود . روش استاندارد برای یافتن سرویس های وب ، تشریح سرویس و خدمات ارائه شده توسط آنان ، استفاده از یک ریجستری UDDI است . ( Universal Description,Discovery, and Integration )
پروکسی ها : در زمان پیاده سازی یک مصرف کننده سرویس وب ، پیاده کنندگان می توانند زمان خود را صرف افزایش بهره وری نموده و خود را درگیر موارد زیر ننمایند .
• فعالیت و درگیر شدن در ارتباط با پروتکل های زیربنائی
• پارسینگ بایت ها بمنظور استخراج داده
• بررسی صحت و اعتبار داده های ورودی ( دریافتی )
• ایجاد و ساخت بسته های اطلاعاتی بمنظور خروجی علیرغم توصیه های انجام شده ، اغلب پیاده کنندگان بمنظور انجام عملیات فوق ، وقت خود را صرف انجام فعالیت های فوق می نمایند ، چراکه در این رابطه کد از قبل ایجاد شده ای وجود ندارد. یکی از رویکردهای متداول در این زمینه (هندل نمودن فعالیت ها ی فوق ) ، کپسوله سازی و یا پنهان نمودن جزئیات پیاده سازی در کلاسی است که بعنوان یک پروکسی برای سرویس وب ، رفتار می نماید.
کلاس های پروکسی علاوه بر پنهان سازی جزئیات پیاده سازی ، یک مدل برنامه نویسی شناخته شده را بمنظور فراخوانی متدهای اشیاء در اختیار پیاده کنندگان قرار خواهند داد. تنها مسئله مرتبط با روش فوق ، پیاده سازی یک کلاس پروکسی برای هر اینترفیس سرویس وبی خواهد بود که یک مصرف کننده سرویس وب از آن بمنظور ارتباط استفاده خواهد کرد . مایکروسافت در این رابطه ابزاری با نام Wsdl.exe را ارائه که می توان از آن بمنظور پیاده سازی کلاس های پروکسی سرویس وب استفاده نمود. باتوجه به اینکه، یک اینترفیس سرویس وب با استفاده از XML تعریف می گردد، شایسته تر است که ابزارهائی را ایجاد که قادر به تولید اتوماتیک کلاس های پروکسی باشند.
فراخوانی غیرهمزمان : با توجه به اینکه دستیابی به سرویس های وب عموما” از طریق شبکه ها ( نظیر اینترنت ) که عمدتا” قابلیت اطمینان و سرعت شبکه های محلی را ندارند ،میسر می گردد ، شاید مناسبتر باشد که مصرف کنندگان سرویس وب ، بگونه ای پیاده سازی گردند که قادر به ایجاد فراخوانی غیرهمزمان به سرویس های وب باشند . پروکسی ها ئی که با استفاده از Wsdl.exe تولید و ایجاد می گردند ، این امکان را به صدازنندگان سرویس خواهند داد که فراخوانی غیرهمزمان به یک سرویس وب را داشته باشند. کلاس پروکسی با ترکیب RunTime ، مسئولیت برخورد با جزئیات مدیریت Thread pool ، اتمام یک متد callback notification و سایر موارد مرتبط را برعهده خواهند داشت .
نمونه هائی از مصرف کنندگان سرویس وب : برنامه های تجاری ( زمینه های متعدد تجاری ) اولین کاربران و متقاضیان سرویس های وب می باشند ولی تعداد زیادی فعالیت تجاری دیگر نیز وجود دارد که می توانند بعنوان مصرف کنندگان سرویس وب مطرح گردند . روزنامه های Online و ASP :Application Service Provider ، دو نمونه در این زمینه می باشند . یک روزنامه Online ، ممکن است از جندین سرویس وب خبری بمنظور تامین اخبار نشریه خود استفاده نماید . اخبار ورودی می توانند قالب بندی و فیلتر شده و برای آنان فهرست توصیفی تهیه و قابلیت جستجو بر روی آنان با توجه به خواست مصرف کننده ایجاد گردد . یک ASP ممکن است سرویس های وب متعددی را میزبان و یا خود راسا” اقدام به تولید سرویس های وب مورد نیاز و ارائه آنان به مشتریان مربوطه نماید.

معماری وب سرویس در بستر کلاد

معماری وب سرویس در بستر کلاد

کارگزار سرویس وب

همانگونه که یک معماری مبتنی بر سرویس نیازمند یک کارگزار سرویس است ، یک معماری وب سرویس service broker، نیز نیازمند یک کارگزار سرویس خواهد بود. بمنظور تسهیل در ارتباط ، بنگاههای تجاری نیازمند یک راه حل جامع و فراگیر بمنظور نشر اطلاعات خود به هر یک از مشتریان و یا شرکاء تجاری خود در سطح جهان می باشند .یک کارگزار سرویس وب ، هم با ارائه دهنده سرویس وب و هم با مصرف کننده سرویس وب ارتباط تا زمینه استفاده از امکانات ارائه شده توسط ارائه دهندگان سرویس های وب و استفاده از سرویس های وب ارئه شده برای مصرف کنندگان سرویس های وب ، فراهم گردد. سازمان ها با نشر اطلاعات مرتبط با سرویس ها و خدمات تجاری خود ، به پتانسیل های زیر دست خواهند یافت :
• امکان یافتن سریع همکاران تجاری از بین میلیون ها بنگاه تجاری Online
• تعریف نحوه مدیریت فعالیت های تجاری پس از یافتن بنگاههای تجاری مورد نظر
• ایجاد یک رویکرد گسترده صنعتی برای فعالیت های تجاری که ارتباط و همبستگی سریع و آسان با مشتریان و شرکاء تجاری بر روی اینترنت را بدنبال خواهد داشت .در این رابطه ، سازمانها قادر به ارائه اطلاعات مشترک در ارتباط با محصولات و خدمات خود بوده و امکان حق انتخاب در رابطه با گزینش نوع ارتباط با سایر فرآیندهای تجاری و سیستم ها نیز فراهم می گردد .
ارتباط بین کارگزار سرویس وب و ارائه دهنده سرویس وب : کارگزاران بمنظور ارائه صحیح سرویس های وب از ارائه دهندگان سرویس های وب درخواست اطلاعات متنوعی در رابطه با سرویس ارائه شده را خواهند داشت . اطلاعات اخذ شده بمنزله شناسنامه یک سرویس وب خواهد بود که پس از ارائه و تائید و طی مراحل مربوطه در ریجستری UDDI ذخیره تا امکان در اختیار قرار دادن آنان برای مصرف کنند گان سرویس های وب فراهم گردد .کارگزاران سرویس های وب ، اطلاعات عمومی زیر را در ارتباط با یک سرویس وب منتشر خواهند کرد :
• اطلاعات طبقه بندی شده ای که امکان گروه بندی سرویس وب را فراهم نماید .
• اطلاعات مورد نیاز بمنظور ارتباط با سرویس وب
• شرح خدمات ارائه شده توسط سرویس های وب
• لینک های مورد نیاز بمنظور استفاده از سایر مستندات که شامل اطلاعاتی در رابطه با سرویس وب است .
• آدرس ( مکان ) نهائی سرویس های وب . آدرس های فوق ، عموما” بصورت URL)Uniform Resource Locators) بوده و مکان و موقعیت سرویس های وب اعلام شده را مشخص می نمایند . با توجه به عدم توانائی ذخیره سازی تمامی اطلاعات بر روی رسانه های ذخیره سازی کارگزار سرویس وب ، از اشاره گرهائی خاص در این زمینه استفاده که باعث تسهیل در یافتن اطلاعات تکمیلی و مورد نیاز در ارتباط با سرویس وب خواهد بود. ماهیت برخی از اطلاعات مرتبط با یک سرویس وب نیز بگونه ای است که امکان استقرار آنان بر روی کارگزار وجود نداشته و می بایست از لینک های مورد نظر و معرفی شده توسط کارگزار بمنظور اخذ اطلاعات تکمیلی استفاده گردد (اطلاعات مرتبط با ملزومات مورد نیاز برای تائید اعتبار) .
ارتباط بین کارگزار و مصرف کننده سرویس : اولین و در عین حال مهمترین نوع ارتباط بین مصرف کنندگان سرویس وب و کارگزار سرویس وب ، جستجو برای یافتن سرویس وب است . کارگزاران می بایست تسهیلات لازم در خصوص جستجوی سرویس های وب را فراهم تا امکان یافتن آنان بسادگی و با سرعت مناسب برای مصرف کنندگان ، فراهم گردد .
ریجسترهای UDDI : کارگزاران ، بمنظور ارائه سرویس های وب از رویکردهای متعددی استفاده می شود . یکی از ساده ترین رویکردهای موجود در این زمینه ، استفاده از یک روش خاص با توجه به هدف مورد نظر برای مبادله اطلاعات و الزام تمامی همکاران تجاری برای تبعیت از آن است . در این رویکرد ،عملا” به یک کارگزار نیاز نخواهد بود . مثلا” برخی سازمانها از مبادله اطلاعات الکترونیکی ( EDI:Electronic Data Interchange ) استفاده و بسادگی مستندات EDI مورد نیاز همکاران تجاری را بر روی سایت سازمان خود قرار می دهند .در رابطه با رویکرد فوق ، می بایست به این نکته ( مسئله) اشاره نمود که روش فوق ، مکانیزم مناسب و ساده ای برای یافتن فعالیت های تجاری خارجی و سازگار با فعالیت تجاری سازمان مربوطه ، نخواهد بود .
یکی دیگر از رویکردهای موجود در این زمینه ، الزام تمامی همکاران تجاری برای استقرار یک فایل خاص بمنظور تشریح سرویس وب بر روی سایت های خود می باشد . در ادامهجستجو کننده وب می تواند بصورت اتوماتیک به یک URL ریجستر شده، دستیابی و ایندکس مناسبی از هر یک از فایل های تشریح سرویس های وب که بر روی هر یک از سایت ها پیدا می نماید ، ایجاد نماید . یک کارگزار سرویس وب می تواند در ادامه یک Portal را ایجاد که امکان دستیابی به ایندکس هائی که جستجو کننده وب آنها را ایجاد نموده است ، فراهم گردد. اتکاء و وابستگی به جستجو کنندگان وب برای ارائه ایندکس های سرویس های وب دارای مسائل مشابهی با روش استاندارد موتورهای جستجو است که ما امروزه با آن سروکار داریم . مشکل اساسی رویکرد فوق ، عدم وجود مکانیزم لازم بمنظور اطمینان از انسجام و یکنواختی در فرمت تشریح سرویس و ردیابی آسان و آگاهی از زمان مورد نظر دررابطه تغییرات اعمال شده است . همانگونه که ممکن است یک موتور جستجوی وب تعداد زیادی لینک غیر معتبر را برگرداند ، استفاده از روش فوق در ارتباط با سرویس های وب نیز ممکن است نتایج غیر معتبری در ارتباط با تشریح سرویس ها را ارائه نماید.
رویکرد کارگزاری ، که در ارتباط با سرویس های وب انتخاب شده است ، مبتنی بر یک ریجستری توزیع شده از بنگاههای تجاری و تشریح سرویس های مربوطه آنان با فرمت XML است . راه حل ارائه شده بمنظور پیاده سازی رویکرد فوق و برطرف نمودن مسئله یافتن سرویس های وب ، UDDI ) Universal Description,Discovery, and Integration ) نامیده می شود .

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

web service description language

web service description language

مدل برنامه نویسی سرویس های وب

بمنظور پیاده سازی و یا استفاده از یک سرویس وب ، لازم است با ویژگی های اساسی مدل برنامه نویسی سرویس های وب آشنا شویم .
پروتکل های وب : اولین ویژگی مدل برنامه نویسی سرویس های وب ، پروتکل ارتباطی است که معمولا” HTTP خواهد بود. پروتکل HTTP ، بطور ذاتی مفهوم استفاده از یک متد را حمایت نمی نماید . با توجه به محدودیت فوق ، مصرف کنندگان سرویس های وب اغلب از XML-Based SOAP ، بر روی HTTP برای فراخوانی ( صدا زدن ) متدهای سرویس های وب استفاده می نمایند . بنابراین ، لازم است پیاده کنندگان دارای دانش مناسبی در ارتباط با پروتکل HTTP و SOAP باشند .
StateLess : اکثر پیاده کنندگان با یک مدل شی Stateful آشنائی لازم را دارند. بعبارت دیگر ، نمونه ای از یک کلاس ایجاد و در ادامه عملیات متفاوتی بر روی شی انجام خواهدشد . بین هر فراخوانی متد ، شی وضعیت خود را نگهداری می نماید . در یک محیط stateless ، شی وضعیت خود را بین فراخوانی ها ، نگهداری نمی نماید. هر وضعیتی که می بایست بین فراخوانی ها نگهداری گردد ، در یک بانک اطلاعاتی و یا کوکی ذخیره می گردد . سرویس های وب اشیائی با رویکردهای سنتی نمی باشند. زمانیکه از ASP.NET بمنظور پیاده سازی یک سرویس وب استفاده می گردد ، می توان از یک کلاس سی شارپ بمنظور پیاده سازی آن استفاده نمود. صفحات ASP.NET برای مراجعه به کلاس فوق ، از یک فایل با انشعاب asmx . استفاده می نمایند. زمانیکه صفحه پردازش می گردد ، یک نمونه از کلاس ایجاد می گردد . مدت زمان حیات صفحه asmx . ، به عمر شی نتیجه محدود و یک نمونه شی متفاوت دیگر سایر فراخوانی ها به متد را پاسخ خواهد داد بنابراین ، کلاس هائی که یک سرویس وب را پیاده سازی می نمایند ، Stateless خواهند بود . با اینکه طراحی سیستم های Stateless در مرحله اول مشکل تر بنظر می آید ولی همزمان با افزایش حجم عملیاتی سیستم ، توان آنان در سرویس دهی افزایش خواهد یافت .
Loosely coupled : در یک برنامه غیر توزیع شده ، اگر هر یک از منابع نرم افزاری مورد نیاز، نظیر یک تابع کتابخانه ای در یک DLL)Dynamic Link Library) ، زمانیکه یک برنامه فعال می گردد در دسترس باشند ، امکان دستیابی به منابع فوق در مدت زمان حیات نرم افزار ، میسر خواهد بود . برای برنامه های توزیع شده ، خصوصا” برنامه های توزیع شده ای که از منابع نرم افزاری بر روی اینترنت استفاده می نمایند ، ممکن است منابع نرم افزاری مورد نیاز همواره در دسترس نباشند. برنامه های توزیع شده که با استفاده از سرویس های وب پیاده سازی می گردند ، می بایست دارای انعطاف لازم و بمراتب بیشتری در ارتباط با منابع نرم افزاری غیرقابل دسترس حتی در زمان اجراء باشند . بنابراین ، راه حل های مبتنی بر سرویس های وب ، می بایست دارای پتانسیل لازم بمنظور پیکربندی مجدد و پویای خود باشند (در مواردیکه منبع مورد نیاز دردسترس نمی باشد ) .

فرمت عمومی داده

فرمت عمومی داده در سرویس های وب ، XML است . در این رابطه ذکر نکات زیر ضروری است :
• پروتکل SOAP مبتنی بر XML است .
• داده برگردانده شده از یک سرویس وب ، یک سند XML است .
• سرویس های وب با استفاده از اسناد XML در یک ریجستری UDDI ریجستر می گردند .
• برنامه های ASP.NET با استفاده از فایل های پیکربندی XML پیکربندی می گردند .

ادامه مطلب