I spent some time getting familiar again with my ancient remote debugger
code. The PS2-side server was written in C and ASM, while the PC-side
client was originally written in C only.
Recently, I've changed my mind and decided to use C# and the powerful
.NET Framework to develop the client instead. This step obviously
requires to port the TCP/IP communications code from C to C#. So far so
good.
While .NET is THE technology when it comes to rapid OOP and its TCP/IP
support is indeed excellent, it turned out that it really sucks when
trying to work with pointers and structures, i.e. unmanaged code (FYI,
the format of the UDP packets are defined using C struct's).
The way .NET handles unmanaged code is complicated and may result in
speed losses compared to the original C code. Therefore, I consider
moving the communications code (C) to an additional DLL which can be
invoked by the client (C#).
This approach has several advantages:
- server and client can use the same code base
- the code remains portable
- the DLL can be used by any application, enabling "third-party" clients
Opinions?
code. The PS2-side server was written in C and ASM, while the PC-side
client was originally written in C only.
Recently, I've changed my mind and decided to use C# and the powerful
.NET Framework to develop the client instead. This step obviously
requires to port the TCP/IP communications code from C to C#. So far so
good.
While .NET is THE technology when it comes to rapid OOP and its TCP/IP
support is indeed excellent, it turned out that it really sucks when
trying to work with pointers and structures, i.e. unmanaged code (FYI,
the format of the UDP packets are defined using C struct's).
The way .NET handles unmanaged code is complicated and may result in
speed losses compared to the original C code. Therefore, I consider
moving the communications code (C) to an additional DLL which can be
invoked by the client (C#).
This approach has several advantages:
- server and client can use the same code base
- the code remains portable
- the DLL can be used by any application, enabling "third-party" clients
Opinions?


Comment