The MsmqIntegrationBinding is intended for use with
existing, already-written native MSMQ applications. The
NetMsmqBinding is a lot better to use but only works if you
have WCF on both ends of the queue. Therefore, one of these
is always the clear choice for your queuing scenario
depending on what's on the other side. There's nothing
stopping you from hosting separate endpoints for each of
these bindings at the same time if you need communication
with both native and WCF clients. However, the two
endpoints need to be kept with separate queues because the
messages are not compatible.
Correct format is : "net.msmq://MyHost/private/MyQueue"
where I've assumed the following :
- MyHost is your machine name
- MyQueue is name of your private MSMQ name
Only problem in your format was the '$' sign. Everything
else was good
No. Because public queues are created in the domain
controller, similar to any other public resources like
computer, user on the network.
you can create public queue, provided you are in the domain.
MSMQ uses paths and format names to identify a queue. Paths
specify a host name and a QueueName. Optionally, there can
be a Private$ between the host name and the QueueName to
indicate a private queue that is not published in the
Active Directory directory service.
Path names are mapped to “FormatNames” to determine
additional aspects of the address, including routing and
queue manager transfer protocol. The Queue Manager supports
two transfer protocols: native MSMQ protocol and SOAP
Reliable Messaging Protocol (SRMP).
The addressing of a queue in WCF is based on the following
net.msmq: // <host-name> / [private/] <queue-name>
•<host-name> is the name of the machine that hosts the
•[private] is optional. It is used when addressing a Target
Queue that is a private queue.
Windows Activation service.(WAS) .WAS built in top of IIS
which comes from Windows Wista OS
IIS Addressing Considerations
When hosting in IIS, you don't have to worry about creating
or managing the ServiceHost instance. IIS takes care of
this for you behind the scenes. You simply map a .svc
endpoint to your service class, configure the service
endpoints and behaviors in web.config, and let Windows
Communication Foundation manage the process of creating and
configuring the ServiceHost instance at runtime.
In this hosting scenario, the base HTTP address is
determined by the IIS virtual directory housing the service
along with the name of the .svc file. You, as the
developer, really have nothing to say about the base
address since it's fully controlled by the IIS addressing
As a result, Windows Communication Foundation happily
ignores any base addresses you may specify in web.config in
this scenario. If you want to change the base address for
your endpoints, you'll need to move the service to a
different IIS virtual directory.
Not only does IIS control the base address, it forces all
of your endpoints to actually use the same base address
(unlike self-hosting). This means that if you do specify an
absolute address for a particular endpoint, it must start
with the base address corresponding to the virtual
directory or you'll get an exception. As a result, it
really only makes sense to use relative addresses when
hosting in IIS.
IIS-hosted WCF services can make use of HTTP transport
security (for example, HTTPS and HTTP authentication
schemes such as Basic, Digest, and Windows Integrated
Authentication) as long as the IIS virtual directory that
contains the service supports those settings. The HTTP
Transport Security settings on a hosted endpoint's binding
must match the transport security settings on the IIS
virtual directory that contains it
Service contracts describe the operation that service can
provide. For Eg, a Service provide to know the temperature
of the city based on the zip code, this service is called as
Service contract. It will be created using Service and
Operational Contract attribute.
Data contract describes the custom data type which is
exposed to the client. This defines the data types, that are
passed to and from service. Data types like int, string are
identified by the client because it is already mention in
XML schema definition language document, but custom created
class or data types cannot be identified by the client e.g.
Employee data type. By using DataContract we can make client
to be aware of Employee data type that are returning or
passing parameter to the method.
there are 3 ways host wcf service
1) Self Hosting in managed applications
2) Windows Service
4) WIndows Process Actiation Service (WAS)
Using the "Name" we can achieve operational overloading
[OperationContract (Name = "aliasName1")]
int MethodName (int param1, int param2);
[OperationContract (Name = "aliasName2")]
double MethodName (double param1, double param1);
set the authentication mode as follows
<authentication mode="Windows" />
then in the end point set bind the configuration as below.
<endpoint address="basic" binding="basicHttpBinding"
<security mode ="Transport">
<transport clientCredentialType ="Windows"/>
For to USE IIS,make sure that IIS Annonymous authentication