![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | Application Messaging over Sockets I am not certain where to post my request so I'll start here. I am looking for guidance in implementing a socket framework for inter-application communication and then creating a protocol for use there-in. I do not believe remoting or webservices are viable solutions here. I have taken a look a number of articles on the web that relate to my needs, however none that I have found are broad enough to cover all of my needs. Each of them were different enough in their implementation that just ended up adding confusion to my approach. I have been working with the ALAZ library posted on the codeproject, if for no other reason than to just get a better understanding. Even still, this solution doesn't offer the ability for one of my considerations - limiting bandwidth per connection. Here is a list of my considerations: Support Data Encryption - I am unclear on how to implement this handshaking. Most articles I have seen rely on the developer to code the encryption so that it is done before any connection is made. It seems to me that in the case of SMTP - the server reports it's verbs such as StartTLS and then both the client and the server negotiate the terms of the TLS. I would very much like for the administrator to configure the server to support SSL certs and pick the cert, the client then negotiates with the server the PKI exchange. Support Data Compression - This might be problematic at least for performance. It seems that there is no way to get around a predetermined buffer limit. Because of that, scaling packets and then encrypting/compressing them tends to muck up the purpose of the buffer. It just seems to me that there would be a lot of wasted space if the data is not compressed. Support Bandwidth Throttling - In some cases, the user base will have less desirable network infrastructures. It will be important for these administrators to be able to limit the impact this solutions has on their bandwidth. Here it seems that the solution is to use a stream and override the read/write methods in derived class. My issue is that if I am using the underlying stream in a socket, how then would I limit the bandwidth - this goes back to the ALAZ framework that I have been looking at. Support Flexible Protocol - Initially, as a prototype, the protocol will consist of: serialized commands - I opted for this over text/xml for simplicity in parsing; file transfers - I break the file into chucks to meet the buffer size criteria. As needed, we will grow the command listing to support other areas of the solution that adopt this. I believe I have this part underwraps, if any of you have input/guidance on this feel free to share. Support Framework 2.0 / C# 2005 - I understand that 3.x might have given us this functionality out of the box, however, this solution is a subset of a larger solution and the larger piece has set this requirement. Testability/Diagnostics - The primary goal for this solution was to replace a legacy solution that has been difficult to debug since inception with varying results across the customer base. Some things that occur at client sites simply have never been replicated in our lab environments. Perhaps this is due to load or infrastructure. This initiative will attempt to implement unit testing and auto testing. This might just be a weakness on my part, but it doesn't seem like creating a mock class for testing database functionality; instead it seems like I need to test the actual conversation - since the networking code is the piece that should be suspect. I am not opposed in looking for complete solutions to purchase over developing my own, I just haven't seen a product that matches my need. While the developer in me wants to roll my own solution, it might make sense to look at mature products. Thanks in advance |
My System Specs![]() |
![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Launch .NET application through notification or windows messaging | .NET General | |||
| Slow streaming TCP sockets | .NET General | |||
| System Sockets and Winsock in VB6 | .NET General | |||
| My company blocks MSN messaging or any instant messaging at work | Live Messenger | |||
| Connection problems using TCP/IP sockets | Vista hardware & devices | |||