1.3. Addresses(地址)
在WCF,每一个服务关联到一个唯一的地址。地址提供了两个重要的元素:服务地址和传输端点或者传输视图(transport schema)用于和服务通信。本地地址端口指向目标机器的名称、站点或者网络的地址;一个通信端口(port),管道(pipe)或者队列(queue);一个可选的特定的路径或者URI。一个URI是一个通用资源识别符(Universal Resource Identifier),并且可以成为一个唯一的字符串,如:服务名或者GUID。
WCF1.0 支持下列传输视图:
· HTTP
· TCP
· Peer network
· IPC (Inter-Process Communication over named pipes)
· MSMQ
地址总是有此格式:[base address]/[optional URI]
基地址总是用此格式:[transport]://[machine or domain][:optional port]
这有一些地址的例子:
http://localhost:8001
http://localhost:8001/MyService
net.tcp://localhost:8002/MyService
net.pipe://localhost/MyPipe
net.msmq://localhost/private/MyService
net.msmq://localhost/MyService
这是读一个地址的例子:http://localhost:8001/意思是“使用HTTP,通过localhost去访问机器,机器端口8001等待调用。”如果这样一个URI,http://localhost:8001/MyService意思是“使用HTTP,通过localhost去访问机器,机器端口8001下的MyService等待调用。”
1.3.1. TCP Addresses(TCP地址)
TCP地址为了传输使用net.tcp,下面有一个包括端口的例子:
net.tcp://localhost:8002/MyService
当一个端口没有被指定,TCP默认端口为808:
net.tcp://localhost/MyService
可以两个TCP地址(相同的宿主,它将在后面的章节进行讨论)共享同一个端口:
net.tcp://localhost:8002/MyService
net.tcp://localhost:8002/MyOtherService
使用的基于TCP的地址将贯穿全书。
注意:你能配置共享同一个端口的TCP地址。
1.3.2. HTTP Addresses(HTTP地址)
HTTP地址为了传输使用http,它也能为了安全性使用https。你可以代表性的使用HTTP地址面向外部的基于因特网的服务,也能像下面指定一个端口:
http://localhost:8001
当端口没有被指定,默认是80。和TCP地址相似,相同宿主的两个TCP地址可以共享端点,甚至在相同的机器上也可以。
基于IPC的地址的使用将贯穿本书。
1.3.3. IPC Addresses(IPC地址)
IPC地址为了传输使用net.pipe,它使用的是Windows命名管道机制(Windows named pipe mechanism)。在WCF中,服务使用命名管道仅能从同一个机器上允许调用。因此,你必须清楚指定的本机名称或者localhost。例子:
net.pipe://localhost/MyPipe
你只能每一台机器打开一个命名管线一次,因此它不可能两个命名管线地址在同一台机器上共享一个管线名称。
基于IPC的地址的使用将贯穿本书。
1.3.4. MSMQ Addresses(MSMQ地址)
MSMQ地址为了传输使用net.msmq来使用微软消息队列(Microsoft Message Queue)。你必须指定队列名称。当你处理私有(private)队列,你必须指定队列类型,而不能使用公共(public)队列:
net.msmq://localhost/private/MyService
net.msmq://localhost/MyService
第九章将讨论如何制作队列调用。
1.3.5. Peer Network Address(Peer Network地址)
Peer network地址为了传输使用net.p2p,它使用了Windows peer network transport。你必须指定Peer network名称以及唯一的路径和端口。使用和配置peer network超出了本书的范围,你将了解一些peer network在后续的章节。