الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تقنية Rmi

بدأه shado في 4 مارس 2009 · 22 رد · 7,567 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

طرح موضوع هنا بالمنتدا عن التطبيقات الموزعة والاستدعاء عن بعض وقدم بشكل مشروع لعبة X-O

لذلك احببت ان اتوسع قليلا بالفكرة واشرحها واقدم جزئية منها لكم ..

سوف اتحدث بشكل مختصر عن التطبيقات الموزعة وعن تقنية RMI بشكل عام وكامل

بالبداية سوف أقوم بشرح فكرة عامة عن معنى التطبيقات الموزعة وما تعنيه بالكلمة والمعنى

إن استدعاء الأغراض "object " أو الطرائق أو بعضهم يسمونها المناهج "Method "

إن استدعائها عن بعد يعني ببساطة قيام غرض ما باستدعاء طريقة أو اكثر من غرض اخر موجود على الة جافا وهمية اخرى

نسمي الغرض الاول بالغرض المحلي Local object ونسمي الغرض الثاني بالغرض البعيد Remote object اما التابع أو المنهج أو الطريقة نسميها Remote Method

اما التقنية التي تسمح باستدعاء الطرائق عن بعد فهي RMI (Remote Method Ivocation)

بشكل عام تضم تطبيقات RMI برنامجين منفصلين هما server و client حيث يقوم برنامج المخدم بانشاء بعض الاغراض البعيدة Remote object بالاضافة إلى إمكانية انشاء مراجع أو ما يسما مؤشرات للوصول للاغراض البعيدة وثم يقوم بانتضار الاخ الزبون client وينتظر طلباته .

سنقوم بشرح الية مبسطة عن عمل RMI وحسب ما اعتقده من افكار ..

نستطيع إن نرقم المراحل ..مثلا نقول

اولا يقوم المخدم بانشاء الغرض البعيد ثم يسجله في مسجل RMI والمسجل هوا عبارة عن برنامج خاص ياتي مع حزمة JDK ويعتبر بمثابة قاعدة بيانات

ثانيا يقوم الزبون بالبحث عن الغرض البعيد باستخدام اسمه ومن ثم يحصل على مرجع لهذا الغرض

والذي اسميناه مؤشر على الغرض في ما سبق .

ثالثا يقوم الزبون باستدعاء الطرائق من الغرض البعيد ..

بالاضافة إلى كل ما سبق من خطوات عمل التطبيقات الموزعة الخاصة بالتقنية المذكورة فهي ايضا تعتمد على ما يسمى Stub ,Skeleton

ولن اتكلم شئ عنهم كثير حاليا سيتم استيعابهم في النهاية ولكن ما أريد إن اقوله بشكل مبسط إن كلاهما class فالـ Stub يعمل بجانب الزبون ويقوم بارسال الطلبات للاغراض البعيدة

اما Skeleton يعمل بجانب المخدم ويقوم باستقبال طلبات الزبائن .

بالبداية لكي نقوم بانشاء تطبيق يعتمد على البرمجة الموزعة RMI بالجافا ..علينا إن نضع لانفسنا عدة مخططات ومراحل لكتابة البرنامج ..

*نحتاج إلى تصميم وتحقيق واجهات وصفوف التطبيقات الموزعة " implementation"

*ترجمة الواجهات والصفوف لتوليد Stub ,Skeleton "compilation"

*تحديد سماحيات الاتصال وهي تتعلق بالـport وسماحيات الوصول للـclasses

* تشغيل التطبيق

كل من الخطوات السابقة تشرح نفسها ولكن ما عدا الخطوة الأولى يندرج تحتها عدة خطوات لكن سنفصل كل ما سبق

1-تصميم وتحقيق الواجهات والصفوف

اولا نقوم بتعريف الواجهات interfaces البعيدة ..لماذا هذا ولماذا التفصيل وتعريف كل شئ على حدا

حيث تعتمد هذه التقنية على مبدأ وهوا هام بالنسبة لها مبدأ الفصل بين تعريف الطرائق وبين تحقيقها

وطبعا لكي يكون اسمها تطبيقات موزعة لابد من تحقيق هذا المبدأ وايضا هذه الواجهات تسمى واجهات بعيدة Remote interface

ثانيا تحقيق الاغراض البعيدة

المسؤل عن هذا الشئ أو الصفين الذين يقوما بالمهمة هما

صف اول من قبل المبرمج يقوم من خلاله بتحقيق الخدمة المعرفة في الواجهة البعيدة

صف ثاني وهوا Stub الذي يعمل كوكيل proxy عن الخدمة البعيدة على الجهاز الزبون

وكم ذكرنا إن الزبون يقوم باستدعاء الطريقة البعيدة في المخدم عن طريق هذا class Stub وما يسما proxy ومن ثم تكمل الخطوات المعروفة ..

ثالثا كتابة تطبيق المخدم

بعد الانتهاء من كتابة الصف البعيد ( الصف الذي يحقق الواجهة البعيدة ) يجب كتابة تطبيق المخدم الذي يقوم بإنشاء غرض من الصف البعيد وتسجيل هذا الغرض في مسجل RMI

رابعا كتابة تطبيق الزبون

ايضا يتم كتابة تطبيق الزبون الذي سيقوم بالبحث في مسجل RMI عن الغرض المشتق من الصف البعيد

2- ترجمة الصفوف والواجهات وتوليد صفي Stub , Skeleton

كالعادة بالنسبة للترجمة نستخدم المترجم javac

ولكن نحن بحاجة إلى المترجم rmic لتوليد الصفين المذكورين

3-تحديد سماحيات الاتصال وسماحيات الوصول

مرحلة هامة بعض الشئ وهي تتعلق بالمنافذ ..ستتضح في الكود

4- تشغيل التطبيق

-تشغيل مسجل RMI

- تشغيل المخدم

- تشغيل الزبون

وايضا سوف تتضح فيما بعد .

ألان وبعد كل ما سبق من كلام نظري نحاول إن نطبق اكواد برمجية ونطبق التقنية على برنامج صغير

يقوم بجمع عددين باستخدام تقنية RMI ويجب إن ننتبه لكل الخطوات النظرية السابقة لأننا سنعمل عليها أو على مبدئها

تطبيق جمع عددين :

سألخصه لكم على الشكل التالي:

يتضمن تطبيق المخدم على غرض يحوي طريقة جمع method sum

ونريد من تطبيق الزبون إن يستدعي هذه الطريقة لجمع عددين ومن ثم طباعة النتيجة

اولا نقوم بتصميم الواجهة البعيدة Remote interface

وعلى الواجهة البعيدة إن تتضمن تعريف لجميع الطرائق method التي سيتم استدعاؤها عن بعد من قبل الة الجافا

وحتى تكون الواجهة بعيدة يجب إن تملك الخصائص التالية :

* يجب إن تعرف الواجهة البعيدة باستخدام محددات الوصول public والا فأن الزبون سيحصل على رسالة خطا عند محاولة تحمي الغرض البعيد الذي يحقق الواجهة إلا في حال الزبون موجود في نفس حزمة الواجهة البعيدة

* يجب على الواجهة البعيدة إن ترث الواجهة java.rmi.Remote

* يجب على كل طريقة في الواجهة البعيدة إن ترمي استثناء من نوع java.rmi.RemoteException

اضافة إلى أي استثناء خاصة بالطريقة نفسها ..

*يجب التصريح عن أي غرض بعيد سيمرر كوسيط للطريقة بعيدة أو كقيمة معادة على انه من نمط الواجهة البعيدة وليس من نمط الصف البعيد

فيما يلي الواجهة البعيدة SumRemoteInterface التي تتضمن طريقة واحدة بعيدة هي

sum (int x,int y)


import java.rmi.*;

public interface SumRemoteInterface extends Remote {

public int sum(int x,int y) throws RemoteException;

}
 package  sum;

سبب رمي الاستثناء للـ method sum هوا بما إن كل طريقة بعيدة معرضة للفشل لعدة اسباب كان لا بد من رمي الاستثناء

ما زلنا في تصميم الصفوف والواجهات البند الاول من خطوات العمل مع هذه التقنية والان سوف نقوم بكتابة الصف البعيد (الذي يقوم بدوره في تحقيق الواجهة interface البعيدة )

ومن خصائص الصف التي يجب إن يحققها

• التصريح على إن هذا الصف يحقق واجهة بعيدة واحدة

• تعريف باني لهذا الصف (والسبب سنذكره لاحقا )

• كتابة تحقيق برمجي للطرائق methods التي سيتم استدعاؤها


import java.rmi.*;
import java.rmi.server.*;
public class SumRemoteClass extends UnicastRemoteObject implements SumRemoteInterface {

public SumRemoteClass() throws RemoteException {
super();
}
public int sum(int x,int y) throws RemoteException{
return x+y;
}


}
 package sum;

قام الصف SumRemoteClass بتحقيق الواجهة SumRemoteInterface كما وعد

نتكلم عن بعض النقاط ..

بالبداية سبب استيراد الصف UnicastRemoteObject والتوعدات من ذلك هوا إن الصف المذكور اعلاه يؤمن التواصل مع الزبائن عن طريق استخدام طريقة النقل المعتمدة على المنافذ الافتراضية لتقنية RMI

بالاضافة إلى العمل طوال الوقت بانتضار طلبات الزبائن

سبب ذكر التابع البناء ..كغيره هنا التابع البناء وضيفته مثل وضيفة أي تابع بناء في أي برنامج

بالاضافة يحتاج غرض الصف البعيد إلى تصدير exported حيث يجعله جاهز لقبول طلبات استدعاء method الطرائق المناهج سموها ما تشاؤون ...

عند استيراد الصف UnicastRemoteObject فانها تصبح مصدرة بشكل تلقائي

اذا اضطرينا إن إن نجعل الكلاس SumRemoteClass إن يتوسع من كلاس اخر غير SumRemoteClass

فلا بد إن نذكر يدوي أو نصرح عن استيراد الصف SumRemoteClass في البناء الخاص بالصف

اما بالنسبة لرمي بناء الصف SumRemoteClass استثناء RemoteException

تجنبا لحدوث مشاكل بالاتصال أو قد يكون الاتصال غير متوفر حاليا .

بالاضافة لكل ما سبق اننا قمنا بتحقيق الـطريقة sum وذلك بكتابة جسمها


import java.rmi.*;

public class SumServer {

public static void main (String[] args) {
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
try{
SumRemoteClass sumremoteclass=new SumRemoteClass();
Naming.rebind("//host/SumService",sumremoteclass);
System.out.println("sum server is ready");

}
catch (Exception e)
{
System.out.println("sum server fail: "+ e);
e.printStackTrace();

}
}
}
package sum;

نشرح شوي ..

بالبدية في main لصف المخدم يجب إن نضع البسملة الخاصة في اعداد مدير الحماية وهي


{
System.setSecurityManager(new RMISecurityManager());
}
	if(System.getSecurityManager()==null)

داخل حلقة الـ try قمنا بانشاء الغرض من الصف المحقق للواجهة وذلك بهدف توفير الخدمة

كذلك يجب إن نقوم بتسجيل للغرض في مسجل RMI كالكود التالي

Naming.rebind("//host/SumService",sumremoteclass);

ماذا يحوي الكود السابق ..

يحوي الصف Naming ويستخدم من اجل تخزين الاغرض البعيدة في مسجل RMI يالاضافة إلى الحصول على مراجع أي مؤشرات كما اسميناها سابقا ..

بالاضافة إلى ما سبق هناك الطريقة bind وقد ذكرتها في اليه عمل RMI

حيث تحوي هذه الطريقة على وسيط اول وهوا URL خاص للوصول إلى للاسم الاختياري للغرض المسجل حيث نذكر بدل كلمة host مثلا اسم الجهاز المحلي أو البعيد

وذا لم نذكر اسم الجهاز صراحة سوف يشير إلى Localhost

اما الوسيط الثاني هوا غرض من الصف البعيد object

ألان نقوم بكتابة صف الزبون


import java.rmi.*;

public class SumClient {

public static void main (String[] args) {
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}

try{
SumRemoteInterface sri=(SumRemoteInterface)Naming.lookup("//host/SumService");
System.out.println(sri.sum(3,5));

}
catch (Exception e)
{
System.out.println("SumClient exception :" +e);

}
}

}
 package sum;

نلاحظ يقوم الزبون بالبحث عن الغرض البعيد باسم SumService وثم يحصل على مرجع لهذا الغرض وكما نلاحظ الطريقة lookup وهي من اخوات bind و rebind وغيرهم اما الاخيرة وهي خاصة باعادة تسجيل الغرض

اما lookup فهي مهمتها البحث عن الغرض و هناك اخرى صديقتها list وتابعا ايضا للصف Naming

مهمتها الحصول على قائمة باسماء الاغراض البعيدة المسجلة في مسجل RMI

يجب على صيغة URL الممررة للطريقة lookup إن تتضمن اسم المخدم والا فأن خطأ ما سوف يحدث

بشكل عام الية عمل التقنية اصبحت شبه مفهومة ..يوجد الكثير من معلومات ومراحل يجب ان اتكلم عنها كتشغيل التطبيق لتوليد

الصفين Stub , skeleton الذين يولدهما المترجم rmic

ساحاول ان اطرح الطريقة لاحقا ..لكن الى الان تواجهني بعض المشاكل في تشغيل التطبيق

اي استفسارات انا بالخدمة ...طبعا سوف يكون للموضوع بقية ..وساحاول ان اصل في نهايته الى تطبيق اكبر قليلا من الذي تكلمنا عنه سابقا

تمنياتي لكم بالتوفيق

الله معكم ..

sum.rar

4
#2

المرفقات..

sum.rar

2
#3

فعلا تقنية RMI مميزة كثيرا , ورائعة جدا , أيضا هناك تكنولوجيا تسمى بـ CORBA , تعمل نفس العمل لكن على منصات عمل مختلفة و متنوعة

بارك الله فيك يا شادي ,, موضوع مفيد.

#4

فعلا اخ محمد التقنيات الموجودة في الجافا جميلة ..طبعا انا لن انسى CORBA ساخصص موضوع عنها قريبا

لكن عندما نتمم هذه التقنية ومعلومات عنها ...

اشكرك على الاطراء ..لكن اتمنا منك وحسب تجربة سابقة لك ان تضع ما تعلمه من معلومات عن هذه التقنية

لم اتوقف هنا فهناك المزيد الذي ساشرحه ككيفية تشغيل المترجمات الخاصة لهذه التقنية وهناك method كثيرة لم اذكرها ولن انساها طبعا

لكن لو تفضل وشك\رحت مبدأ تشغيل هذه التقنية عن طريق الدوس دون الحاجة لصناعة path في النظام

وانا ساكمل المعلومات وربما اضع البيقة قريبا

بالتوفيق

الله معك..

2
#5

السلام عليكم ورحمة الله وبركاته

معلومات اكثر من رائعه ونتمنى المزيد منها ..

و كذلك هناك تقنية الـ TCP/IP صراحة لا اعرف عنها شي ولذا لدي من الفضول مايدفعني للاطلاع عليها ،،

كما سمعت عن مصطلح الـ Threads و توافق المهام او انسيابية المهام الخاصة بتنفيذ البرامج ..

أتمنى اثراءانا بهذه المعلومات فهي مهمه و من الجميل التعرف عليها ...

#6

جميل يا شادي هكذا تكون المواضيع وإلا فلا

بالمناسبة لا تنسى موضوع الأخ وجدي الأكثر من رائع

أتمنى منك مراجعة الترجمات للمصطلحات مثل Object مصطلح على ترجمتها بكائن

وإضافة المصطلحات الانجليزية للفظات المعربة أياً كانت بساطة هذه المصطلحات لكي لا يختلط الأمر على أحد

طبعاً الموضوع يثبت لزيادة الفائدة

بالتوفيق

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

تشكر اخي ..clasic

هلا علاء .. شو موضوع وجدي ؟؟

اقتباس
أتمنى منك مراجعة الترجمات للمصطلحات مثل Object مصطلح على ترجمتها بكائن

انا لا اعاني من هذه المشكلة ..لكن عندما يقرا الموضوع واحد ناقل من السي بلس بلس الى الجافا ..كيف ستثبت له اان التابع او function هوا method او طريقة او منهج بالجافا ..او بالـ c sharp انا انا لا احب ان الفظ الكلمات الانكليزية بالعربية

احس حالي اجدب :lol:

نكمل موضوعنا ..

ألان كيف نقوم بتشغيل هذا التطبيق ...

المسالة ليست بالتعقيد في أي تطبيق عادي فنحن بحاجة كالعادة للمترجم javac و المترجم java

لكن هنا لدينا بعض التعقيدات بالموضوع وهي موضوع classes المساعدة في استقبال الاغراض والطلبات و ارسالها وهي class Stub , class Skeleton

من خلال المترجم rmic الموجود داخل مجلد الـ bin

نقم بانشاء تلك الـ classes المساعد ..

بعد الوصول إلى مجلد sum ولنعتبر اننا وضعناه داخل bin في JDK

rmic sum.SumRemoteClass

ليتولد 2 class جدد يتكون اسمهم من جزيئين

الكلاس الاول يحمل الاسم SumRemoteClass_Skel.class

الكلاس الثاني يحمل الاسم SumRemoteClass_Stub.class

أريد إن انبه اننا نستخدم المترجم rmic على ملف class. وليس على java.

هناك خطوة اخرى ايضا في تشغيل مسجل RMI

يكفي ذكر مسار المسجل rmiregistry.exe بالدوس ..الموجود داخل مجلد bin في JDK

ألان الخطوة ما قبل الاخيرة هي تشغيل المخدم ..لكن يجب إن ننتبه إلى بعض الامور ومنها اسم الجهاز

هل تذكرون URL الذي وضعناه كبرامتر حيث تضمن البرتوكول الذي سيفتح به الغرض الذي اسميناه sumservice يجب إن نغير هذا الاسم إلى اسم الجهاز المحلي أو البعيد ..

وقبل وضع التعليمة الخاصة بتشغيل لمخدم لا بد من استخدام ملف الحماية الذي يقوم باعداد سماحيات تتعلق بالمنافذ التي يمكن استخدامها والصفوف التي يمكن الوصول اليها ...

في مشروع X-O لمحمد الذي ذكرناه في بداية الموضوع هوا شكل هذا الملف باسم rmiplicy

ووضع فيه


// Allow everything for now
permission java.security.AllPermission;

permission java.net.SocketPermission "*:1024-65535",
"connect,accept";
permission java.net.SocketPermission "*:80", "connect";

};
grant {

إن الملف الحماية السابق يسمح بالاتصال إلى وقبول الاتصال على المنفذ 1024

الاتصال بالمنفذ 80 الخاص HTTP

علما إن الملف السابق يسمح بالاتصال عن طريق مخدم ويب HTTP

اما اذا اردنا إن يكون متوفر عن طريق نظام ملفات file URL

فنحن بحاجة إلى سماحيات read ايضا واستخدام مكتبة IO التي تتيح لنا قراءة ملفات

خرجنا عن الموضوع قليلا ..لكن ارتت إن اوصل لكم الفكرة التالية ..

انا بحاجة إلى العليمات السابقة إن تكون في ملف يحفظ داخل أو بجانب ملفات classes الخاصة بالسبرفر

كما فعل محمد ووضعها في مشروعخ في مجلد server باسم rmiplicy

وهوا عبارة عن اسم تعبيري لا غير

وقد ذكرنا الفائدة من اجل استكمال مبادء أو بروتوكولات الاتصال من منافذ وغيرها ..

هنا في مشروعنا البسيط لا نحتاج إلى كل ذلك


permission java.security.AllPermission;
};
grant {

يكتب في ملف نصي ونحفضه باسم policy.all مثلا ونضعه داخل مجلد sum

ألان نقوم بتشغيل المخدم من الدوس و كما تعلمون المجلدsum موجود داخل bin في JDK


-Djava.rmi.server.codebase= file:C:\ProgramFiles\Java\jdk1.6.0_07\bin\sum\SumServer
C:\Program Files\Java\jdk1.6.0_07\bin\java -Djava.security.policy=file:/ C:\Program Files\Java\jdk1.6.0_07\bin\sum \policy.all

تعبة قليلا بال بالدوس ..لكن من اجل السلامة في وصلة الفكرة !

الاول لتشغيل policy.all

والثاني لتشغيل الكلاس SumServer

طبعا بعد تنفيذ السطر السابق من الاوامر ستضهر الرسالة اليت وضعناها في الـ class ,

Sum server is ready

قبل تشغيل الزبون يجب إن يتم اتصال ونتاكد من إن المخدم قد عمل بنجاح

C:\Program Files\Java\jdk1.6.0_07\bin\java -Djava.security.policy= policy.all SumClient

بمجرد تنفيذ الـ class الخاص بالزبون سيتم طباعة الرقم 8 ناتج جمع العديدين

طبعا لا استطيع ان اعطيكم اي مرجع على الانترنت لاني بحثت ولم اجد شئ يخص الموضوع بشكل موسع

الموضوع السابق عبارة عن محاولات مني لفهم التقنية ...وبعض الملعومات متفرقات ..

اي استفسارات احاول الاجابة ...ساحاول التوسع بالفكرة اوسع بربطها بقواعد البيانات ...

تمنياتي بالتوفيق

الله معكم

تم تعديل هذه المشاركة بواسطة shado في 6 مارس 2009 في 05:03

2
#8

ممتاز أخ شادي , لقد أرحتني من كتابة طريقة تشغيل الملف , واشكر الإدارة على تثبيت الموضوع.

بإمكانك أخ شادي بعد ذلك طرح مشاريع تعتمد على rmi بحيث نسفيد و يستفيد جميع اعضاء قسم الجافا .

الله معكم

#9

تحياتي محمد نحن بالخدمة .. ان شالله قريبا ساطرح موضوع الــ data base اما مع mysql او اوركل

بالتوفيق

الله معك..

1
#10

شكر على هذا الموضوع الرائع

وأريد أن أسأل عن الفائدة من هذه التقنية وما هي تطبيقاتها

هل أستطيع استخدامها في تسريع بعض التطبيقات الكبيرة مثل ال data minig

#11

هذه التقنية تقوم بشكل أساسي على تجريد التعامل مع الشبكات

بحيث لا يكون هناك حاجة للنزول إلى مستوى المنافذ sockets

والابتعاد عن الخيوط ومشاكلها الأنيرية

عدا عن الأمان الذي توفره في التعامل

باختصار هذه التقنية تمثل السهولة والأمان في التعامل مع الشبكات

بالنسبة لموضوع التسريع بالتأكيد لا

فأي تقنية تقدم السهولة فهذا يعني على الأغلب أنها تأخذ بشكل عكسي من الوقت

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#12

جزاك الله خيرا

أستخدم الان هذه التقنية في مشروع التخرج

واريد أن أستخدم الداتابيز

هل يوجد نوع محدد من الداتا بيز يجب استخدامه ؟

هل استطيع استخدام sql وما هي النسخة الملائمة مع jdk 1.6?ومن أين أستطيع الحصول عليها؟

وما هو ال driver المناسب لذلك؟؟

وشكرا لكم :rolleyes:

#13

أتمنى الالتزام بالموضوع

وسأجيب عن ما يتعلق بالموضوع فقط

لا يوجد أي قيود حول تقنية RMI في تعاملها مع قواعد البيانات

اطرح باقي الأسئلة في موضوع جديد أو في موضوع أسئلتكم واستفساراتكم

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#14

السلام عليكم ورحمة الله وبركاته

جزاكم الله خيرا على هذا الجهد الرائع وأود أن أستفيد من خبرتكم بهذا المجال

فقد طلب مني مشروع بسيط بستخدام تقنية RMIوال THREAD معا ولم أستطع اختيار الفكرة المناسبة بعد لذا أرجو المساعدة ...

مع العلم أني قد درست التقنيتين بشكل منفصل ولاأعرف طريقة استخدامهما معا

#15

web.pro تسطيع ان تستثمر التقنية باي نوع من database

وعملية الاتصال وتضمين الدرايفر الخاص بنوع الداتا بيس

ان وقفت عن شي معين كالكود مثلا ..اخبرنا او اعرض محاولات لك ..

maysam

ما هي فكرتك للمشروع .. او انك تعاني من عدم استيعاب كامل للفكرة ..مثلا لو تشرح لنا قليلا سوف نوفي بالمساعدة

الله معكم ..

1
#16

شكرا لك أخي الكريم على الرد السريع

باختصار اريد استخدام تقنية RMI&THREAD في عمل تطبيق يشبه الماسنجر( chating) يسمح لعدة أجهزة بتخاطب مع بعضها واظهار لائحة المتواجدين واختيار الشريك

الواجهات ليست ضرورية فالعمل على بيئة الدوس مقبولة

#17

لكي تكون في الصورة RMI ترفع عنك عبئ استخدام الخيوط

لكن يبقى عليك أن تقوم بعمل تزامن بين الدوال synchronization لضمان عدم حصول illegible State

ابدأ في المشروع وسأساعدك بإذن الله

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#18

فكرة جيلة ومشروع جيد ..

كما قيل ابدأ بالمشروع وحاول ان تعرض بعض الافكار وسوف نساعد ..

بالتوفيق .

الله معك ..

تم تعديل هذه المشاركة بواسطة shado في 29 مارس 2009 في 02:51

1
#19

أريد أن أسأل سؤال بخصوص هذه التقنية

هل بالامكان تشفير البيانات او الرسائل المرسلة عن طريق الشبكة

وكيف يتم ذلك ان امكن؟؟؟

#20

التشفير موضوع مختلف تماماً عن RMI

ولا أعرف إن كانت RMi تقوم به بين طياتها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#21
اقتباس
هل بالامكان تشفير البيانات او الرسائل المرسلة عن طريق الشبكة

وكيف يتم ذلك ان امكن؟؟؟

1 - عند استخدام ال SSL مع ال RMI

http://java.sun.com/j2se/1.4.2/docs/guide/...ry/SSLInfo.html

2- عند استخدام Custom RMI Socket Factory

http://java.sun.com/j2se/1.4.2/docs/guide/...tory/index.html

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 19 يونيو 2009 في 23:50 — السبب: إضافة رابط ال Custom Factory

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#22

موضوع جميل جدااا

جزاك الله كل خير :)

00020309t.gif

1958_1963.gif
#23

اهلا وسهلا بالجميع اتمنا احد يساعدني لو سمحت طلب مني الدكتور بالجامعه عمل برنامج عن طريق تقنيه rmi javaيقوم البرنامج بجمع عددين بشرط يكون هاك جهازين كلين وسرفر ارسل العددين من الجهاز الاول والذي هو الكلين الى السرفر فيقوم بجمعهم السرفر ويرسلهم الى الكلين بليز ساعدوني الله يخليكم

مواضيع مشابهة