Cựu Học Sinh Lê Quý Đôn - Long An

Cựu Học Sinh Lê Quý Đôn - Long An (http://www.lqdlongan.com/forum/index.php)
-   Học lập trình (http://www.lqdlongan.com/forum/forumdisplay.php?f=105)
-   -   Serialize object trong C# và C++ (http://www.lqdlongan.com/forum/showthread.php?t=6641)

fantomas_la 03-12-2008 09:36 AM

Serialize object trong C# và C++
 
Xin chào mọi người, hiện tại em đang gặp phải một thắc mắc nên pót lên nhờ mọi người cho ý kiến.
Trong MFC có thể dùng CObject và CArchive
[Only registered and activated users can see links. Click Here To Register...]

Trong C# có thể dung ISerializable
[Only registered and activated users can see links. Click Here To Register...]

Đó là sử dụng riêng rẽ cho từng môi trường. Nhưng giả sử muốn truyền Object nào đó qua network (dùng socket chẳng hạn) thì liệu hai method serialize trên có hiểu đựoc hay không?
Xin mọi người cho ý kiến với. Em đang cần tìm hiểu cái vấn đề này.

PS: Serialize ra XML rồi truyền qua Socket có khả thi không?
Em đang cần một phương thức chuẩn (Microsoft support càng tốt), chứ không phải user defined đâu.

myhanh 03-12-2008 10:10 AM

Ðề: Serialize object trong C# và C++
 
Truyền qua mạng? Vậy phụ thuộc vào giao thức em truyền! Nếu chỉ dùng TCP/IP bình thường không dùng cái chi nữa vậy phải tự em định nghĩa rồi.

92A01 03-12-2008 10:15 AM

Ðề: Serialize object trong C# và C++
 
Microsoft có công nghệ Dotnet Remoting. Em có thể search trên mạng. Đây là chuẩn của Microsoft dùng để gọi phương thức từ xa (giống như RMI hay CORBA).

92A01 03-12-2008 10:19 AM

Ðề: Serialize object trong C# và C++
 
Em cũng có thể sử dụng web service, SOAP.

fantomas_la 03-12-2008 12:51 PM

Ðề: Serialize object trong C# và C++
 
Trích:

Nguyên văn bởi myhanh (Post 46900)
Truyền qua mạng? Vậy phụ thuộc vào giao thức em truyền! Nếu chỉ dùng TCP/IP bình thường không dùng cái chi nữa vậy phải tự em định nghĩa rồi.

Em chỉ dùng Socket bình thường thôi. Dữ liệu truyền nhận là bytestream. Ý em ở đây là có sự khác biệt nào không giữa khái niệm Serialization của C++(Dùng MFC thông qua CArchive) va Serialization của C#. C++ và C# cũng của Microsoft ấy mà, không biết có chuẩn hay không?

Có thể minh họa như thế này:
Có Object A được định nghĩa ở cả hai platform C++ và C#
B1: C++ program Serialize Object A to bytestream ()
B2: Send chuỗi byte đó qua Network
B3: C# receive chuỗi byte. Liệu có deserialize được object A hay không?

fantomas_la 03-12-2008 12:52 PM

Ðề: Serialize object trong C# và C++
 
Trích:

Nguyên văn bởi 92A01 (Post 46904)
Em cũng có thể sử dụng web service, SOAP.

Em được yêu cầu sử dụng socket thuần thui anh. :cry::cry: thế mới khổ!!!!

92A01 03-12-2008 01:01 PM

Ðề: Serialize object trong C# và C++
 
nếu em lập trình socket thì không có rồi. Có sẵn không dùng mà lại phải tự làm?

fantomas_la 03-12-2008 01:07 PM

Ðề: Serialize object trong C# và C++
 
Cách đây vài hôm em co research được cái này Protocol Buffers. Cái này là của Google đó. Cái này cũng hay lắm, em đã nghiên cứu và cũng đã viết được sample theo như yêu cầu ở trên rùi.
Vấn đề là ở chỗ việc việc sử dụng nó hơi phức tạp + Open source nữa nên khách hàng họ không chịu.

Mọi người có thể tham khảo tại địa chỉ bên dưới.
[Only registered and activated users can see links. Click Here To Register...]

fantomas_la 03-12-2008 01:10 PM

Ðề: Serialize object trong C# và C++
 
Trích:

Nguyên văn bởi 92A01 (Post 46914)
nếu em lập trình socket thì không có rồi. Có sẵn không dùng mà lại phải tự làm?

Vấn đề là ở chỗ khách hàng sẽ viết bên C++ còn tụi em sẽ viết C#. Mình muốn sử dụng cái gì thì bên nó phải đồng ý mới được. Cái C++ program nó đã có sãn nguyên hệ thống rùi, giờ chỉ chỉnh sửa phần communicating thôi, chứ không phải viết mới hoàn toàn.

myhanh 03-12-2008 01:26 PM

Ðề: Serialize object trong C# và C++
 
Tốt nhất mình định nghĩa giao thức
Sử dụng XML là tốt nhất.
A gửi cho B 1 văn bản XML theo DTD đã thống nhất.
B nhận được rồi parse XML để lấy thông tin.


Múi giờ GMT +7. Hiện tại là 02:36 AM.

Website sử dụng phần mềm vBulletin phiên bản 3.6.8
do Công ty TNHH Jelsoft giữ bản quyền từ 2000 - 2024.
Hội CHS Lê Quý Đôn-Long An giữ bản quyền nội dung của website này