tags:

views:

129

answers:

1

We are currently developing a SOA application and we will be using WCF to handle all inter-process communication. We have consulted the usual port lists when deciding which ports to use as default and are including configuration options to change these default ports.

To reduce the chance of conflict, I thought to use the IANA port registration form (http://www.iana.org/cgi-bin/usr-port-number.pl) to register the ports we intend to use and was taken aback by the fact that the form still makes the assumption that anyone using ports must be writing their own prototcol! When you consider that WCF is a high level abstraction, and increasing in use, why is in not sufficient to provide just the Binding information?

I have contacted the IANA with regards this and the answer was essentially that I would need to provide the full protocol implementation of WCF, something which could change massively with the flip of a single property.

What is the general feeling on this? Is it worth pursuing registration or is it acceptable to use a port in the hope that no-one in the future conflicts with it? How long will it be before the IANA list is useless as a reference because the majority of apps are not listed?

Opinions are as welcome as answers!

+1  A: 

If the protocol you're making available "could change massively with the flip of a single property", then it's not appropriate to give it a fixed port. The whole point of fixed ports is that they let you make an assumption about what the protocol provided on that port is.

Once you understand that the purpose of the IANA registry is to map ports to protocols, you realise that it will never become useless, because it does exactly what it's meant to do.

You could pick a port for each protocol binding of your service, and register those; you should be able to specify the protocol in the registration by referring to the specification for the protocol used in that binding. I'm not sure if you could or should also specify the details of the service binding - in a sense, it's not a part of the wire protocol, any more than the fact that port 80 on stackoverflow.com will only serve a particular set of URLs, but of course, it is a vital part of understanding what can happen on the port in question.

Tom Anderson
Okay, so a better approach would be to specify a directory service which has a specified and fixed binding say NetTcp. Then the NetTcp binding protocol would be used to satisfy the low level OpCode, Message Type, etc. questions and the contract would satisfy the message sequence. This service has a fixed port and all other services report their existence to it and can run on whatever port the user chooses. Thanks for your input.
Paolono