I'm planning on using a MSMQ for two way communication between Client and server. The clients will be a WCF hosted in Window services and communicating to the server over the internet. Obviously I have no control over the firewall,proxy,NAT on the client side,
so I'm wondering what is the proper way to set MSMQ netMsmqBinding ?
Right now in my intiial testing I'm running the server and client on the same pc and i am setting the binding as follows
<!--Address attribute specifies the name of the MSMQ Queue.-->
<endpoint name="msmqTransactionEndpoint" address="net.msmq://localhost/UpdateEmpTwoWay/UpdateEmp" binding="netMsmqBinding"
bindingConfiguration="myMSMQ" contract="EmployeeUpdateReportComponent.IEmployee"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.msmq://localhost/private/"/>
<!--Both Mex and HttpBinding uses http://localhost:8888 port-->
<add baseAddress="http://localhost:57829"/>
</baseAddresses>
</host>
</service>
But I have a feeling this won't work when deploying over the internet because "localhost" won't translate to the machine address (much less worrying about NAT translation) and that port,ICMP traffic might be blocked by the clients firewall .
What is the proper way to handle this issue ? I saw there Public and private queues ,which we have to setup .but i've not idea if i set public queues on server for Message Queuing then its will work or not .
so just tell me when win form wcf client apps will run then how can i open my custom port like "6667" and also guide me what library or what approach i should use as a result response should come from client side router to pc and firewall will not block anything. please discuss this issue with real life scenario how people handle this kind of situation in real life.
Note : if you've any other idea for two way communication between server and client ,let me know its too
thanks