我正在学习 wcf,所以我经常想到问题。最近我开发了一个小型计算器 wcf 服务。我有三个项目,一个有服务合同,另一个有 wcf 服务,主类是我自己托管服务的地方。在 app.config 文件中,我给了我的端点地址 net.tcp://localhost:5555/Calculator 我一直认为我必须在服务 url 的末尾给出我的服务类名称。在我的应用程序中,我的服务 url 看起来像上面,计算器是我的服务类名称。
就在几天前,我正在浏览一个 wcf 代码,我看到那里的服务类名称是chatsrv但服务 url 看起来像net.tcp://localhost:5555/chat
i like to know that can i give any name to my service at the end?
1)如果是这样,那么自我主机代码如何理解需要启动哪个url服务?
2)如果我设置为false,<serviceMetadata httpGetEnabled="false"/>
那么其他客户端如何使用我的服务,因为我已经设置httpGetEnabled="false"
并自行托管服务,但是从其他.net项目我可以通过通道工厂使用该服务并作为添加参考?httpGetEnabled="true"
所以告诉我如果 false 工作正常,人们需要设置什么?
不管我知道,如果httpGetEnabled="false"
mex 端点不会暴露给其他客户端,因此没有其他客户端可能无法添加对我的服务参考项目的参考。我是新来的,所以对内部服务不好。如果可能,请详细讨论。
3)为什么当客户端可以在没有 mex 端点的情况下通过通道工厂实例化和调用服务功能时需要 mex 端点,那么为什么以及何时需要 mex 端点?
谢谢
更新
1)我想知道我可以给任何 url 作为端点地址吗?我已将此net.tcp://localhost:5555/chat作为我的端点地址,它可以工作,但是如果我给net.tcp://localhost:5555/Mychat之类的端点地址,那么它可以工作吗?
我想知道给出端点地址 url 的约定是什么?
2) 现在关于 mex 端点。在我的服务配置文件中,我禁用了 mex,但我仍然看到任何客户端都可以添加参考,例如net.tcp://localhost:5555/chat/mex怎么可能?
当 mex 被禁用时,mex 点不应该在客户端之前暴露或访问......我是对的吗?
请指导我。谢谢