دليل تعليم خدمات الويب باستخدام جافا

مرحبًا بك في دورة تعلم خدمات الويب بلغة الجافا. هنا سنتعلم حول خدمات الويب، المفاهيم المفيدة في خدمات الويب، ثم أنواع مختلفة من واجهات البرمجة التطبيقية التي نملكها في لغة الجافا لإنشاء خدمات ويب.

ما هي خدمة الويب

ببساطة، الخدمات التي يمكن الوصول إليها عبر الشبكة تُسمى خدمات الويب. فكيف تختلف عن تطبيق الويب؟ فهي أيضًا خدمات يتم الوصول إليها عبر الشبكة. هناك بعض السمات التي توضح هذا الفارق.

  • تم تصميم تطبيقات الويب للاستخدام من قبل المستخدمين وللوصول إليها في المتصفح بتنسيق قابل للقراءة من قبل الإنسان، بينما تم تصميم خدمات الويب لكي يتمكن التطبيق من الوصول إلى البيانات بتنسيق XML، JSON وما إلى ذلك.
  • تستخدم تطبيقات الويب دائمًا بروتوكول HTTP/HTTPS بينما تستخدم خدمات الويب التقليدية بروتوكول SOAP. في الآونة الأخيرة، REST أصبح يحظى بشعبية وهو نمط معماري وغالبًا يعمل على بروتوكول HTTP/HTTPS.
  • تطبيقات الويب ليست مصممة لإعادة الاستخدام بينما هذا هو واحد من فوائد خدمات الويب. يمكن استخدام خدمة واحدة على أنواع مختلفة من التطبيقات.
  • يمكن لتطبيق الويب الوصول إلى خدمات الويب للوصول إلى بعض البيانات أو أداء بعض المهام، بينما لا يمكن لخدمات الويب الوصول إلى تطبيقات الويب لاسترجاع بعض البيانات.
  • تستطيع تطبيقات الويب الحفاظ على جلسة المستخدم، بينما تعتبر خدمات الويب بدون حالة.

I hope above differences are good enough to clear any confusion with web applications and web services. Both are different concepts and meant for different purpose.

أنواع خدمات الويب

هناك نوعان من خدمات الويب.

  1. SOAP: SOAP تعني بروتوكول الوصول البسيط للكائنات. SOAP هو بروتوكول قياسي صناعي قائم على XML لتصميم وتطوير خدمات الويب. نظرًا لأنه يعتمد على XML ، فإنه مستقل عن المنصة واللغة. لذلك يمكن أن يكون خادمنا مبنيًا على JAVA والعميل يمكن أن يكون على .NET ، PHP إلخ والعكس بالعكس.
  2. REST: REST هو نمط معماري لتطوير خدمات الويب. أصبحت شعبية مؤخرًا لأنها تتميز بمستوى تعلم صغير بالمقارنة مع SOAP. الموارد هي مفاهيم أساسية لخدمات الويب Restful ويتم تحديدها بشكل فريد بواسطة هوياتها الشخصية (URIs).

خدمات الويب في جافا

تقدم جافا واجهة برمجة التطبيقات الخاصة بها لإنشاء خدمات الويب الخاصة بكل من SOAP و REST.

  1. JAX-WS: JAX-WS تعني واجهة برمجة التطبيقات في جافا لخدمات الويب القائمة على XML. JAX-WS هو واجهة برمجة التطبيقات في جافا قائمة على XML لبناء خوادم وتطبيقات العملاء لخدمات الويب.
  2. JAX-RS: واجهة برمجة التطبيقات في جافا لخدمات الويب القائمة على REST (JAX-RS) هي واجهة برمجة التطبيقات في جافا لإنشاء خدمات الويب القائمة على REST. يستخدم JAX-RS الشعارات لتبسيط تطوير ونشر خدمات الويب.

كلتا هاتين الواجهتين البرمجية تأتيان كجزء من تثبيت JDK القياسي، لذا لا نحتاج إلى إضافة أي ملفات JAR للعمل معهما. كلتا هاتين الواجهتين البرمجية تستخدمان العلامات التوضيحية بشكل كبير جدًا.

تطبيق Hello World JAX-WS

لنقم بإنشاء تطبيق Hello World JAX-WS بسيط جدًا. TestService.java

package com.journaldev.jaxws.service;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;

@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class TestService {

	@WebMethod
	public String sayHello(String msg){
		return "Hello "+msg;
	}
	
	public static void main(String[] args){
		Endpoint.publish("https://localhost:8888/testWS", new TestService());
	}
}

هذا كل شيء. قم فقط بتشغيل هذا التطبيق وسيتم نشر خدمة ويب SOAP Hello World JAX-WS لدينا. يظهر الصورة أدناه استدعاء هذه الخدمة الويب JAX-WS من خلال SOAP UI. هذا كل شيء لبرنامج تعليمي أساسي جدًا لخدمة الويب JAX-WS. أدناه بعض المقالات التي يجب أن تقرأها لفهم أفضل لخدمات الويب SOAP و JAX-WS.

  1. برنامج تعليمي JAX-WS
  2. نشر خدمة الويب JAX-WS على تومكات
  3. مثال على خدمة الويب SOAP باستخدام Eclipse و Apache Axis
  4. برنامج تعليمي لخدمات الويب Apache Axis 2

تطبيق Hello World JAX-RS

Jersey هو تنفيذ مرجعي لواجهة برمجة التطبيقات JAX-RS، وليس جزءًا من JDK القياسي، وعلينا أن نضمن تضمين جميع الملفات اللازمة. أفضل طريقة هي استخدام Maven للبناء، لذا قم بإنشاء مشروع ويب ديناميكي بسيط ثم قم بتحويله إلى Maven في Eclipse. فيما يلي ملف pom.xml النهائي الذي يحتوي على التبعيات المطلوبة.

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>JAX-RS-HelloWorld</groupId>
	<artifactId>JAX-RS-HelloWorld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	
	<dependencies>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-server</artifactId>
			<version>1.19</version>
		</dependency>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-servlet</artifactId>
			<version>1.19</version>
		</dependency>
	</dependencies>
	
	<build>
		<sourceDirectory>src</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<warSourceDirectory>WebContent</warSourceDirectory>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

أضف الآن خادم Jersey servlet إلى ملف الوصف الخاص بنا web.xml كمتحكم أمامي.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
	xmlns="https://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>JAX-RS-HelloWorld</display-name>

	<servlet>
		<servlet-name>Jersey REST Service</servlet-name>
		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
		<init-param>
			<param-name>com.sun.jersey.config.property.packages</param-name>
			<param-value>com.journaldev.jaxrs.service</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Jersey REST Service</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
</web-app>

الخطوتان السابقتان مطلوبتان للإعداد الأولي، وفيما يلي فئة خدمة Hello World JAX-RS الخاصة بنا.

package com.journaldev.jaxrs.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

@Path("/test")
public class TestService {

	@GET
	@Path("/hello/{msg}")
	public String sayHello(@PathParam(value="msg") String msg){
		return "Hello "+msg;
	}
}

قم بتصديرها كملف WAR ثم قم بالوصول إليها في المتصفح كما هو موضح في الصورة أدناه. يمكنك تغيير الجزء الأخير من عنوان URL وستتغير الرسالة المُرجعة وفقًا لذلك. يمكنك رؤية مدى سهولة إنشاء خدمة ويب RESTful باستخدام واجهة JAX-RS. ومع ذلك، هناك المزيد لاستكشاف، اتبع الروابط أدناه للمزيد من التعلم.

  1. خدمات الويب القائمة على مفهوم REST
  2. دليل RESTEasy
  3. دليل Jersey

تلك كل التفاصيل لمقدمة سريعة حول خدمات الويب جافا، وأخيرًا، إذا كنت تستعد لأي مقابلة، فتفضل بالاطلاع على أسئلة مقابلة خدمات الويب. المراجع: صفحة أوراكل لـ JAX-WS، صفحة أوراكل لـ JAX-RS

Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial