Recently, I was tasked with doing some serious re-factoring on an application where the UI was WinForms and the back end was native C++. The intent was to re-factor the native code into C# because of the performance hit we were taking with the interop between the managed/unmanaged code (this is a extremely processor intensive application) and because the native code back end was beginning to cause some serious limitations regarding feature extensibility. Previously, the interop was via callbacks. However, with the redesign, callbacks would no longer be appropriate. This is where the Pipes concept comes in. After a bit of experimenting, I determined that using a Pipe Server to send data from the unmanaged code to the managed code provided excellent performance. Thus far, the performance of the application has dramatically improved from the original design. Has anyone else tried this? And if so, have you seen any negative effects?