📅  最后修改于: 2020-11-19 09:23:17             🧑  作者: Mango
要了解WAS托管的概念,我们需要了解如何配置系统以及如何创建服务合同,从而实现对托管服务的不同绑定。
首先,为非协议启用WCF。在开始创建服务之前,我们需要配置系统以支持WAS。以下是配置WAS的步骤-
单击开始菜单→控制面板→程序和功能,然后单击左窗格中的“打开或关闭Windows组件”。
展开“ Microsoft .Net Framework 3.0”并启用“ Windows Communication Foundation HTTP激活”和“ Windows Communication Foundation非HTTP激活”。
接下来,我们需要将Binding添加到默认网站。例如,我们将默认网站绑定到TCP协议。转到开始菜单→程序→附件。右键单击“命令提示符”,然后从上下文菜单中选择“以管理员身份运行”。
执行以下命令-
C:\Windows\system32\inetsrv> appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
通过修改位于“ C:\ Windows \ system32 \ inetsrv \ config”目录中的applicationHost.config文件,此命令将net.tcp站点绑定添加到默认网站。同样,我们可以向默认网站添加不同的协议。
步骤1-打开Visual Studio 2008,然后单击新建→WebSite,然后从模板中选择WCF服务,并将位置选择为HTTP,如下所示-
步骤2-通过创建接口IMathService创建合同。将ServiceContract属性添加到接口,并将OperationContract属性添加到方法声明。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
// NOTE: You can use the "Rename" command on the "Refactor" menu to
// change the interface name "IService" in both code and config file
// together.
[ServiceContract]
Public interface IMathService {
[OperationContract]
int Add(int num1, int num2);
[OperationContract]
int Subtract(int num1, int num2);
}
步骤3 -IMathService接口的实现如下所示-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
// NOTE: You can use the "Rename" command on the "Refactor" menu to
// change the class name "Service" in code, svc and config file
// together.
Public class MathService : IMathService {
Public int Add(int num1, int num2) {
return num1 + num2;
}
Public int Subtract(int num1, int num2) {
return num1 - num2;
}
}
步骤4-服务文件如下所示。
步骤5-在web.Config文件中,创建具有’netTcpBinding’绑定的终结点,并且将使用元数据交换点发布服务元数据。因此,创建地址为“ mex”且绑定为“ mexTcpBinding”的元数据交换端点。如果不发布服务元数据,则无法使用net.tcp地址创建代理,例如-
svcutil.exe net.tcp://localhost/WASHostedService/MathService.svc).
转到开始菜单→程序→附件。右键单击“命令提示符”,然后从上下文菜单中选择“以管理员身份运行”。
执行以下命令-
C:\Windows\system32\inetsrv>appcmd set app "Default Web Site/WASHostedService" /enabledProtocols:http,net.tcp
它将产生以下输出-