我是 WCF 世界的新手。我只是下载了一个代码并看到了 wcf 服务配置文件,但由于我缺乏知识,我对 WCF 服务的配置文件中的条目感到困惑。我浏览了一些在线文章,但我仍然感到困惑。
这是我的问题
1)<service name="WCFService.Service"
何时需要服务名称?我可以省略服务名称吗?如果可以,可能会出现什么样的问题?
2)我可以将任何名称设置为服务名称,如 abc.xyz 还是有一些分配服务名称的规则?
3)基地址有什么用?如果省略基地址,那么可能是什么问题。当需要基地址时。根据下面的配置条目,有两个基地址...为什么需要两个基地址。当人们给出更多的基地址时?只需查看下面的 2 个基地址,然后告诉我为什么人们给出两个基地址,为什么不给出一个……有什么具体原因吗?
4)有两个端点一个是tcp,另一个是mex。如果我省略 mex 基地址,那么服务将无法被发现?如果是,这意味着没有人可以从 VS IDE 或 svcutil 创建代理......我是对的。
5)如果mex端点将被删除,那么如何与服务交互......必须有其他出路。如果是这样,那么告诉我如何作为客户端与服务进行交互。
6)
只需查看上面的 mex 端点并告诉我我们可以写 mex 端点 url 之类的东西吗
**net.tcp://localhost:1645/MyServer/mex** instead of ChatServer ??
实际上 wcf 服务托管在名为 ChatServer 的 win 表单项目中。这是 url 变成net.tcp://localhost:1645/ChatServer/mex 的原因吗?
我见过很多人写 mex 端点,这里没有 url 分配给 mex 端点的地址标签....为什么?当我应该像上面那样编写 mex 端点时...请举例说明。
7) /mex....是什么意思net.tcp://localhost:1645/ChatServer/mex /mex 是强制的,mex 是固定词?
8) 现在看到 tcp 端点
tcp 端点地址没有 url 而 tcp 这个词已分配给地址属性...为什么?
我们不能将任何有效的 url 分配给 tcp 端点的地址字段吗?
9) tcp 端点的地址字段将始终具有称为“tcp”的固定词,无论是规则还是约定。
10) 如果我需要添加另一个名为 wsdualhttp 绑定的端点,那么我需要在配置文件中写入什么
11)假设某个开发服务将托管在 IIS 中,但客户端可以是另一个 asp.net Web 应用程序并赢得应用程序,那么他/她需要做什么?那么应该使用什么 url 客户端从 VS ide 创建代理?任何人都可以提供示例配置条目。
12) 如果我希望人们可以使用两个 url 来创建我的服务代理,如何编写配置文件......一个是示例net.tcp://localhost:1645/ChatServer/mex,另一个是http:/ /localhost:1645/ChatServer/message.svc
我知道我的问题非常基本,但我仍然无法对这些问题进行分类。还指导我如何拥有丰富的知识来大胆地创建配置文件条目。
是否有任何工具可以为我的服务创建正确的配置条目....我是否有任何自动化应用程序可以代表开发人员执行此操作。谢谢
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="WCFService.Service" behaviorConfiguration="behaviorConfig">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:1645/ChatServer/"/>
<add baseAddress="http://localhost:1648/ChatServer/"/>
</baseAddresses>
</host>
<endpoint address="tcp"
binding="netTcpBinding"
bindingConfiguration="tcpBinding"
contract="ChatService.IChat"/>
<endpoint address="net.tcp://localhost:1645/ChatServer/mex"
binding="mexTcpBinding"
contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviorConfig">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="tcpBinding"
maxBufferSize="67108864"
maxReceivedMessageSize="67108864"
maxBufferPoolSize="67108864"
transferMode="Buffered"
closeTimeout="00:00:10"
openTimeout="00:00:10"
receiveTimeout="00:20:00"
sendTimeout="00:01:00"
maxConnections="100">
<security mode="None">
</security>
<readerQuotas maxArrayLength="67108864"
maxBytesPerRead="67108864"
maxStringContentLength="67108864"/>
<reliableSession enabled="true" inactivityTimeout="00:20:00"/>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
我的编辑部分从这里开始
3)你在说什么共同的部分。您在我的完整配置文件中看到了什么共同部分...请举例说明。
你说....如果省略基地址,则每次都需要多次指定公共部分。如果为多个传输协议指定端点,则需要多个基地址
你能用例子让我理解你所说的省略基地址吗,因为在阅读了你对第 3 点的回答后,我不清楚这些事情
4) 如果我禁用 mex 端点,那么如何使用 svcutil 创建 wsdl?如果我给我的服务 dll,那么客户端可以解码代码并获得我的完整源代码。你能更详细地告诉我你想对第 4 点说什么吗
12) 如果我公开两个 url 来使用我的服务,那么 asp.net 客户端可以使用 tcp url 创建服务代理,例如net.tcp://localhost:1645/ChatServer/mex ?? Web客户端使用tcp绑定会有什么问题吗?因为 tcp 状态已满,但 web 是无状态的……这就是为什么我要问 web 客户端使用 tcp 绑定 url net.tcp://localhost:1645/ChatServer/mex会有任何问题
13)在我的示例中,mex 端点看起来像
但是很多人创建了 mex 端点,例如
所以告诉我两个 mex 端点之间有什么区别......还告诉我什么时候应该去 1ts mex 端点,什么时候人们应该去第二个 mex 端点
14)在我的情况下,如果我会像这样写 mex end
和 tcp 端点之类的
那会是什么结果。我的服务是否会被发现。在这种情况下,我应该使用什么地址来创建服务代理。
如果可能的话,请用迷你样本回答我的问题以便于理解,因为我是 WCF 的新手......谢谢