如何为WCF服务在服务器端进行Host配置?

服务器端给WCF做了host配置

服务器端给wcf做了host配置

在现代企业级应用开发中,Windows Communication Foundation (WCF) 是一个强大的框架,用于构建安全、可靠和可扩展的分布式系统,本文将详细讨论如何在服务器端进行WCF服务的host配置,包括基本概念、具体步骤和相关代码示例。

一、WCF服务的基本概念

WCF简介

WCF是微软提供的一种用于构建分布式应用程序的框架,它允许开发者在不同的传输协议(如HTTP、TCP等)上创建服务,并支持多种消息格式(如SOAP、JSON、XML等)。

Host概念

在WCF中,Host是指承载和控制WCF服务运行的环境,常见的Hosting方式包括:

自托管:通过编程方式在应用程序内部启动和控制WCF服务。

IIS托管:利用Internet Information Services (IIS) 来承载WCF服务。

WAS托管:使用Windows Process Activation Services (WAS) 来承载WCF服务。

服务器端给wcf做了host配置

二、自托管WCF服务的配置

ServiceHost类

ServiceHost类是WCF自托管的核心类,负责启动和管理WCF服务,以下是一个简单的例子:

using System;
using System.ServiceModel;
namespace WcfServiceLibrary
{
    [ServiceContract]
    public interface ICalculator
    {
        [OperationContract]
        int Add(int a, int b);
    }
    public class CalculatorService : ICalculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
            {
                host.Open();
                Console.WriteLine("Service is running...");
                Console.ReadLine();
                host.Close();
            }
        }
    }
}

配置文件App.config

在自托管的WCF服务中,通常会使用App.config文件来配置服务的各种属性。

<configuration>
  <system.serviceModel>
    <services>
      <service name="WcfServiceLibrary.CalculatorService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/Calculator"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary.ICalculator"/>
      </service>
    </services>
  </system.serviceModel>
</configuration>

多服务与多终结点配置

可以在一个ServiceHost实例中添加多个服务和终结点,如下所示:

using System;
using System.ServiceModel;
namespace WcfMultiServiceLibrary
{
    [ServiceContract]
    public interface ICalculator
    {
        [OperationContract]
        int Add(int a, int b);
    }
    public class CalculatorService : ICalculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
    [ServiceContract]
    public interface IGreeter
    {
        [OperationContract]
        string SayHello(string name);
    }
    public class GreeterService : IGreeter
    {
        public string SayHello(string name)
        {
            return "Hello, " + name;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(CalculatorService), typeof(GreeterService)))
            {
                host.Open();
                Console.WriteLine("Services are running...");
                Console.ReadLine();
                host.Close();
            }
        }
    }
}

对应的App.config文件:

<configuration>
  <system.serviceModel>
    <services>
      <service name="WcfMultiServiceLibrary.CalculatorService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/Calculator"/>
          </baseAddresses>
          <endpoint address="" binding="wsHttpBinding" contract="WcfMultiServiceLibrary.ICalculator"/>
        </host>
      </service>
      <service name="WcfMultiServiceLibrary.GreeterService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/Greeter"/>
          </baseAddresses>
          <endpoint address="" binding="wsHttpBinding" contract="WcfMultiServiceLibrary.IGreeter"/>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>

三、IIS托管WCF服务的配置

1. SVC文件与Web.config文件

服务器端给wcf做了host配置

在IIS托管模式下,需要创建一个.svc文件来定义服务,并在Web.config文件中进行相应的配置。

CalculatorService.svc

<% @ServiceHost Service="WcfServiceLibrary.CalculatorService" %>

Web.config

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.7.2" />
    <services>
      <service name="WcfServiceLibrary.CalculatorService">
        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary.ICalculator"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

部署到IIS

1、打开IIS管理器,选择“默认网站”或创建一个新的网站。

2、右键点击网站,选择“添加应用程序”。

3、在弹出的对话框中,设置应用程序名称和物理路径(指向包含.svc文件的目录)。

4、点击“确定”,完成部署。

四、常见问题与解答栏目

问题1:如何在WCF服务中启用HTTPS?

解答:要在WCF服务中启用HTTPS,需要在Web.config或App.config文件中添加相应的绑定配置。

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="SecureBinding">
        <security mode="Transport">
          <transport clientCredentialType="None"/>
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <services>
    <service name="WcfServiceLibrary.CalculatorService">
      <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureBinding" contract="WcfServiceLibrary.ICalculator"/>
    </service>
  </services>
</system.serviceModel>

然后在IIS中为站点绑定一个SSL证书。

问题2:如何更改WCF服务的端口号?

解答:可以通过修改配置文件中的baseAddress元素来更改WCF服务的端口号。

<baseAddresses>
  <add baseAddress="http://localhost:9000/Calculator"/>
</baseAddresses>

这样就会将服务端口号更改为9000,确保防火墙规则允许新的端口号通过。

五、归纳

本文详细介绍了如何在服务器端进行WCF服务的host配置,包括自托管和IIS托管两种方式的具体步骤和示例代码,通过合理配置WCF服务,可以确保其在生产环境中稳定高效地运行,还提供了一些常见问题的解决方案,帮助开发者更好地应对实际开发中的挑战。

小伙伴们,上文介绍了“服务器端给wcf做了host配置”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/766399.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-25 12:05
Next 2024-12-25 12:06

相关推荐

  • .net core 引用.net framework

    在.NET环境中,我们可以使用WCF(Windows Communication Foundation)来引用服务器,WCF是.NET框架的一部分,它提供了一种跨平台的互操作性,使得.NET应用程序可以在不同的系统和设备上进行通信,以下是使用.NET引用WCF服务器的简易教程。1、创建WCF服务我们需要创建一个WCF服务,这个服务可以……

    2024-03-29
    0133
  • webservice和wcf

    Web服务器和Web服务是两个不同的概念,它们在功能、应用场景和技术实现上有很大的区别,本文将详细介绍Web服务器和Web服务的区别,并在末尾提供相关问题与解答的栏目,以帮助读者更好地理解这两个概念。Web服务器1、定义Web服务器是一种运行在计算机网络上的应用程序,它负责处理来自客户端的HTTP请求,并将HTTP响应返回给客户端,W……

    2024-01-11
    0248
  • 本地客户端访问远程wcf服务器_开始使用

    使用Add Service Reference或SvcUtil.exe工具生成客户端代理类,然后通过代理类调用远程WCF服务。

    2024-06-12
    0144
  • asp.netmvchtml辅助方法「aspnet wcf」

    大家好呀!今天小编发现了asp.netmvchtml辅助方法的有趣问题,来给大家解答一下,别忘了关注本站哦,现在我们开始阅读吧!构建ASP.NET网站十大必备工具因此,Visual Studio是ASP.NET的主要开发工具。Visual Studio是一个强大的IDE,支持多种编程语言,包括C#、Visual Basic和F#等。photoshop工具:用PS来处理网站建设过程中要用到的图片。网站建设过程中还可能用到的一个工具就是代码编辑工具例如:EditPlus、windows自带的写字本等,这些工具主要编辑asp等或PHP、ASP.netjsp等动态网页。

    2023-12-15
    0122

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入