PDA

View Full Version : ایجاد مسنجر شبکه های داخلی



mousa1992
شنبه 21 مرداد 1391, 00:38 صبح
سلام دوستان

میخوام یه مسنجر داشته باشم توی برنامه ام و نیازه برای برقراری ارتباط سرور با کلاینت ها
از سوکت نمیشه استفاده کرد
و از طریق دیتابیس اینو امتحان کردم که کلاینت و سرور پیام هاشونو توی دیتابیس ذخیره میکنن و فیلد ی مربوط به شرط نمایش مسیج هست که اونو true میکنه و کلاینت مورد نظر و یا ... اونو میخونه
که در این روش تداخل هایی ایجاد میشه در ارتباط با دیتابیس
رفتم سراغ XML بار بانک سبک تر شد و قسمتی که اطلاعات به Xml واگذار کردم
ایا راهی بهتر سراغ دارید؟ ( باز هم گاهی تداخل پیدا میکنه در ارتباط برقرار کردن با فایل )

ali_habibi1384
شنبه 21 مرداد 1391, 01:09 صبح
همونطور كه ميبينيد برنامه يك چت ساده كه توسط SQL مديريت ميشه:
http://0.1.0.img98.net/out.php/i426860_chatter.jpg
ميتونيد براي تست توي شبكه يا رو كامپيوتر خودتون فقط با تغيير كانكشن استرينگ ازش استفاده كنيد.
ديتا بيس برنامه هم بصورت Script قرار داره و فقط كافيه اونو توي يك Qury اجرا كنيد تا همه چيز ست بشه.

mousa1992
شنبه 21 مرداد 1391, 01:35 صبح
ممنون از کمکتون
یه کم کار داره تا انالیزش کنم :چشمک:
ممنون میشم در مورد تیکه کد هایی که گذاشتم توضیحات مختصری رو لطف کنید


SqlDependency dependency = new SqlDependency(cmd);
اولین باره میبینمش


cmd.Notification = null;
//******
cmd.ExecuteReader(CommandBehavior.CloseConnection)

ممنون از توجهتون

ali_habibi1384
شنبه 21 مرداد 1391, 02:11 صبح
يك رويداد وابسته به اون پراسيجر تعريف كردم كه هر موقع پيام جديد اومد بصورت خودكار بدون استفاده از تايمر اونو خودش بخونه و توي برنامه بياره.يه چيزي مثل ايونت روي پايگاه داده.
از اين روش بيشتر براي Refresh كردن داده ها هنگامي كه برنامه تحت شبكه استفاده ميكنيد مورد استفاده قرار ميگيره و ديگه نياز نيست يه تايمر بذاري و مادام از sql اطلاعات رو بخونيد.اين متغير دادهاي جديد رو براي من جمع آوري ميكنه دقيقا مثل يك ايونت به محض اجرا خودش فراخوني ميشه.

mousa1992
شنبه 21 مرداد 1391, 12:41 عصر
توی ساخت دیتابیس کلی ارور داد ! از SqlServer2008 استفاده کردم ممکنه به خاطر ورژن باشه و یا ..


يك رويداد وابسته به اون پراسيجر تعريف كردم كه هر موقع پيام جديد اومد بصورت خودكار بدون استفاده از تايمر اونو خودش بخونه و توي برنامه بياره.يه چيزي مثل ايونت روي پايگاه داده.

روش جالب و جذابیه خیلی مشتاقش شدم :لبخند: همیشه به این فکر میکردم که میشه بدون استفاده از تایمر و thread و .. اطلاعات بانک رو چک کرد
ایا این روش از لحاظ بهینه بودن با استفاده از background ها تفاوت داره ؟
تشکر

ali_habibi1384
شنبه 21 مرداد 1391, 19:43 عصر
ميخواستم يه آموزش كلي در رابطه با موضوع dependency توي تاپيك بذارم اما گويا ظاهرا دوستان علاقه اي نشون ندادن.فقط دانلود كردن و رفتن نه نظري و نه پيشنهادي ...ظاهرا همه دنبال ماهيند تا ماهيگيري:چشمک:

mousa1992
یک شنبه 22 مرداد 1391, 23:24 عصر
ميخواستم يه آموزش كلي در رابطه با موضوع dependency توي تاپيك بذارم اما گويا ظاهرا دوستان علاقه اي نشون ندادن.فقط دانلود كردن و رفتن نه نظري و نه پيشنهادي ...ظاهرا همه دنبال ماهيند تا ماهيگيري
خیلی دوست داشتم درموردش بدونم ( ولی خب گویا باید خودم برم دنبالش :لبخند:) همین که با این موضوع اشنا شدم خودش خوبه و خیلی جای تشکر داره
چندتا سوال دارم در مورد بعضی از قسمت ها اگه وقت کردی جواب بدید ممنون میشم


SqlClientPermission perm = new SqlClientPermission(System.Security.Permissions.Pe rmissionState.Unrestricted);
perm.Demand();


permission چیو بررسی میکنه ؟ و متد demand چه کاری رو انجام میده ؟




if(dlg.ShowDialog() == DialogResult.OK)


این قسمت برنامه چطوری متوجه میشه که ok فشرده شده ؟(این قسمتش خیلی جالب بود برام ، که با یک فرم مثل messagebox برخورد میشه )





dt.Load(cmd.ExecuteReader(CommandBehavior.CloseCon nection));

در این قسمت پارامتری که ارسال شده چه کاری رو انجام میده ؟


try
{
dt.Load(cmd.ExecuteReader());
}
finally
{
Conn.Close();
}


استفاده از متد لود برام جالب بود برای پر کردن جدول و روشی جدید ممنون بابتش

تشکر از برنامه خوبی که گذاشتی من که خیلی ازش استفاده کردم و متاسفم بابت این که دوستان همکاری نمیکنن و حتی از نحوه ی کد نویسی هم استفاده میکنم
خب طبیعتا نوشتن کد توسط یک حرفه ای با کسی که چند ماهه وارد دنیای برنامه نویسی شده خیلی متفاوته