با سلام!
در این بخش پیرامون تعامل هسته ی اصلی و هسته ی محاسبه گر تحت شبکه بحث می کنیم. ما برای برقراری ارتباط از TCP/IP کمک می گیریم. در این پروتکل به آدرس IP هسته ها و پورت TCP نیاز است. هسته ی محاسبه گر در حالت شنود (Listen Mode) روی پورت TCP قرار می گیرد و هسته ی اصلی داده ها را به روی این درگاه می فرستد. هسته ی محاسباتي پس از انجام پردازش، اطلاعات را به آدرس IP هسته ی اصلی می فرستد.
برای پیاده سازی TCP/IP در VB.Net از کنترل Winsock و یا کلاس Runtime Remoting استفاده می کنیم. برای استفاده از Winsock محدودیت هایی وجود دارد از جمله محدودیت در نرخ اطلاعات مبادله شده. پس به سراغ Runtime Remoting می رویم و Refrence آن را به پروژه اضافه می کنیم. اگر در تعریف توابع کلاس Remoting به درستی عمل کنیم، می توانیم هر نوع داده ای را با هر حجمی مبادله کنیم. کلاس Remoting در پذیرش ماژول ها منعطف است و مانند Winsock سبب هنگ کردن رابط گرافیکی برنامه نمی شود.
توجه کنید که در پست دوم یک ماژول برای یافتن اعداد اول تعریف شده است. این قطعه کد با نام SimpleClass.vb روی نرم افزار هسته ی محاسبه گر قرار می گیرد و برای طرفین ارتباط Remoting شناسانده می شود.
تحلیل سورس هسته ها:
تابع آماده سازی:
این تابع هسته اصلی را آماده می کند تا دستورات را به پورت 9999 روی localhost و به سمت ماژول SimpleClass بفرستد.کد:Dim sc As SimpleClass Public Function Initialize() As Boolean If sc Is Nothing Then Dim chan As New TcpChannel() ChannelServices.RegisterChannel(chan) Dim t As Type = Type.GetType("Server.SimpleClass") sc = Activator.GetObject(t, "tcp://localhost:9999/SimpleClass") If sc Is Nothing Then MsgBox("Could not initialize the Main Kernel. Check your configuration.") Return False End If End If Return True End Function
این خطوط دستور را تنظیم و برای اجرا روی هسته ی محاسباتی ارسال می کنند.کد:If Not Initialize() Then Return Dim recarrl As ArrayList = sc.NumScan(TextBox1.Text, TextBox2.Text) MsgBox("Data is received from the Computing Kernel. Now press OK to sort data.", 64) For i As Integer = 0 To recarrl.Count - 1 ListBox1.Items.Add(recarrl(i)) Next recarrl = Nothing
ابتدا و انتهای بازه را از طریق جعبه ی متنی دریافت و متد NumScan را فعال می کند. نتیجه ی پردازش در متغیر recarrl ذخیره شده و محتویات آن با یک لوپ وارد جعبه ی لیستی می شود.کد:sc.NumScan(TextBox1.Text, TextBox2.Text)
حالت شنود:
این کد ها با بارگذاری نرم افزار هسته ی محاسباتی اجرا می شوند و پس از دریافت دستور، پردازش را آغاز می کنند.کد:Dim channel As New TcpChannel(9999) ChannelServices.RegisterChannel(channel) RemotingConfiguration.ApplicationName = "SimpleRemotingServer" Dim t As Type = Type.GetType("Server.SimpleClass") RemotingConfiguration.RegisterWellKnownServiceType(t, "SimpleClass", WellKnownObjectMode.SingleCall)]
بنده پروژه ی محاسبات موازی را در این جا پیوست کردم که به راحتی می توان آن را توسعه داد و عملیات های محاسباتی را روی این طرح پیاده نمود.برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
توجه داشته باشید در نمونه ی بالا هسته ی اصلی و هسته ی محاسباتی باید روی یک سیستم اجرا شوند چون آدرس localhost (127.0.0.1) برای اتصال تعریف شده است که به راحتی می توان آن را تغییر داد.
در آینده مسایل مربوط به تحلیل داده ها و مدیریت تبادل اطلاعات تشریح می شود.برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید






پاسخ با نقل قول
Bookmarks