WSDL (Web Services Description Language) কী?
WSDL হলো একটি XML ভিত্তিক ভাষা যা SOAP ওয়েব সার্ভিসের জন্য পরিষেবার বিবরণ (description) প্রদান করে। এটি মূলত ওয়েব সার্ভিসের কাঠামো, এন্ডপয়েন্ট, অপারেশন এবং ডেটা টাইপ নির্ধারণ করে। WSDL একটি পরিষেবা সম্পর্কে ক্লায়েন্ট এবং সার্ভার উভয়ের জন্য একটি কন্ট্র্যাক্ট হিসেবে কাজ করে।
স্প্রিং ওয়েব সার্ভিসে WSDL এর ভূমিকা
Spring Web Services এ WSDL ব্যবহার করা হয় SOAP পরিষেবা তৈরি এবং কনজিউম করার জন্য। এটি নিম্নলিখিত দিকগুলোতে গুরুত্বপূর্ণ:
- পরিষেবা বিবরণ: সার্ভিস কীভাবে কাজ করবে, তা নির্ধারণ করে।
- কন্ট্র্যাক্ট-ফার্স্ট অ্যাপ্রোচ: WSDL ভিত্তিক পরিষেবা তৈরি করা হয়।
- ইন্টিগ্রেশন: সার্ভিস এবং ক্লায়েন্টের মধ্যে নিরবচ্ছিন্ন সংযোগ নিশ্চিত করে।
WSDL এর মূল উপাদান
১. Types
ওয়েব সার্ভিসের ডেটা টাইপ সংজ্ঞায়িত করে। এটি XSD (XML Schema Definition) ব্যবহার করে।
২. Message
ওয়েব সার্ভিসে প্রেরিত এবং প্রাপ্ত ডেটার কাঠামো সংজ্ঞায়িত করে।
৩. PortType
পরিষেবার অপারেশনসমূহ এবং তাদের ইনপুট-আউটপুট মেসেজ সংজ্ঞায়িত করে।
৪. Binding
SOAP বা HTTP এর মতো প্রোটোকলের সাহায্যে পরিষেবা কীভাবে কাজ করবে তা নির্ধারণ করে।
৫. Service
এন্ডপয়েন্ট (endpoint) URL প্রদান করে, যা পরিষেবা অ্যাক্সেস করার জন্য প্রয়োজন।
স্প্রিং ওয়েব সার্ভিসে WSDL ব্যবহার
WSDL ফাইল তৈরি
Spring-WS এ কন্ট্র্যাক্ট-ফার্স্ট পদ্ধতিতে প্রথমে WSDL ফাইল তৈরি করতে হয়। উদাহরণস্বরূপ, নিচে একটি WSDL ফাইলের কাঠামো দেওয়া হলো:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://example.com/ws"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://example.com/ws"
name="ExampleService">
<types>
<xsd:schema targetNamespace="http://example.com/ws">
<xsd:element name="GetRequest" type="xsd:string"/>
<xsd:element name="GetResponse" type="xsd:string"/>
</xsd:schema>
</types>
<message name="GetRequestMessage">
<part name="parameters" element="tns:GetRequest"/>
</message>
<message name="GetResponseMessage">
<part name="parameters" element="tns:GetResponse"/>
</message>
<portType name="ExamplePortType">
<operation name="GetExample">
<input message="tns:GetRequestMessage"/>
<output message="tns:GetResponseMessage"/>
</operation>
</portType>
<binding name="ExampleBinding" type="tns:ExamplePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetExample">
<soap:operation soapAction="http://example.com/GetExample"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ExampleService">
<port name="ExamplePort" binding="tns:ExampleBinding">
<soap:address location="http://localhost:8080/ws"/>
</port>
</service>
</definitions>
Spring-WS এ WSDL লোড করা
Spring-WS এ WSDL লোড করতে নিচের মতো কনফিগারেশন করা হয়:
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean<>(servlet, "/ws/*");
}
@Bean(name = "example")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema exampleSchema) {
DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
definition.setPortTypeName("ExamplePort");
definition.setLocationUri("/ws");
definition.setTargetNamespace("http://example.com/ws");
definition.setSchema(exampleSchema);
return definition;
}
@Bean
public XsdSchema exampleSchema() {
return new SimpleXsdSchema(new ClassPathResource("example.xsd"));
}
}
WSDL ব্যবহারের সুবিধা
- স্ট্যান্ডার্ডাইজড: ওয়েব সার্ভিসের জন্য একটি নির্ধারিত স্ট্যান্ডার্ড প্রদান করে।
- ইন্টারঅপারেবিলিটি: বিভিন্ন প্ল্যাটফর্ম এবং ভাষার মধ্যে পরিষেবা সহজে ব্যবহার করা যায়।
- স্বয়ংক্রিয় ক্লায়েন্ট জেনারেশন: WSDL ব্যবহার করে ক্লায়েন্ট কোড জেনারেট করা যায়।
চ্যালেঞ্জ
- WSDL ফাইল তৈরি এবং বজায় রাখা তুলনামূলকভাবে সময়সাপেক্ষ।
- SOAP প্রটোকল ব্যবহারের কারণে কিছু ক্ষেত্রে উচ্চতর ওভারহেড হয়।
WSDL ব্যবহার করে Spring-WS এ SOAP পরিষেবা তৈরি করলে পরিষেবাগুলো স্ট্যান্ডার্ড এবং পুনর্ব্যবহারযোগ্য হয়, যা এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকর।
Read more