我刚刚创建了我的第一个WCF示例。到目前为止,我可以在本地机器上创建服务并由客户端使用。当我第一次读到WCF时,我看到了一些关于END POINTS的解释,我不明白为什么它真正用于。下面是我的代码,有人请告诉我为什么我应该使用结束点,以及如何添加结束点到我的示例应用程序。
namespace MvcApplicationrazor.Services
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
string MyOperation1(string myValue);
[OperationContract]
string MyOperation2(DataContract1 dataContractValue);
[OperationContract]
string HelloWorld(string str);
}
[DataContract]
public class DataContract1
{
string firstName;
string lastName;
[DataMember]
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
[DataMember]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
}
}
namespace MvcApplicationrazor.Services
{
public class MyService : IMyService
{
public string MyOperation1(string myValue)
{
return "Hello: " + myValue;
}
public string MyOperation2(DataContract1 dataContractValue)
{
return "Hello: " + dataContractValue.FirstName;
}
public string HelloWorld(string str)
{
return "Helloworld from " + str;
}
}
}
客户: FirstServiceReference.MyServiceClient cc = new FirstServiceReference.MyServiceClient();
string a = cc.MyOperation1("chamara");
与Windows通信基础(WCF)服务的所有通信都通过该服务的端点进行。端点为客户端提供对WCF服务所提供功能的访问。
每个端点由四个属性组成:
- 一个地址,指示在哪里可以找到端点。
- 指定客户端如何与端点通信的绑定。
- 标识可用操作的合同。
- 指定端点本地实现细节的一组行为。
端点的结构
每个端点由以下内容组成:
-
Address:地址唯一标识端点,并告诉服务的潜在消费者它所在的位置。它在WCF对象模型中由EndpointAddress类表示。EndpointAddress类包含:
-
Uri属性,表示服务的地址
-
标识属性,表示服务的安全标识和可选消息头的集合。可选消息头用于提供额外的和更详细的寻址信息,以标识端点或与端点交互。
详细信息请参见指定端点地址
-
Binding:绑定指定如何与端点通信。这包括:
-
要使用的传输协议(例如,TCP或HTTP)。
-
用于消息的编码(例如,文本或二进制)
- 必要的安全需求(例如,SSL或SOAP消息安全性)。
有关更多信息,请参阅Windows通信基础绑定概述。绑定在WCF对象模型中由抽象基类binding表示。对于大多数场景,用户可以使用系统提供的绑定之一。有关更多信息,请参见系统提供的绑定。
-
-
Contracts:合约概述了端点向客户端公开的功能。合同规定:
-
客户端可以调用哪些操作
-
消息格式
- 调用操作所需的输入参数或数据类型。
- 客户端可以期望的处理或响应消息类型。
-
-
Behaviors:您可以使用端点行为来定制服务端点的本地行为。端点行为通过参与构建WCF运行时的过程来实现这一点。端点行为的一个示例是ListenUri属性,它允许您指定与SOAP或Web服务描述语言(Web Services Description Language, WSDL)地址不同的侦听地址。更多信息请参见clientvibehavior