ওয়েব অপির জন্য কেন ডাব্লুএসডিএল ধরণের সমর্থন নেই?


33

তাই আমি কেবল নেট নেটপিএইপি দিয়ে শুরু করছি এবং একটি জিনিস যা আমি এখনই লক্ষ করছি যে হ'ল এপিআই কেমন লাগে এবং কীভাবে সেবন করা উচিত তা নির্ধারণ করার কোনও চুক্তি নেই (প্রতিটি ক্রিয়া থেকে অনুরোধ / প্রতিক্রিয়া), এটি সাধারণত আকারে ডাব্লুসিএফ / সাবান জন্য একটি ডাব্লুএসডিএল।

এটি আমার কাছে মনে হচ্ছে এটি এমন একটি যা খুব মূল্যবান এবং আপনার API এর গ্রাহকদের জন্য জীবনকে অনেক সহজ করে তুলবে।

এর কোন কারণ নেই? এমন কোনও প্রোগ্রামিং দৃষ্টান্ত বা নীতি আছে যা সম্পর্কে আমি অজানা? আমি কি একটি উপায় তৈরি করতে পারি?


3
সম্পর্কিত: লোকেরা কেন মনে করে যে এসওএপি হ্রাস করা হয়? tl; dr: সাবান এবং ডাব্লুএসডিএল 2007, এবং আরইএসটি বর্তমানে বোমাটি।
রবার্ট হার্ভে

বেশিরভাগ জায়গায় ব্যবহৃত কিছু আইপিএল সরবরাহকারী অনেক জায়গাতে সাধারণত বিভিন্ন ভাষার লাইব্রেরি থাকে যা আপনি তাদের এপিআই ব্যবহার করতে পারবেন। যে জায়গাগুলি একটি সরবরাহ করে না তার জন্য সাধারণত এটির জন্য একটি মুক্ত উত্স প্রকল্প রয়েছে is উদাহরণস্বরূপ, সি # এর জন্য টিউলিও এখানে, github.com/twilio/twilio-scharp
পিট

1
@RobertHarvey: সাবান নয় অবচিত যেমন এত নিন্দিত : এটা আনুষ্ঠানিকভাবে দ্বারা যে কেহ এটা জানি ঐ জন্য তৈরি এটি বিরুদ্ধে সুপারিশ জানেন যে সুপারিশ করা হয় না হওয়া প্রয়োজন নেই।
ম্যাসন হুইলারের

উত্তর:


23

সাবান, বিশ্রাম এবং মানুষের ক্রিয়েটিভিটি

এসওএপি-এর ডাব্লুএসডিএলের মতো বিবরণী নথির প্রয়োজন কারণ প্রতিটি সংস্থান বিভিন্ন বার্তায় গ্রাস করা যায়, সম্ভাব্য নাম / বার্তাগুলির সীমাবদ্ধতা সম্পর্কে প্রোটোকলে কোনও সংজ্ঞা নেই যা আপনি কোনও সংস্থান ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, এসওএপিতে আপনার ওয়েব পরিষেবা যা ক্লায়েন্টদের কোনও ব্যবহারকারীকে ম্যানিপুলেট করতে দেয় সেই ক্রিয়াকলাপটি উন্মোচন করতে পারে যা ব্যবহারকারীকে বিভিন্ন বিভিন্ন বার্তায় তৈরি করে, যেমন:

addUser
createUser
insertUser

অবশ্যই, এটি কেবলমাত্র কয়েকটি নমুনা বার্তা, কারণ আমি প্রচুর মজার ওয়েব পরিষেবাদি পদ্ধতির নাম দেখেছি। সত্যিই সেখানে সৃজনশীল লোক রয়েছে।

অন্যদিকে, আপনি যদি ওয়েব এপিআই ব্যবহার করে আপনার অন্তর্নিহিত সিস্টেমটি প্রকৃতপক্ষে বিশ্রাম নীতিগুলিকে সম্মান করে থাকেন তবে ক্লায়েন্টকে কেবল এটি জানতে হবে যে আপনার ব্যবহারকারীর নামের একটি সংস্থান আছে, কারণ আপনি এখানে একটি ব্যবহারকারী তৈরি করতে পারবেন এমন 99% সম্ভাবনা রয়েছে পথ

POST /Users

এবং এটি এমন প্রতিটি অপারেশনের জন্য ঘটে যা আপনি এসওএপি বা একটি ওয়েব এপিআই রেস্ট ব্যবহার করে প্রকাশ করতে চান।

এসওএপি হওয়া সত্ত্বেও একটি প্রোটোকল, যা আপনি যা করতে পারেন বা কী করতে পারবেন না তা সীমাবদ্ধ করে রাখুন এবং একটি স্টাইলের আর্কিটেকচার, যা কীভাবে কীভাবে করা যায় তার অনেকগুলি উন্মুক্ত বিন্দু রাখে। আরআরএসটি ওয়েব এপিআইসকে কীভাবে প্রকাশ এবং গ্রহণ করা যায় সে সম্পর্কে কনভেনশনগুলি সংজ্ঞায়িত করার প্রচেষ্টা রয়েছে are


একটি ওয়েব এপিআই বিশ্রাম ডিজাইন করুন

কোনও ওয়েব অ্যাপি কীভাবে বিশ্লেষণ করা যায় তার বিশ্বে আমি সোয়াগারকে উদ্ধৃত করতে পারি । ওয়েব এপিআই আরএসটি-র মতো ডাব্লুএসডিএল তৈরি করার চেষ্টা নয়, তবে ওয়েব এপিআইএস আরএসটি-র বিবরণ দেওয়ার জন্য একটি উন্মুক্ত মান তৈরি করার পক্ষে এটি একটি ভাল প্রচেষ্টা।

সোয়াগার হ'ল রেস্টস্টুল ওয়েব পরিষেবাদি বর্ণনা, উত্পাদন, গ্রাস এবং ভিজ্যুয়ালাইজ করার জন্য একটি স্পেসিফিকেশন এবং সম্পূর্ণ কাঠামোর প্রয়োগ।

আমি সোয়াগারটি প্রচুর ব্যবহার করি এবং সত্যই এটি পছন্দ করি, মূলত সোয়াগার ইউআই যা আপনাকে আপনার ওয়েব এপিআইয়ের জন্য একটি দুর্দান্ত লাইভ কনসোল এবং ডকুমেন্টেশন তৈরি করতে দেয়।

বেশিরভাগ ভাষার জন্য সোয়াগারের অনেকগুলি প্রয়োগ রয়েছে: সি #, জাভা, পাইথন, রুবি ইত্যাদি

আপনি যদি এএসপি। নেট ওয়েব এপিআই ব্যবহার করে থাকেন তবে সোয়াগার.এনইটের মতো সোয়াগার স্পেসিফিকেশনটি স্বয়ংক্রিয়ভাবে উত্পন্ন করার জন্য কিছু প্রকল্প রয়েছে


একটি ওয়েব এপিআই রেস্টে ক্লায়েন্ট জেনারেট করা

কারণ REST- এর সীমাবদ্ধতা যেমন ক্রিয়াকলাপের সীমিত সেট (GET, POST, PUT, DELETE, ইত্যাদি) কোনও ওয়েব এপিআইএসইএসটিতে একটি ক্লায়েন্ট লাইব্রেরি তৈরি করতে এতটা অসুবিধা নয়।

ওয়েবএপিপ্রক্সির মতো প্রকল্পগুলি সহজেই ক্লায়েন্ট সি # এবং জাভাস্ক্রিপ্ট তৈরি করতে পারে।


ওয়েব এপিআই বিশ্রামের জন্য চুক্তি ION

সহজ ডেভেলপারদের হিসাবে আমাদের তোমার দর্শন লগ রাখার জন্য ভাল কিভাবে আমাদের ওয়েব এপিআই বিশ্রাম আচরণ করবে কিছু নিয়মাবলী সংজ্ঞায়িত করা হয়, সর্বাত্মক প্রচেষ্টা আমি এই ক্ষেত্রে জানি খুবই ভালো ওয়েব এপিআই ডিজাইন ইসলাম - Apigee । ই-বুকটি আপনার এপিআই কীভাবে ডিজাইন করা যায় সে সম্পর্কে বাইবেল বা মন্ত্র তৈরি করার চেষ্টা নয়, বরং টুইটার, ফেসবুক, লিংকডিন, গুগল ইত্যাদির মতো বড় ওয়েব আরইএসটি এপিসে পরিলক্ষিত একটি সম্মেলনের সংগ্রহ collection


ডাব্লুএসডিএলের চেয়ে আরও যুক্তিসঙ্গত থাকা সত্ত্বেও দয়া করে ডাব্লুএইচডিএলকে অন্তর্ভুক্ত করুন, আমরা RESTfull / JSON এপিআই এর এন্টারপ্রাইজ নির্দিষ্ট করার জন্য আমাদের যা প্রয়োজন তা সঠিকভাবে বিশ্বাস করি। সোয়াগার গ্রাস করা থেকে, কঙ্কাল তৈরির জন্য দুর্দান্ত, তবে এটি আমার মনে একটি নিম্ন স্তরে বসে। WADL -> সোয়াগার -> কোড কঙ্কাল। WADL বিদ্যমান ইকো সিস্টেমেও খাপ খায় এবং এন্টারপ্রাইজ বিকাশকারীদের জন্য অবশ্যই এটি।
জেএম বেকার

3
আমি ... আসলে কিছুটা ধোঁয়াটে REST GETগুলি আরও সোজা, হ্যাঁ। কিন্তু বুদ্ধিমান কি ক্রিয়া করছে সম্ভবত সমর্থিত মানে এই নয় আপনি একটি API সাথে ইন্টারঅ্যাক্ট করতে পারবেন এ সব । আমাদের এখনও কোনও স্কিমা বা ডোমেন জ্ঞান নেই। বাস্তব উত্তর, যদি আমরা সৎ হচ্ছে, যে আমাদের সেবা পরিবর্তন না স্পষ্টভাবে ঐক্যবদ্ধতার চুক্তিপত্রে বিরতি যখন কোনো চুক্তি (wsdl) বিরতি আছে। এবং ওয়েবে, আমরা উইলি-নিলিলি, অপরাধবোধ মুক্ত এবং কী নন কিছু পরিবর্তন করার স্বাধীনতা চাই। তবে, আমাদের এপিআই ডক্স পড়তে হবে এবং যাইহোক পরীক্ষা করা দরকার ... সুতরাং, আমরা বেশিরভাগ ক্ষেত্রেই ঠিক হয়ে
গিয়েছি

5

সংক্ষেপে, যেহেতু এসওএপি স্ব-বর্ণনামূলক হিসাবে ডিজাইন করা হয়েছিল: একটি এসওএপি শেষ পয়েন্টে সাধারণত একটি ডাব্লুএসডিএল অন্তর্ভুক্ত থাকে যা এটি কী অপারেশনগুলি সরবরাহ করে এবং ডেটা কীভাবে দেখায় (এমবেডেড এক্সএসডি এর মাধ্যমে) প্রতিটি অপারেশন নেয় এবং / অথবা ফিরে আসে।
এই স্ব-বর্ণনামূলকতার কারণে, ভিজ্যুয়াল স্টুডিওর মতো কোনও অ্যাপ্লিকেশনের পক্ষে এটির জন্য একটি ওয়েব সার্ভিস প্রক্সি তৈরি করা সম্ভব।

এছাড়াও, এসওএপি (ডাব্লুএস- * স্পেসিফিকেশন) এর বেশ কয়েকটি এক্সটেনশন রয়েছে যা এসওএপি সহ এনক্রিপশন বা লেনদেনের আচরণের অনুমতি দেয়। ধারণাটি হ'ল আপনি এন্টারপ্রাইজ-গ্রেড ওয়েব পরিষেবাগুলি তৈরি করতে আপনার ওয়ান স্টপ শপ হিসাবে এসওএপি ব্যবহার করতে পারেন।

অন্য দিকে...

ওয়েবএপিআই আরএসটি পরিষেবা সরবরাহ করার জন্য ডিজাইন করা হয়েছে। REST এর জন্য যোগাযোগের ফর্ম্যাটটি সাধারণত JSON বা প্লেইন এক্সএমএল হয় - যদিও এটি সত্যিই গুরুত্বপূর্ণ নয়, এটি এমনকি সরল পাঠ্যও হতে পারে। আরআরএসটি পরিষেবাদিগুলি সম্পূর্ণ আলাদা দর্শন অনুসরণ করে: এগুলিকে হালকা ওজনের বোঝায় যাতে এজেএক্স সমাধানের অংশ হিসাবে ক্লায়েন্ট-সাইড স্ক্রিপ্টগুলি বা মোবাইল ডিভাইস দ্বারা সহজেই সেবন করা যায়।
সেই হিসাবে, স্ব-বর্ণনামূলককরণ সহ অনুষ্ঠানের স্তরকে ন্যূনতম রাখার প্রয়োজন রয়েছে। এছাড়াও, আপনি চাইলেও, REST পরিষেবাদিতে ব্যবহৃত বেশিরভাগ যোগাযোগের ফর্ম্যাটগুলিতে (যেমন JSON) কোনওভাবেই তাদের বিষয়বস্তু বর্ণনা করার আনুষ্ঠানিক উপায় নেই।

সংক্ষেপে, আপনি বলতে পারেন যে SOAP ওয়েবসার্ভিসগুলি সাধারণত সমাধানগুলি সংহত করতে (সম্ভবত পৃথক করা যায়) ব্যবহৃত হয়, তবে একই সমাধানের অংশগুলির মধ্যে যোগাযোগের জন্য আরইএসটি পরিষেবাগুলি আরও উপযুক্ত।


1

SOAP / WS- * এবং RESTful API গুলি এক নয়। আপনি যদি এসওএপি / ডাব্লুএস- * ডাব্লুএসডিএল সমর্থনকারী এপিআইগুলি তৈরি করতে চান মাইক্রোসফ্ট স্ট্যাকের পছন্দের সরঞ্জামটি ডাব্লুসিএফ, একটি এইচটিটিপি বাইন্ডিং বিকল্প রয়েছে (এক্সএমএল এবং জেএসএন বাইন্ডিং বিকল্প রয়েছে, এক্সএমএল ডাব্লুএসডিএল সমর্থনকারী বিকল্প))

অনুশীলনে, একটি পৃথক বাস্তবায়ন ভাষা বা প্ল্যাটফর্ম থেকে ডাব্লুএসডিএল গ্রহণ করা সমস্যাযুক্ত। ডাব্লুএস- * শীর্ষে সুরক্ষা স্তরগুলি আরও বেশি।

আমার নিজের অভিজ্ঞতা বেশিরভাগ ক্ষেত্রে নেট, নোড, জাভা এবং পিএইচপি এর সাথে ছিল এবং আমি বলতে পারি যে যখন আপনার কাছে এমন প্ল্যাটফর্ম থাকে যা কোনও বাচ্চার ধরণের বিবরণ নির্ধারণ করে না বা "অবজেক্ট" হিসাবে ব্যবহার করবে সংজ্ঞা, এটি কমপক্ষে বলতে সমস্যা হয়। এর বাইরেও, বেশিরভাগ অংশের জন্য কেউই সত্যিই সমস্ত এসওএপি / ডাব্লুএস- * বোঝে না এটি এটিকে কাজ করার জন্য টুলিংয়ের উপর বেশি নির্ভর করে। এই সরঞ্জামটির প্রচুর ওভারহেড রয়েছে এবং বিভিন্ন সিস্টেম আলাদাভাবে কাজ করে।

লোকেরা সহজ বাস্তবায়নের চেষ্টা করেছিল এমন কয়েকটি কারণ। আরআরইএসটি পরিষেবাদি (আলা ওয়েব এপিআই) অবজেক্ট / স্টেটের চারপাশে শেষের পয়েন্ট দেয়। জেএসওএন ফর্ম্যাটে প্রতিনিধিত্ব করা সহজ অবজেক্ট স্ট্রাকচারের একটি সেট সংজ্ঞায়িত করা সহজ, এবং এই স্ট্রাকচারের বিরুদ্ধে শেষ পয়েন্টগুলি ব্যবহার না করে এমন বিদেশী পরিবেশ থেকে ডাব্লুএসডিএল ব্যবহার করার চেষ্টা করা উচিত যা কাজ করে না, তারপরে খনন করার চেষ্টা করুন এবং সমস্যা প্রায় কাজ।

হাস্যকরভাবে, আমি অনুবাদ পরিষেবা হিসাবে নোডকে অনেকটা ব্যবহার করেছি এটির একটি, কেবল কারণ এটি ছিল যে ক্লায়েন্ট হিসাবে নোংরা প্রয়োগগুলি গ্রহণ করার পক্ষে যথেষ্ট নমনীয় ছিল এবং আমি আমার অভিযোজিত পেওলোডের বিপরীতে সরল ক্লায়েন্ট লিখতে পারি যা আরও ভাল কাজ করেছিল। উদাহরণস্বরূপ: সি # জেএসএন পাঠ্য পেয়েছে, যে আমি যখন কোনও ডাব্লুএসডিএল আমদানি ব্যবহার করতে না পারি তখন আমি কাজ করে এমন সংজ্ঞাটি উপস্থাপন করি যা আমি প্রকৃতপক্ষে সংজ্ঞায়িত করে যে কোনও বস্তুর উপস্থাপনায় রূপান্তর করতে JSON.Net ব্যবহার করি।

অনুশীলনে এটি অনেক কিছু ঘটে।


-3

যদিও এখানে প্রচুর উত্তর দুর্দান্ত তবে আমি মনে করি উত্তরটি খুব সহজ is আপনি কাজের জন্য ভুল প্রযুক্তিটির দিকে তাকাচ্ছেন।

আপনি যদি কোনও এসওএপি-পরিষেবা তৈরির সন্ধান করেন তবে আপনার সত্যই ডাব্লুসিএফের সাথে লেগে থাকা উচিত। এটি এখনও একটি খুব শক্তিশালী কাঠামো, মাইক্রোসফ্ট এখনও সক্রিয়ভাবে এটি বিকাশ করছে, ভবিষ্যতে এটি যে কোনও জায়গায় যাচ্ছে তা ভাবার জন্য আমাদের জন্য কোনও ঘোষণা করা হয়নি, এবং এটি মাথায় রেখেই করা হয়েছিল। ওয়েব এপিআই কোনও উপায়ে ডাব্লুসিএফকে ছাড় দেয় না (যদিও এটি সম্ভবত ডাব্লুসিএফের চেয়ে ট্রেন্ডিয়র)।

ওয়েব এপিআই ডাব্লুসিএফের অংশ হিসাবে ব্যবহৃত হত, তবে এটি অন্য ডাব্লুসিএফ প্রযুক্তির সাথে একেবারে ফিট না হওয়ায় এটি এএসপি.নেট পরিবারে স্থানান্তরিত হয়েছিল। ওয়েব এপিআই হস্তান্তর প্রোটোকলের চেয়ে HTTP অ্যাপ্লিকেশন প্রোটোকল হিসাবে ব্যবহার করার সাথে অনেক বেশি উদ্বিগ্ন। ওয়েব এপিআইতে, এইচটিটিপি ক্রিয়াগুলি কিং, ডাব্লুসিএফ HTTP- এ কেবল এসওএপি প্রোটোকল সক্ষম করার জন্য কাজ করে।

ওয়েব এপিআইকে এমন কিছু জিনিস করার ক্ষমতা না দেয় যার জন্য এটি তৈরি করা হয়নি।


3
এটি প্রশ্নের উত্তর দেয় না।
অ্যান্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.