PDA

View Full Version : سوال: انتقال "داده" به صورت Server , Clinet



arash ghafori
شنبه 24 فروردین 1392, 16:50 عصر
با سلام.
من میخواستم یه برنامه به این شکل بنویسم که بیاد یه "داده"(نه متن) از کامپیوتر سرور رو به کامپیوتر کلاینت بفرسته.

من باید با چه مفاهیمی آشنا بشم.

ممنون میشم کامل توضیح بدید که انتقال متن با داده چه تفاوت هایی داره.

amirsajjadi
شنبه 24 فروردین 1392, 17:10 عصر
اگر داده ی شما یک ساختار یا یک کلاس هست که باید ابتدا اون رو سریالیزه کنید بعد از یکی از روش های TCP/IP, Remoting و یا WCF برای سیستم مقصد بفرستید. توی گوگل سرچ کنید چیزای زیادی پیدا میکنید. کتاب "برنامه نویسی شبکه در محیط .NET انتشارات دیباگران مترجم رامین مولاناپور (جلد قهوه ای)" هم در این زمینه خیلی خوبه.

arash ghafori
شنبه 24 فروردین 1392, 19:32 عصر
ممنون از جوابی که دادید.
اما منظور از سریالایز کردن چیه ؟

amirsajjadi
شنبه 24 فروردین 1392, 21:00 عصر
سریالیزه یعنی تبدیل یک Object به سریالی از داده ها (در فرمت XML یا Soap یا Binary) جهت ذخیره در فایل و یا انتقال در شبکه. کاره خاصی نیاز نیست انجام بدی فقط باید Attribute مربوط به سریالیزه رو قبل از کلاس و یا ساختارت بزاری.
مثال :

<Serializable> _
Public Class C1

End Class


[Serializable]
public class c1
{
}

FastCode
شنبه 24 فروردین 1392, 21:50 عصر
این سیستم ها(نه روش) به خاطر سرعت افتضاحی که داره بیشتر تئوری هستن.
به جای این کلاس ها از NetSerializer یا protocol buffers یا NewtonSoft.Json یا .... استفاده کنید

arash ghafori
یک شنبه 25 فروردین 1392, 13:09 عصر
سریالیزه یعنی تبدیل یک Object به سریالی از داده ها (در فرمت XML یا Soap یا Binary) جهت ذخیره در فایل و یا انتقال در شبکه. کاره خاصی نیاز نیست انجام بدی فقط باید Attribute مربوط به سریالیزه رو قبل از کلاس و یا ساختارت بزاری.
مثال :

<Serializable> _
Public Class C1

End Class


[Serializable]
public class c1
{
}


تشکر فراوان از لطف شما.
آقای amirsajjadi آیا با اضافه کردن کلمه ی [Serializable] قبل از اسم کلاس ، فایلی (در فرمت XML یا Soap یا Binary) در کنار پروژه ضمیمه میشه ، که اون رو توسط پروتکل مربوطه ارسال میکنه؟ یا صرفا بدون ایجاد فایل ضمیمه این کار رو انجام میده؟



و دوست عزیز FastCode این مواردی که نام بردید (NetSerializer یا protocol buffers یا NewtonSoft.Json) کلاس هستند ؟ میشه یه مقدار مفهوم تر توضیح بدید.

با تشکر از شما.

FastCode
یک شنبه 25 فروردین 1392, 13:37 عصر
این ها پروژههای مجانی هستن که اگر توی گوگل سرچ کنید در اولین نتیجه لینک دانلودشون میاد.
http://bois.codeplex.com/ هم هست که سازندش ایرانی هست(آقای سالار خلیلزاده) و از همه اینها فشرده تر هست.

amirsajjadi
یک شنبه 25 فروردین 1392, 17:40 عصر
تشکر فراوان از لطف شما.
آقای amirsajjadi آیا با اضافه کردن کلمه ی [Serializable] قبل از اسم کلاس ، فایلی (در فرمت XML یا Soap یا Binary) در کنار پروژه ضمیمه میشه ، که اون رو توسط پروتکل مربوطه ارسال میکنه؟ یا صرفا بدون ایجاد فایل ضمیمه این کار رو انجام میده؟



فرض کنید این کلاس رو میخوایم رو دیسک ذخیره کنیم.

<Serializable> _
Public Class C1

Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Private _family As String
Public Property Family() As String
Get
Return _family
End Get
Set(ByVal value As String)
_family = value
End Set
End Property

End Class

برای سریالیزه کردن

Dim c As New C1
c.Name = "amir"
c.Family = "sajjadi"

Dim s As New Xml.Serialization.XmlSerializer(GetType(C1))
Dim mem As New IO.FileStream("d:\a.txt", IO.FileMode.Create)
s.Serialize(mem, c)
mem.Close()

برای دیسریالیزه کردن

Dim c_temp As New C1
Dim memOpen As New IO.FileStream("d:\a.txt", IO.FileMode.Open)
c_temp = s.Deserialize(memOpen)
MsgBox(c_temp.Name + " " + c_temp.Family)
memOpen.Close()

شما بجای استریمی که به فایل اشاره داره میتونید استریمی رو که (System.Net.Sockets.NetworkStream) در شبکه هست رو بنویسی.

FastCode
یک شنبه 25 فروردین 1392, 18:45 عصر
آقا, اگر واقعا به XML نیاز نیست به کسی آموزش ندید.با آموزش VB6 هیچ فرقی نداره.

@OP
بقیه هم به همین شکل هستن.
https://github.com/tomba/netserializer



serialize:
NetSerializer.Serializer.Initialize(typeof(C1));
NetSerializer.Serializer.Serialize(stream, ob);

deserialize:
NetSerializer.Serializer.Initialize(typeof(C1));
(C1)NetSerializer.Serializer.Deserialize(stream);

amirsajjadi
یک شنبه 25 فروردین 1392, 22:12 عصر
آقا, اگر واقعا به XML نیاز نیست به کسی آموزش ندید.با آموزش VB6 هیچ فرقی نداره.
بقیه هم به همین شکل هستن.
https://github.com/tomba/netserializer

منظورتون رو متوجه نشدم!!!

FastCode
یک شنبه 25 فروردین 1392, 22:19 عصر
منظورتون رو متوجه نشدم!!!
http://myarch.com/why-xml-is-bad-for-humans
http://www.dolda2000.com/~fredrik/doc/xmlds
http://www.codinghorror.com/blog/2008/05/xml-the-angle-bracket-tax.html
http://www.xml.com/pub/a/w3j/s3.nelson.html
یعنی اگر درست استفاده نشه به اندازه VB ضرر داره.یکی از استفاده های نادرستش همین هست که نشون دادید.

amirsajjadi
دوشنبه 26 فروردین 1392, 05:32 صبح
http://myarch.com/why-xml-is-bad-for-humans
http://www.dolda2000.com/~fredrik/doc/xmlds
http://www.codinghorror.com/blog/2008/05/xml-the-angle-bracket-tax.html
http://www.xml.com/pub/a/w3j/s3.nelson.html
یعنی اگر درست استفاده نشه به اندازه VB ضرر داره.یکی از استفاده های نادرستش همین هست که نشون دادید.

ممنون میشم اگه استفاده درستش رو نشون بگید. این سایتهایی رو که دادید همشون طرفدارای json هستند بخاطر همین از xml بد گفتن. همیشه بین json و xml اختلاف نظرهایی بوده و هست.
اگر از نظر امنیت میگید که میشه با یک الگوریتم رمزنگاری فیلدها رو کد کنیم و بعد ذخیره کنیم.

FastCode
دوشنبه 26 فروردین 1392, 11:03 صبح
ممنون میشم اگه استفاده درستش رو نشون بگید. این سایتهایی رو که دادید همشون طرفدارای json هستند بخاطر همین از xml بد گفتن. همیشه بین json و xml اختلاف نظرهایی بوده و هست.
اگر از نظر امنیت میگید که میشه با یک الگوریتم رمزنگاری فیلدها رو کد کنیم و بعد ذخیره کنیم.
منظورم امنیت نیست.
بعضی از این سایت ها json رو به عنوان یک جایگزین که خیلی بد نیست ولی هنوز بده معرفی کردن.
در مواردی که کاربر نیازی به دیدن و تغییر اطلاعات نداره بهتره از فرمت های باینری استفاده بشه.

به نظرتون برنامه نویس های ASMXML هم طرفدار json هستن که توی صفحه اول سایتشون گفتن "از XML استفاده نکنید."؟