تبلیغات
NiceSoft - وب سرویس ، افقى تازه در جهانى سازى كاربردها

وب سرویس ، افقى تازه در جهانى سازى كاربردها

تاریخ:شنبه 22 آبان 1389-07:39 ب.ظ

بی ترید دوستان میدونن که فن آوری جدید مطرح شده از دات نت 3 به بعد بنام WCF به نوعی فن آوریهای وب سرویس و Remoting رو پوشش میده ولی خوندن این مقاله که چندین سال پیش جهت معرفی وب سرویس نوشتم خالی از لطف نیست علی الرغم تغییر فن آوری مفاهیم همچنان پا برجاست ، علاوه بر اینکه وب سرویس با توجه به سادگی هنوز هم طرفدارهای خودشو داره و کامل توسط مایکروسافت پشتیبانی میشه ، با این حال همین جا قول شرح مفصل WCF رو به دوستان عزیز میدم.


براى درك اهمیت وب سرویسها بهتر است ابتدا نگاهى اجمالى به تاریخچه پروتكلهاى درخواست متدهاى راه دور ( RMI ) داشته باشیم . هر كدام از روشهاى RMI كه قبل از وب سرویسها بوجود آمدند حل یكسرى از مشكلات را بر عهده گرفتند اما همانگونه كه خواهیم دید وب سرویسها نه تنها تمام محدودیتها و مرزهاى سكوهاى مختلف نرم افزارى را پشت سرگذاشته اند بلكه پاسخى جامع به تمام مشكلات هستند .

در طول تاریخ محاسبات تمام عملیات شبكه اى توسط سیستمهاى عامل انجام گردیده اند ، سیستم عامل Unix اولین فراهم آورنده امكانات شبكه اى بود . محاسبات شخصى آهسته تر پیش میرفتند ، نرم افزارهاى مایكروسافت و اپل تا اواسط ١٩٩٠ از پروتكلهاى شبكه اى پشتیبانى نمى كردند . گرچه شركتهاى Novell و Banyan در این زمینه پیشتازتر بودند اما آنها نیز تنها در سطح سیستم عامل از امكانات شبكه اى پشتیبانى مى كردند . در اصل مفهوم شبكه در دنیاى كامپیوتر جهت پیاده سازى ارتباطات راه دور تا هنگام گسترش شبكه جهانى وب خیلى مطرح نگردید .

در اوائل ، سیستم عاملهاى شبكه اى امكاناتى را فراهم مى آوردند كه چندین كاربر بتوانند از یك برنامه كاربردى ( و داده هاى داخلى آن برنامه ) بصورت اشتراكى و همزمان استفاده نمایند كه البته در این سیستم هاى تك سطحى امكان گسترش سیستمها وجود نداشت ولى با بوجود آمدن و گسترش شبكه هاى كامپیوترى مجال توسعه و گسترش سیستمها نیز بوجود آمد و با توجه به این نیاز مفهوم واسط درخواست اشیاء (ORBs) مطرح گردید كه از آن جمله میتوان به MTS مایكروسافت و CORBA اشاره نمود . این واسطهاى درخواست اشیاء لایه واسط كاربرى را از لایه منطق تجارى مجزا نمودند .

از طرفى دیگر پروتكل HTTP در سال ١٩٩٠ بوجود آمد ، گرچه قبل از آن چندین پروتكل دیگر نظیر Gopher نیز بوجود آمده بودند اما چیزى كه HTTP را از دیگران متمایز نمود قابلیت توسعه پذیرى در مقابل زبانهاى محیط وب از جمله HTML و نیز قابلیت انعطاف فوق العاده در لایه انتقال پروتكل TCP/IP بود .

بنابراین با استفاده از HTTP قابلیت انتقال بسیارى از قالبهاى داده اى بصورت گسترش یافته و بدون شرط خاصى امكان پذیر گردیدند . در طول ١٠ سال بعد پروتكلهاى سطح پائین توسط سیستمهاى عامل شبكه اى پشتیبانى گردیدند و در اینترنت با استفاده از پروتكلهاى SMTP و FTP امكان انتقال فایلها بر روى سرویسهاى توزیع یافته امكانپذیر گردید .

بعد از آن با بوجود آمدن مفهوم فراخوانى روالهاى راه دور (RPC) امكان گسترش برنامه هاى كاربردى فراهم گردید البته این مفهوم كاملا" به سكوهاى نرم افزارى وابستگى داشت ، براى مثال فراخوانى روالهاى راه دور (RPC) در سیستم عامل Unix با CORBA و در سیستمهاى مایكروسافتى با DCOM پیاده سازى گردیدند .

با گسترش شبكه هاى گسترده جهانى (WAN) پیاده سازى كاربردها براى سیستمهاى تجارى بزرگ نیز شروع به گسترش نمودند . بعنوان یك نیاز براى این گسترش برنامه نویسان شروع به حل مسائلى از قبیل میزان پذیرى قابلیت اطمینان و سازگارى با مدلهاى برنامه نویسى سنتى نمودند .

محیطهاى پیاده سازى چند سطحى شروع به جدا سازى داده ها ، پردازشها و لایه واسط كاربرى برنامه هاى كاربردى بر روى چند ماشین متصل به شبكه نمودند و با این عمل برنامه هاى كاربردى بسیار میزان پذیرتر و قابل اطمیتان تر در مقابل گسترش و افزونگى اطلاعات گردیدند .

براى سالها شركتهاى مایكروسافت و سان در رابطه با مسئله RPC با هم به رقابت مى پرداختند . CORBA در مقابل DCOM ( البته CORBA توسط گروه مدیریت اشیاء بوجود آمد و توسعه یافت ) و این مسئله همچنان ادامه داشت تا اینكه شركت سان RMI را براى Java ارائه نمود و با ایجاد این پروتكل دیگر سه پروتكل اشیاء توزیع یافته وجود داشت .

مشكل اساسى پروتكلهاى RMI / CORBA / DCOM پیچیدگى پیاده سازى آنها مى باشد . در هر یك از این پروتكلها ، انتقال اطلاعات بر اساس استاندارهاى خاص تولید كنندگان آنها بوده كه این امر سازگارى ارتباطات را نقض میكند . براى مثال اگر یك شركت از DCOM استفاده كند نخواهد توانست با شركتى كه از CORBA استفاده میكند ، ارتباط برقرار نماید.



از جمله مشكلات اساسى این سه روش میتوان به موارد زیر اشاره نمود :

١- قالب انتقال اطلاعات در هر یك از این سه روش با یكدیگر متفاوت و وابسته به سیستم عامل بوده و تنها شامل اطلاعات مورد نیاز سیستم عامل خاص خودشان میباشند كه این امر باعث میشود كه آنها نتوانند اطلاعاتشان را با یكدیگر به اشتراك بگذارند.

٢- روشها و نحوه انتقال اطلاعات در این سه روش متفاوت و خاص خودشان میباشد . مثلا" براى انتقال اطلاعات
در DCOM از فناورى ADO/RDS استفاده میشود در صورتیكه در RMI از JDBC و در عمل آنها هیچوقت با هم نمیتوانند بخوبى كار نمایند.

٣- مسئله یافتن سرویسهاى آماده در این سه روش حتى بر روى یك شبكه كوچك نیز مشكل ساز است .

در ادامه به توضیح اینكه وب سرویس چیست ؟ و چگونه بر این مشكلات فائق میآید ؟ میپردازیم .

وب سرویس نرم افزارى است كه دسترسى به اطلاعات و نیز سیستمهاى پردازش اطلاعات را بصورت توزیع یافته فارغ از سكوهاى مختلف سخت افزارى و نرم افزارى با استفاده از پروتكلهاى استاندارد تبادل اطلاعات اینترنتى فراهم مى آورد. به بیان ساده وب سرویس مولفه اى از یك كاربرد قابل دسترس توسط پروتكلهاى ارتباطى استاندارد مى باشد .

( پروتكل اصلى ارتباطى مورد استفاده SOAP است كه اكثرا" استاندارد XML بوده كه با پروتكل انتقالى HTTP منتقل میگردد ) .


یك وب سرویس كه بر روى یك سرویسگر در حال اجرا مى باشد ، میتواند در خواست یك كامپیوتر راه دور را دریافت كرده و بعد از پردازشهاى لازم اطلاعات مورد نیاز كامپیوتر درخواست كننده را برایش ارسال نماید . براى مثال با استفاده از یك برنامه كاربردى میتوان آخرین اطلاعات و اخبار را از یك وب سرویس ارائه اطلاعات و اخبار دریافت نمود .

زمینه استفاده از وب سرویس بقدرى گسترده و متنوع است كه میتواند محدوده اى از محاسبه دو عدد ساده تا تمام محاسبات مالى و اعتبارى یك شركت بزرگ و یا محاسبات پیچیده موشكهاى فضایى را در بر بگیرد .

وب سرویسها مولفه هاى اساسى ساختن پردازشهاى توزیع یافته بر روى اینترنت مى باشند و كاربردها میتوانند با استفاده از وب سرویسها فارغ از اینكه كجایند و چگونه اند ساخته شوند.

وجود مراحل زیر براى عملیاتى شدن یك وب سرویس ضرورى مى باشد :

١ - تعریف وب سرویس توسط ایجاد و مشخص نمودن واسط هاى كاربرى و روشهاى درخواست آن .




٢- انتشار وب سرویس بر روى یك یا چند انباره جستجوى اینترنتى یا اینترانتى. ٣- محل وب سرویس باید براى درخواست كننده سرویس مشخص گردد. (توسط جستجو) ٤- وب سرویس باید براى درخواست كننده مجاز قابل دسترسى باشد. ٥- وب سرویس باید امكان حذف از انباره جستجو را وقتى دیگر نیازى به آن نیست را داشته باشد .
همانگونه كه در شكل ٢ دیده میشود در معمارى پیاده سازى وب سرویس احتیاج به سه عمل اساسى انتشار ، یافتن و تخصیص میباشد.

بدین ترتیب كه فراهم آورنده سرویس سرویس را به واسط سرویس ارائه میدهد ( عمل انتشار) و درخواست كننده سرویس با استفاده از واسط سرویس ، سرویس مورد نظر خود را یافته (عمل یافتن ) و به آن دسترسى پیدا میكند (عمل تخصیص) .



قبل از اینكه به توضیح دقیق تر چگونگى عملكرد وب سرویس بپردازیم بهتر است نگاهى اجمالى به تعاریف SOAP ، WSDL و UDDI داشته باشیم .

( SOAP ( Simple Object Access Protocol

SOAP پروتكل ارتباطى وب سرویس براساس XML میباشد. یكى از ویژگیهاى SOAP نحوه تشریح نمایش داده هاى كاربردها در قالب XML و نحوه انجام فراخوانى روالهاى راه دور (RPC) میباشد . بدین صورت كه یك پیام SOAP (شامل فراخوانى یك تابع و ارسال پارامترها به آن تابع) از سمت كاربر ارسال میگردد و سرویسگر در پاسخ به این پیام با اجراى آن تابع نتیجه بدست آمده را در قالب یك پیام SOAP دیگر باز مى گرداند.

از دیگر ویژگیهاى برجسته SOAP استفاده از پروتكل HTTP میباشد. البته برخى از پیاده سازیهاى SOAP از دیگر پروتكلهاى ارتباطى نیز میتوانند استفاده نمایند ولى تقریبا" تمام وب سرویسها از پروتكل فراگیر HTTP استفاده مى نمایند. ( لازم به ذكر است كه امروزه پروتكل HTTP پروتكل اصلى وب بوده و ساختارهاى امنیتى ، بازرسى و تقسیم بار كارى بطور گسترده اى آن را پشتیبانى میكنند) .


( WSDL ( Web Services Description Language

مستند WSDL متنى است در قالب XML حاوى اطلاعاتى بیانگر اینكه وب سرویس به چه اطلاعاتى احتیاج داشته و چه اطلاعاتى را باز میگرداند .

مستند WSDL شامل اطلاعات مكان و نحوه استفاده از وب سرویس از قبیل پارامترهاى ورودى و خروجى هر وب سرویس میباشد . كاربر احتیاجى به دانستن ساختار و دستورات WSDL نخواهد داشت چرا كه اكثر نرم افزارهاى طراحى وب سرویس بصورت خودكار مستند WSDL لازم را نیز تولید مى نمایند .

( UDDI ( Universal Description Discovery and Integration

UDDI پایگاهى جهت جستجوى وب سرویسها میباشد. استاندارد UDDI پایگاهى جهت متمركز نمودن اطلاعات وب سرویسها فراهم مى آورد .

پرس و جو از این پایگاه با استفاده از پروتكل SOAP انجام مى پذیرد. اطلاعات درون پایگاه UDDI به سه دسته صفحات سفید (كه شامل اطلاعات شركتها و توضیحات متنى درباره آنها مى باشند) ، صفحات زرد ( شامل اطلاعات توانایى هاى فنى شركتها در گروه بندى هاى مختلف میباشند ) و صفحات سبز (كه شامل اطلاعات فنى و تكنیكى در مورد وب سرویسها میباشند) تقسیم میگردند . (شكل ٣)





همانگونه كه در شكل ٤ ملاحظه میشود ، درخواست كننده و فراهم آورنده وب سرویس هر دو باید توانایى تولید و همچنین ترجمه پیامهاى SOAP و نیز توانایى برقرارى ارتباط از طریق شبكه را داشته باشند . معمولا" سرویسگر SOAP كه بر روى سرویسگر وب اجرا میگردد این وظایف را انجام میدهد.

برقرارى این ارتباط به چهار مرحله زیر تقسیم میشود :

١ – درخواست كننده یك وب سرویس ابتدا یك پیام SOAP مبنى بر درخواست آن از ارائه دهنده وب سرویس مورد نظر تولید مینماید. ارائه دهنده خدمات SOAP (براى مثال یك اجراكننده سمت كاربر SOAP ) با استفاده از این پیام SOAP در كنار آدرس شبكه ارائه دهنده سرویس با برقرارى ارتباط با پروتكل سطح شبكه (مثل HTTP) اقدام به ارسال پیام بر روى شبكه میكند.

٢- این پیام بر روى شبكه ( اینترنت یا اینترانت ) به ارائه دهنده خدمات SOAP سمت ارائه دهنده سرویس (براى مثال یك سرویسگر SOAP) انتقال میابد. سرویسگر SOAP بعد از تبدیل پیام آن را به سرویسگر وب ارسال میكند. (سرویسگر SOAP توانایى تبدیل پیامهاى XML به اشیاء قابل استفاده تحت یك زبان خاص براى استفاده یك برنامه كاربردى را دارا مى باشد ).

٣- سرویسگر وب با پردازش درخواستى كه توسط پیام مطرح گردیده ، پاسخ را تولید میكند . قطعا" پاسخ براى انتقال باید به یك پیام SOAP تبدیل شود كه این عمل نیز توسط اجرا كننده سمت سرویسگر SOAP انجام شده و در نهایت پیام SOAP تولیدى بر روى شبكه براى درخواست كننده ارسال میگردد.

٤- بعد از دریافت پیام SOAP توسط گره درخواست كننده سرویس در شبكه ، پیام SOAP رسیده به اشیاء قابل استفاده توسط زبان برنامه نویسى مبداء تبدیل میگردد و نهایتا" نتیجه توسط برنامه كاربردى استفاده كننده از وب سرویس نمایش داده میشود.

چگونگى روند عملیاتى وب سرویس
١- ارائه دهنده وب سرویس بعد از تولید یك وب سرویس ، آنرا جهت بوجود آوردن امكان جستجو و یافتن آن توسط كاربران در پایگاه اطلاعاتى UDDI ثبت میكند.

٢- درخواست كننده وب سرویس پایگاه اطلاعاتى UDDI را جهت یافتن وب سرویس مورد علاقه خویش جستجو میكند.

٣- بعد از پیدا شدن وب سرویس در UDDI محل مستند WSDL مربوط به وب سرویس درخواستى مشخص میگردد ( مستند WSDL شامل جزئیات فراخوانى وب سرویس شامل اطلاعاتى از قبیل پارامترها و پروتكل ارتباطى وب سرویس مى باشد ) .

٤- با استفاده از اطلاعات بدست آمده از مستند WSDL كاربر میتواند با نوشتن یك برنامه ساده و با استفاده از پروتكل SOAP از وب سرویس استفاده نماید .





  همانگونه كه دیدیم وب سرویسها تمام محدودیتها و مرزهاى سكوهاى مختلف نرم افزارى را پشت سرگذاشته اند و راه حلى استاندارد و جامع براى ارتباطات راه دور و توزیع یافته ارائه نموده اند.

خوشبختانه ابزار و امكانات زیادى براى برنامه نویسان در محیط هاى مختلف جهت طراحى و پیاده سازى وب سرویسها وجود دارد كه از آن جمله میتوان به Open Net(Sun) ، .NET(Microsoft) ، Web Services(IBM) و E-services(HP) اشاره نمود.

امروزه وب سرویس با توجه به توانایى هایش تبدیل به یك روش استاندارد یكپارچه سازى تجارت الكترونیك گردیده است و استفاده از آن بعنوان یك مدل جدید معمارى نرم افزار اجتناب ناپذیر گردیده است. بررسیهاى بعمل آمده توسط موسساتى نظیر گروه گارتنر نشان میدهد كه حدود ٥٢% از شركتهاى آمریكایى تا پایان سال ٢٠٠٣ از فناورى وب سرویس استفاده خواهند نمود و این روند در سال ٢٠٠٤ به اوج خود خواهد رسید .

در ادامه براى روشنتر شدن نحوه پیاده سازى وب سرویسها نگاهى سریع به نحوه تولید و استفاده یك وب سرویس بصورت بسیار ساده با استفاده از فناورى .NET مینمائیم .یك وب سرویس(در فناورى .NET) یك فایل ASP.NET است كه یك شى با یك مجموعه از روالها را كه از طریق اینترنت قابل دسترسى هستند را تعریف میكند . با این امكان شما میتوانید یك وب سرویس با یك مجموعه از اشیاء قابل دسترس توسط هر برنامه كاربردى بر اساس XML را ایجاد نمائید .

براى ایجاد یك پروژه وب سرویس بعد از اجراى Visual Studio .NET كافیست با انتخاب گزینه New Project و سپس قالب وب سرویس از درون پوشه Visual Basic Projects و با انتخاب نام وب سرویس، گزینه Ok را انتخاب نمائید . با انجام این عمل یك كلاس وب سرویس با نام انتخابی( كه بعدا" براى دسترسى به روالهاى وب سرویس از آن استفاده میشود ) ایجاد میگردد ( شكل ٥) .

هر فایل كلاس سرویس با پسوند ASMX نشان دهنده یك وب سرویس میباشد .

شما میتوانید كلاسهاى دیگرى نیز در این پروژه تعریف كنید اما تنها یك كلاس وب سرویس میتواند در یك ماجول كد وجود داشته باشد ، ASP.NET دیگر كلاسهاى را كه از كلاس پایه System.Web.Services.Webservice منشعب شده باشند را نادیده میگیرد .



براى ایجاد چند وب سرویس در یك پروژه باید از چند فایل ASMX براى نگهدارى وب سرویسهاى مختلف استفاده نمود .





بعد از ایجاد یك پروژه وب سرویس به تعریف توابع ( كارهاى كه وب سرویس باید انجام دهد‌) كه در این مثال ساده به تعریف توابع جمع و تفریق دو عدد میپردازیم . ( شكل ٦ )


ابتدا براى ایجاد یك كلاس وب سرویس از شكل دستورى زیر استفاده میكنیم :

Imports System.Web.Services

<WebService (Namespace:="namespace")>

Public Class Classname

Inherits Webservice
Mehthod exposed by the web service
End Class
 
دستور Imports فضاى نامى System.Web.Services كه شامل كلاسها و صفات سرویسهاى وب مبتنى بر XML از قبل تعریف شده براى ASP.NET میباشند را براى این كلاس قابل دسترس مینماید .

كه همانگونه كه در كد كلاس خواهیم دید با استفاده از دستور Inherits تعریف شده كلاس Webservice از این فضاى نامى به ارث برده خواهد شد.

در صورتیكه بخواهیم وب سرویس را بر روى اینترنت قرار دهیم براى جلوگیرى از تداخل با دیگر وب سرویسهاى قرار گرفته بر روى اینترنت باید فضاى نامى وب سرویس را مشخص نمائیم .


بطور پیش فرض ASP.NET فضاى نامى <http://tempuri.org/> را بعنوان فضاى نامى در نظر میگیرد كه همانگونه كه گفته شد براى قرار دادن وب سرویس بر روى اینترنت باید آن را تغییر داد. براى این كار بهتر است URL منحصر بفردى كه در اختیار میباشد ( مثلا" نام حوزه اینترنتى شركت یا موسسه) را براى این كار در نظر گرفت.

<WebService (Namespace:="http://www.companyname.com/webservices")>


براى تعریف متدهاى كلاس وب سرویس براى آنكه سرویس گیرنده ها بتوانند آنها را شناسائى و استفاده نمایند باید از تعریف <WebMethod()> استفاده نمائیم. WebMethod نیز داراى صفاتى است كه میتوان از آنها استفاده نمود .


Description یكى از این صفات بوده كه متنى است توصیفى كه توسط ASP.NET براى مستندسازى استفاده شده و در مستند WSDL نیز منعكس میگردد .


براى آزمایش این وب سرویس میتوان آدرس آن را در یك مرورگر وارد نمود ( البته با اجراى مستقیم كد ایجاد شده در محیط Visual Studio .NET میتوان همین كار را انجام داد ).




همانطور كه در (شكل ٧ ) ملاحظه مى شود با فراخوانى آدرس وب سرویس ( با نام Service١.asmx ) لینك توابع وب سرویس در اختیار قرار میگیرند كه با انتخاب هر یك از آنها مقادیر ورودى براى این توابع درخواست شده و جواب این توابع بصورت یك فایل XML نمایش داده خواهند شد . شكلهاى ( ٨و٩ ).





بدین ترتیب وب سرویس ما آماده استفاده توسط كاربران خواهد بود براى نوشتن یك برنامه سمت كاربر براى استفاده از این وب سرویس كافى است ابتدا یك پروژه برنامه كاربردى ویندوز ایجاد نمائیم .

New Project > Visual Basic Projects > Windows Application

و براى استفاده از وب سرویس با استفاده از آدرس وب آن یك ارجاع به آن برقرار كنیم (شكل ١٠)

( Project >Add Web Reference)



و سپس با ایجاد یك شى جدید از روى كلاس وب سرویس در یك ماجول كد میتوان با نوشتن یك یا چند تابع از توابع درون وب سرویس استفاده نمود .



و با فراخوانى آن تابع در فرمهاى برنامه بسادگى میتوان از وب سرویس در برنامه كاربردى استفاده نمود .( شكل ١٢ و ١٣)





حاصل جمع دو عدد با استفاده از وب سرویس



نوع مطلب : دات نت 

Сialis
جمعه 26 مرداد 1397 03:44 ق.ظ
obviously like your website but you need to check the spelling on several of your posts.
Many of them are rife with spelling issues and I in finding it very troublesome
to tell the truth however I'll surely come again again.
Bungling Ben
یکشنبه 19 فروردین 1397 02:43 ب.ظ
Have you been Lost in WordPress?
http://garciniacambogiapremium.net
پنجشنبه 16 فروردین 1397 02:08 ب.ظ
Have actually been taking little over a month.
joma jewellery karma bracelet
دوشنبه 13 فروردین 1397 09:47 ب.ظ
Like many of the design for the Elves, the EvenStar has an Art Nouveau
fashion that in very organic is tone.
http://garciniacambogiapremium.net/garcinia-down-under
دوشنبه 13 فروردین 1397 11:06 ق.ظ
Have actually been taking little over a month.
what is joma jewellery made from
دوشنبه 13 فروردین 1397 09:24 ق.ظ
LVMH is a luxury goods company. It has completely different
businesses resembling wines & spirits, vogue & leather-based items,
watches &jewellery, and perfumes &costumes.
Robert's Blow Boy
دوشنبه 13 فروردین 1397 03:28 ق.ظ
Redistribution of wide range complete speed ahead.
Nintendo Switch
جمعه 24 آذر 1396 04:31 ب.ظ
سلام! این اولین بازدید من در وبلاگ شماست! ما یک تیم از داوطلبان هستیم و
شروع یک پروژه جدید در یک جامعه در
همان طاقچه وبلاگ شما به ما اطلاعات مفیدی ارائه داد
کار بر روی شما کار برجسته ای انجام دادید.
Nintendo Switch Giveaway
سه شنبه 7 آذر 1396 11:44 ب.ظ
سلام. من وبلاگ خود را با استفاده از msn پیدا کردم. این مقاله فوقالعاده خوب نوشته شده است.
مطمئنم که آن را نشانه گذاری کرده ام و برگشتم
برای خواندن بیشتر اطلاعات مفید خود را. از پستتان ممنونم.
مطمئنا برگشتم
best psychic medium reading
جمعه 12 آبان 1396 07:42 ب.ظ
همانطور که این مقاله را در این وب سایت پیدا کردم بسیار ساده است که هر موضوعی را در وب در مقایسه با کتابهای درسی پیدا کنم.
feet pain
شنبه 18 شهریور 1396 04:00 ق.ظ
WOW just what I was searching for. Came here by
searching for foot pain
lowlybelfry295.jimdo.com
جمعه 13 مرداد 1396 01:11 ب.ظ
What i do not understood is actually how you're now not
really much more smartly-preferred than you might be now.

You are so intelligent. You realize thus considerably
with regards to this subject, produced me for my part consider it from numerous varied angles.
Its like men and women don't seem to be interested except it is something to
accomplish with Girl gaga! Your individual stuffs nice.
Always maintain it up!
Dora
دوشنبه 25 اردیبهشت 1396 06:17 ق.ظ
Thanks for one's marvelous posting! I quite enjoyed reading it,
you're a great author.I will ensure that I bookmark your blog and definitely will
come back from now on. I want to encourage continue your great posts, have a
nice day!
BHW
دوشنبه 28 فروردین 1396 12:44 ب.ظ
You really make it seem so easy with your presentation but I find
this matter to be really something that I think I would never understand.

It seems too complicated and extremely broad for
me. I am looking forward for your next post, I will try to get the
hang of it!
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر