wcf通过iis寄宿服务

总体步骤如下:

1  定义服务契约

2  wcf服务实现

3  编写wcf服务的配置文件

4 把wcf相关文件寄宿到iis上

5 新建客户端测试是否成功

详细步骤如下:

1   定义服务契约

1.1     新建一个类库项目,名为Contracts,添加引用System.ServiceMode

1.2     把系统自动创建的类给删除了,新建一个接口,名为ICalculator,并编写如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace Contracts
{
    //CalculatorService名称自己起,http://www.artech.com也是自己起,为了避免不出错,建议同我的一样
    [ServiceContract(Name="CalculatorService",Namespace="http://www.artech.com")]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double x, double y);
        [OperationContract]
        double Subtract(double x, double y);
        [OperationContract]
        double Multiply(double x, double y);
        [OperationContract]
        double Divide(double x, double y);
    }
}

业务逻辑很简单,就是加减乘除

2  wcf服务实现

2.1  新建一个类库项目,名为Services,并添加对类库项目Contracts的引用和引用System.ServiceMode

2.2  把系统自动新建的类改名为CalculatorService,并在该类中对服务的实现,具体代码如下:

using Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Services
{
    public class CalculatorService:ICalculator
    {

        public double Add(double x, double y)
        {
            return x + y;
        }

        public double Subtract(double x, double y)
        {
            return x - y;
        }

        public double Multiply(double x, double y)
        {
            return x * y;
        }

        public double Divide(double x, double y)
        {
            return x / y;
        }
    }
}

2.3   鼠标右键当前项目,然后点击生成,这样你会在当前项目的Bin/Debug目录下看到Services.dll和Contracts.dll两个类库文件,把它们放到一个新建的Bin目录下备用。为什么是Bin目录呢?因为Web应用在运行时会默认从Bin目录加载程序集

3   编写wcf服务的配置文件

3.1  新建一个名为CalculatorService.svc的文件,并编写如下:

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

其中Services.CalculatorService的Services代表命名空间,CalculatorService是服务类名

3.2 新建一个配置文件,名为Web.config,并编写如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior name="metadataBehavior">
            <serviceMetadata httpGetEnabled="true" />
          </behavior>
        </serviceBehaviors>
      </behaviors>


      <services>
        <service behaviorConfiguration="metadataBehavior" name="Services.CalculatorService">
          <endpoint address="http://192.168.128.1:9090/CalculatorService.svc" binding="wsHttpBinding" contract="Contracts.ICalculator" />
        </service>
      </services>
    </system.serviceModel>
    <system.webServer>
        <directoryBrowse enabled="true" />
    </system.webServer>
</configuration>

需要特别注意的地方是:

i:  http://192.168.128.1:9090/CalculatorService.svc 中的192.168.1.128是你iis网站的ip地址,9090是你新建iis网站时自己设置的端口

ii: Services.CalculatorService中的Services是服务类所在的命名空间,CalculatorService是实现服务的类的名称

iii: Contracts.ICalculator中的Contracts是契约类所在的命名空间,ICalculator是契约类的名称

4   在你喜欢的盘符中新建一个文件夹,名称为WCF(名称自己起),把前面的Bin文件夹、文件CalculatorService.svc、文件Web.config拷贝到WCF文件夹中

5  搭建iis,具体步骤就不详细说明了,不懂的可以参考https://jingyan.baidu.com/article/5553fa8215f7ef65a2393413.html,在搭建iis之前,需要先完成步骤5.2

这里我讲需要注意的地方:

5.1  网站文件路径选的是你刚才WCF文件夹所在的路径

5.2  需要注册asp.net(之前如果你注册过就不用了),步骤如下:

                      32位的Windows:
                      ---------------------------------------------------------------------------
                     1. 运行->cmd 

                     2. cd  C:\Windows\Microsoft.NET\Framework\v4.0.30319

                     3. aspnet_regiis.exe -i

                     64位的Windows:
                      ---------------------------------------------------------------------------
                    1. 运行->cmd 

                     2. cd  C:\Windows\Microsoft.NET\Framework64\v4.0.30319

                     3. aspnet_regiis.exe -i

5.3  添加WCF文件夹为网站的虚拟目录,名称为wcfservice,如下图:

5.4   在内容视图中选择CalculatorService.svc,然后浏览,如下图:

5.5  然后自动打开浏览器,如下在浏览器中看到如下图内容,则表明成功了,如下图:

6   新建客户端程序测试是否成功

6.1  新建控制台应用程序,名为Client,并添加对类库项目Contracts的引用和引用System.ServiceMode

6.2  在主程序中编写如下:


using Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace Client
{
    class Program
    {     
        static void Main(string[] args)
        {
            using (ChannelFactory<ICalculator> ChannelFactory = new ChannelFactory<ICalculator>(new WSHttpBinding(), "http://192.168.128.1:9090/CalculatorService.svc"))
            {
                ICalculator proxy = ChannelFactory.CreateChannel();
                using (proxy as IDisposable)
                {
                    Console.WriteLine("2+3=" + proxy.Add(2, 3).ToString());
                    Console.WriteLine("2-3=" + proxy.Subtract(2, 3).ToString());
                    Console.WriteLine("2*3=" + proxy.Multiply(2, 3).ToString());
                    Console.WriteLine("2/3=" + proxy.Divide(2, 3).ToString());
                    Console.ReadKey();
                }
                
            }
            
        }
    }
}

注意:里面的http://192.168.128.1:9090/CalculatorService.svc的ip和端口一定要一一与iis服务端中的对应

6.3 运行,如下:

到此,步骤全部完成。

发布了66 篇原创文章 · 获赞 48 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zxy13826134783/article/details/102537372
今日推荐