将地址指定为端点的一部分时,格式为:
http://localhost:8080/MyWCFService或net.tcp:// localhost:8080 / MyWCFService
指南(书籍,MSDN等)声明'/ MyWCFService'是服务的“路径”。
这究竟是什么意思?
它是服务实现的类型(而不是物理目录路径,虚拟根路径,命名空间等)?
无论实际是什么,CLR / WCF库如何利用该数据来完成其工作,例如:如果是一个类型,我可以看到servicehost(serviceHost.Open();)能够立即调用相关对象并调用所请求的方法。
答案 0 :(得分:1)
/MyWCFService
是ASP.NET中的虚拟目录。你可能有类似的东西
您的解决方案或项目中的/MyWCFService/SomeService.svc
。
答案 1 :(得分:1)
在您的示例中,MyWCFService
不是物理地址,它对应于为特定绑定配置的EndPoint。
一个ServiceHost可以托管多个服务,每个服务都有多个endPoints。
如果您的服务由IIS托管,则基地址将是.svc文件的虚拟路径。
答案 2 :(得分:1)
地址告诉您服务的位置。它提供服务的位置以及与服务通信的传输协议。
localhost部分用于目标机器,而'/ MyWCFService'部分是可选的特定路径。
答案 3 :(得分:1)
地址只是一个字符串,用于描述服务公开其服务或客户端连接的“位置”。默认情况下,它与任何“物理”无关,例如它不是指文件或任何东西。
如果在IIS中托管您的服务,则机器和端口之后的地址的第一部分实际上是您的* .svc文件所在的IIS虚拟目录的名称。
对于MSMQ,您的服务地址必须与MSMQ队列名称相对应(反之亦然)。
除了这些情况之外 - 地址实际上只是描述在哪里找到特定服务的一种方式。
第一部分http://,https://,net.tcp://等通常称为“架构”,并且松散地引用用于将客户端连接到服务的传输协议。
第二部分通常是机器名称,可选择带有端口号。此部分连接到物理实体,当然 - 您的机器必须存在,端口号必须可用且可用。
但是第三部分,你称之为服务的“路径”,如果你自己托管你的服务(例如在控制台应用程序或Windows NT服务中),它可以真正成为你想要的任何东西。如果您是自托管,则该路径与磁盘,虚拟目录或其他方面的任何物理路径完全无关。
服务主机 - 实际托管和运行服务类的代码片段,它只是一个常规的.NET类 - 将使用地址,绑定和契约公开/发布任意数量的端点。因此,服务主机定义哪些URI对其服务有效。然后,客户端需要通过指定相同的地址 - 模式(http://,https://,net.tcp://),计算机名称和可选端口以及路径来连接到其中一个已发布的端点。的服务。
马克