views:

176

answers:

2

Simple issue. I'm working on a proof-of-concept for an application with additional database connection, so I will create a WCF service to wrap around the database. Multi-user environments will get this service installed on a centralized server with a client application on their local system. These users will automatically have to deal with firewall issues, so this is acceptable.

But the single-user environments will have the service and client application running on a single system. The service host doesn't have a definite shape right now, but it's likely that it will be hosted within the application itself or as a Windows service.

Unfortunately, the client application is a WIN32 Delphi application which needs a simple way to access the service. Preferably, the single-user version should use the same technique to access the server as the multi-user version, which means that it behaves like a SOAP client, with a WSDL imported and converted to Delphi code.

Still not a problem, but I have to consider possible problems that we can encounter in this setup, with the most important issue: possible firewall that closed the connection port.

So, does anyone know about any firewall problems that can occur in this single-user environment?

+2  A: 

You haven't mentioned which WCF channel you're using- I'll assume basicHttpBinding. Generally, if your local service is bound to 127.0.0.1 using self-hosting, and the on-box client accesses it that way, you should be fine. No firewalls I'm aware of will screw with your loopback adapter. If you bind the service to the machine's IP though, you may subject yourself to firewall fun.

If you have WCF 3.5 available on the client on both ends (sorry, I don't know anything about Delphi), have a go with netNamedPipeBinding.

nitzmahone
We basically can use any WCF channel, but Delphi likes to connect to some kind of HTTP binding. It's still a proof-of-concept so other alternatives are still open.
Workshop Alex
Added netNamedPipeBinding as the best option for local-only stuff- not sure if by "Win32" Delphi you mean non-.NET, my Delphi knowledge is zilch.
nitzmahone
Yes, Delphi is non-NET which limits my options a bit. With a named pipe solution, I will have a lot to discover about how to build a named pipe client. I have experience with named pipes, just don't know how .NET will send over the data. So, for the POC a more basic HTTP solution is preferred...
Workshop Alex
+1  A: 

You didn't mention which version of Delphi you use but I once had hard time making Delphi 2005 import a WCF service with basicHttpBinding. As the WSDL is split among many pages, the SOAP import wizard in Delphi wasn't capable of understanding it. I finally ended up writing an ASMX wrapper around the WCF service for Delphi clients.

Darin Dimitrov
I used the Delphi 2007 tag. :-) The service itself will be simple, since we won't use any complex classes for this project. (Just basic data types and some data will be passed as XML strings.) The service is a wrapper around a simple data store. Delphi 2007 also does a better job at importing .NET WSDL's. This has been improved.
Workshop Alex