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

ارسال رسائل بين برنامجين؟

مغلق
بدأه الاحتراف في 8 فبراير 2007 · 3 رد · 570 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أقوم الان بتصميم Windows Service واريد تصميم وبرنامج آخر ليكون الواجهة لهذه الخدمة لعرض كافة بيانات الخدمة وحالتها مع امكانية تشغيها وايقافها.

كيف يمكنني الاتصال وارسال راسائل ومتغيرات بين الخدمة وبرنامج الواجهة ؟

لا أفضل استخدام وسيط مثل ملف او ريجستري.

هل من اقتراحات ؟

#2

السلام عليكم

هناك طريقتان إما باستعمال buffer

					   ASCIIEncoding ascii = new ASCIIEncoding();
					   byte[] buffer = new byte[100];

					   // data wich I have to send
					   String msg = composeInitMsg();
					   // write in file for debug purpose
						 SystemOut.println("MSGinit: " + msg);
						// transform msg to bytes
						int byteCount = ascii.GetByteCount(msg);
						// define the size of the buffer
						buffer = new byte[byteCount];
					   // transform msg to bytes
						byte[] msg1 = StringToBytes(msg);
						// send my message via socket
						sock.Send(msg1);
						// timer
						SystemOut.println("Before sock.Receive: time = " + DateTime.Now.Ticks / 10000); // To get millisecs
						// receive data
						sock.Receive(buffer);
						SystemOut.println("After sock.Receive: time = " + DateTime.Now.Ticks / 10000);
						// store the answer in a string and in the file fo debug
						String strBuffer = bytesToString(buffer, buffer.Length);
						SystemOut.println("sock.Receive() returned buffer = '" + strBuffer + "'");

أوNetworkStream

				NetworkStream networkStream = new NetworkStream(sock);  
				System.IO.StreamWriter OS =  new System.IO.StreamWriter(networkStream);
				System.IO.StreamReader IS =  new System.IO.StreamReader(networkStream);

وعذرا على إضافة الشرح باللغة الأنجليزية

والله أعلم

#3

يمكنك استخدام Message Queues MSMQ و هي طريقة Reliable لارسال بيانات من Process الى أخرى و لكنها one way فقط

يمكنك أيضاً استخدام الWindows Communication Foundation WCF و هي حزء من .net 3.0 لعمل أي نوع من الcommunications على أساس HTTP, HTTPs, Net.TCP, MSMQ, Named Pipes ... etc

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#4

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

أنا أرى أن استخدام System.ServiceProcess.ServiceController هو الأسهل والأبسط. وعموما أنا كتبتلك الكود التالي لاستعراض ما يحتويه فالق نظرة عليه ولا تهتم بمنطقية الكود :

System.ServiceProcess.ServiceController yourService;
yourService = new System.ServiceProcess.ServiceController("YourServiceName","MachineName");

string[] argumentsToStart = new string[]{"your args","args 2"};
yourService.Start(argumentsToStart);

int yourCustomCommand = 2;
yourService.ExecuteCommand(yourCustomCommand);

if(yourService.CanPauseAndContinue)
{
yourService.Pause();
// .... !
yourService.Continue();
}

if(yourService.CanStop)
yourService.Stop();

الكود لا يحتاج إلى توضيح فأسماء الـ Methods تشرح نفسها, وبالنسبة لمعرفة الحالة فاستخدم yourService.Status.

وانتبه أن الـ ServiceProcess موجود في DLL اسمها System.ServiceProcess.DLL فقم باضافتها كـ Reference.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

هذا الموضوع مغلق.

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