📜  WCF-WAS托管

📅  最后修改于: 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站点绑定添加到默认网站。同样,我们可以向默认网站添加不同的协议。

创建WAS托管服务

步骤1-打开Visual Studio 2008,然后单击新建→WebSite,然后从模板中选择WCF服务,并将位置选择为HTTP,如下所示-

Wcf托管服务WAS 1

步骤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-服务文件如下所示。

Wcf托管服务WAS 2

步骤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

它将产生以下输出-

Wcf托管服务WAS 6