Search code examples
c#.netwcfmsmq.net-remoting

Inter-server communication via known ports


Our product system consists of an IIS 6.0 server, behind which is a Java SOA server, behind both of which is an Oracle database server.

For various reasons, we need a windows service running on the Java SOA server that stores opaque blobs associated with GUIDs. Here is a simplified version of the interface:

interface IBlobService
{
    void PutBlob(Guid key, byte[] data);
    byte[] GetBlob(Guid key);
}

The main user of the IBlobService is the web front-end running on the IIS server. We could use WCF or .NET remoting over a custom port for communication between the servers. However, our application is subject to strict accreditation requirements. We would highly prefer to use a known port for communication, rather than a custom port.

We can't use named pipes, because we need to communicate between the servers. We had considered using MSMQ, as it uses a known port, but MSMQ limits message size to 4 MB. We need to transfer far more than that -- up to 60 MB at least.

What other capabilities (if any) does .NET expose that would allow communication between servers via a known port?


Solution

  • If MSMQ is the facility of choice, I would chunk the data and reassemble it.

    The contents of your message body is opaque, so including with each chunk data such as id, sequence, size, and a CRC is all possible.

    You might want to consider WCF binary streams. See this article from MSDN: http://msdn.microsoft.com/en-us/library/ms733742.aspx