تفاوت زبان های برنامه نویسی در داده های خروجی
با سلام
برای من یه سوال مطرح هست و اونم اینه که فرض کنید که ما میخوایم به عنوان مثال یه فایل یکسان رو با استفاده از دو تا اپلیکیشن که یکی با زبان سی شارپ و دیگری با جاوا نوشته شده به طرف سرور ارسال کنیم.
آیا فایل های خروجی این دو تا زبان که به طرف سرور فرستاده میشه، از لحاظ ساختاری با هم متفاوت هستند؟
منظورم اینه که فایلی که با سی شارپ به طرف سرور داده شده با فایلی که با جاوا به طرف سرور فرستاده شده ان، یکسان هستن و یا نه؟
5 پاسخ
ممنون از جناب آقامیری عزیز
ببینید من یک کم در فهم API مشکل پیدا کردم.
در تعریفی که در اینترنت اومده نوشته که "معمولا API برای این استفاده میشه که دو تا اپلیکیشن با هم بتونن ارتباط برقرار کنن". برداشتی که من دارم اینه که پس با توجه به نام خودش، API در حقیقت یک رابط مشترک و یک مترجم هستش که دو تا برنامه جداگانه که پیام های ورودی و خروجی شان با هم دیگه متفاوت هستش و در حقیقت به دو تا زبان متفاوت با هم صحبت می کنند رو به هم متصل می کنه و حرف های یک طرف رو به اون یکی میفهمونه و بالعکس. البته این یکی از مزایای API هستش.
فرض کنین من یک نرم افزار دارم که به عنوان مثال میخوام در اون از مپ های به روز شده استفاده کنم (مثل همین نرم افزار های مسیریابی). خب من میام و به عنوان مثال از Google Map API استفاده می کنم. تا جایی که من میدونم برای این کار، نرم افزار من بر بستر HTTP یک Request به طرف این API میفرسته. اون هم بعد از ارسال درخواست به سرور مربوطه و دریافت Response اونا رو مجددا بر بستر HTTP برای کلاینت میفرسته که شامل یکسری داده های مربوط به نقشه هستش و نرم افزار هم اونا رو به کاربر نشون میده و تمام.
حالا آیا نمیشد این API رو حذف کنیم؟ چون در هر حال خود سرور گوگل مپ هم دریافت و ارسال هاش رو با استفاده از http request و response ها انجام میده و کلاینت هم از همین http request و response ها داره استفاده میکنه یعنی هر دو از یک فرمت استاندارد استفاده می کنند که برای هر دو قابل فهم هستش. پس دیگه چه نیازی به یک مترجم یا همون aPI این وسط هستش؟
ممنونم
راستش یه مقدار زیاد مفهمومی شد قضیه ! تا جایی که من می دونم API اون برنامه ای هست که قراره یک request رو بگیره و response رو تحویل بده. ( به سایر برنامه ها نه browserها )
خب اگه سرویس API نباشه ، کی می خواد این پردازش رو انجام بده ؟ درسته که API داره ورودی رو میگیره ولی از اون طرف شروع می کنه با برنامه داخلی صحبت کردن ، شاید خودش هم کارهایی بکنه و بعد دوباره خروجی رو بگیره و فرمت response رو بسازه. به هر حال تو هر برنامه ای باید یه سرویسی این کار رو بکنه.
ضمنا API فقط کار اتصال دو برنامه از دو زبان رو نداره، شاید دو برنامه هر دو هم با c# باشند ولی یکیشون رو من نوشته ام و یکیشون رو شما. حالا من یه فرمت درست می کنم و می گم شما هر سوالی داشتید از اون فرمت بپرس ... ، شما هم ممکنه یه فرمت خودت بسازی و من رو ملزم کنی رعایتش کنم.
دوست عزیز این موضوع ربطی به زبان برنامه نویسی نداره بلکه مربوط به پروتکل , استاندارد و تصمیم برنامه نویس داره که بخواد چطوری کارش رو انجام بده.
مثلا شما به عنوان برنامه نویس میخوای یه مرور گر وب بنویسی هیچ فرقی نداره که از چه زبانی استفاده می کنی. بلکه مهم اینه که از پروتکل HTTP استفاده کنی که همه جا یکسانه مگر اینکه برنامه نویس بخواد از یه پروتکل خاص که خودش درست کرده استفاده کنه که بازم ربطی به زبان نداره
از کجا به کجا رسیدید ؟
ببنید سوال اولتون : یک سروری دارید که یک فایلی رو می خواد بگیره . مثلا تامین اجتماعی یا دارایی فرمت خودش رو داره . شما با c# ، جاوا ، فاکس پرو یا هر زبان دیگه که می خواید کار کنید ، باید همون فرمت رو بسازید و اصلا ربطی نداره و اون سرور هم چک نمی کنه شما با چی اون فایل مثلا text رو ساختید. (اصلا خودتون یه notepad باز کنید و فایل بسازید)
بحث API کلا برای اینه که یه نرم افزار یا سرور بیاد یه سرویسی رو به بیرون از خودش ارائه بده ، مثلا بگه یه رشته عددی رو تو یه فرمت خاص بدید اون بهتون می گه آیا یک کد ملی صحیح هست یا نه ، یا مثلا یه xml بهش بدید ، شامل کد ملی و نام و نام خانوادگی ، بهتون میگه آیا با هم مطابقت دارند یا نه.
می بینید که وقتی یه فرمت استاندارد تبادل اطلاعات این وسط باشه ، دیگه اصلا اهمیتی نداره که زبان نرم افزار شما و سرور چی هستند. فقط باید این رشته های رد و بدل شده استاندارد باشند.
ممنون
پس اگه این طوری هستش و فایل ها یکسان هستند چرا از API استفاده می کنیم؟
منظورم اینه که فرض کنید که نرم افزاری که ما داریم می نویسیم فرض کنید داره از سی شارپ استفاده میکنه اما سرور با جاوا کار میکنه، چرا لازم هستش از API استفاده کنیم؟
ممنون