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?
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