WCF简单使用(分别部署在控制台和IIS上)

WCF部署到控制台

1.下面通过一个简单的服务示例来认识WCF
1.新建项目,名称IBLL,解决方案名称WcfDemo,模板选择类库
2.修改Class1.cs文件名称为 IUserInfoService.cs
3.添加引用 System.ServiceModel
4.修改IUserInfoService.cs代码如下:

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

namespace IBLL
{
    [ServiceContract]
    public interface IUserInfoService
    {
        [OperationContract]
        int Add(int a, int b);
    }
}

我们定义了一个IUserInfoService接口,注意在接口上申明了ServiceContract特性,即服务契约,表明该接口是一个服务。方法上声明了OperationContract特性,表示该方法是IUserInfoService的一个服务方法,客户端可远程调用该方法

5.新建项目,名称BLL,模板选择类库,修改Class1.cs文件名称为 UserInfoService.cs,引用项目IBLL,代码如下:

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

namespace BLL
{
    public class UserInfoService : IUserInfoService
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}

OK,到此我们的服务代码已经编写完成,下面我们必须为服务提供一个运行的宿主,通过该宿主程序来启动我们的服务。
6.在同一解决方案下新建一个项目,名称为WcfHost,类型为控制台应用程序

7.WcfHost项目中添加引用,引用项目IBLL,然后再添加引用:System.ServiceModel

8.修改Program.cs代码如下:

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

namespace WcfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(BLL.UserInfoService)))
            {
                host.Open();
                Console.WriteLine("服务已启动");
                Console.ReadKey();
                host.Close();
            }
        }
    }
}

以上,我们已经实现了服务以及为服务提供了一个运行宿主,即契约部分已经完成,下面我们为服务指定地址及绑定
9.修改app.config内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>

      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration"><!--服务的对象-->
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/"/><!--服务的IP和端口号-->
          </baseAddresses>
        </host>
        <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint><!--contract:服务契约-->
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

10.设置WcfHost项目为启动项目,启动调试。控制台上显示服务已启动后,打开浏览器输入服务地址:http://localhost:8000/ ,浏览器中会打开我们的服务页面,这表示我们的服务已经启动成功,客户端可通过该地址访问我们的服务了。
下面,我们将创建一个客户端来访问我们的服务
11.在同一解决方案下新建一个项目,名称为WcfClient,类型为控制台应用程序,添加服务引用地址:http://localhost:8000/,客户端代码如下:

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

namespace WcfClient
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceReference1.UserInfoServiceClient client = new ServiceReference1.UserInfoServiceClient();
            Console.WriteLine(client.Add(3, 4));
            Console.ReadKey();
        }
    }
}

12.启动WcfHost,启动WcfClient,(记得找到bin/debug找.exe以管理员运行

WCF部署到IIS

1-5步服务代码已经编写相同,下面我们必须为服务提供一个IIS宿主,那么当IIS启动起来后,我们的Wcf服务就起来了。

6.为WCF创建.svc文件(新建类,后缀改为.svc即可),仅仅包含一个ServiceHost指令,该指令具有一个必须的Service属性(该属性指明了相应的WCF服务的类型)和一些可选的属性,该.svc文件应放在Services项目的根目录下

<%@ ServiceHost Service="BLL.UserInfoService" %>

7.在根目录下创建一个Web.Config,将WCF的相应配置添加到配置文件中,与寄宿在上面控制台方式不同的是,在添加的终结点中无需指定地址,因为.svc所在的地址就是服务端地址,代码如下:(该配置放在configuration根节点下)

  <system.serviceModel><!--部署Wcf服务-->
    <services>
      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration"><!--服务的对象-->
      <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint><!--contract:服务契约-->
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

好了,WCF服务端配置好了,下面配置客户端

8.客户端配置,添加服务引用,地址填.svc所在的地址,如:http://localhost:8707/UserInfoService.svc,命名空间:WcfServiceReference

添加完成后,会在服务端的Web.Config中自动添加下面代码

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IUserInfoService" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:8707/UserInfoService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUserInfoService"
        contract="WcfServiceReference.IUserInfoService" name="BasicHttpBinding_IUserInfoService" />
    </client>
  </system.serviceModel>

9.在客户端调用服务端方法(在Home控制器下添加该方法)

        public ActionResult Add()
        {
            WcfServiceReference.UserInfoServiceClient client = new WcfServiceReference.UserInfoServiceClient();
            int sum = client.Add(3, 4);
            return Content(sum.ToString());
        }

分类: .net

时间: 2024-10-20 19:45:05

WCF简单使用(分别部署在控制台和IIS上)的相关文章

win2008server R2 x64 部署.net core到IIS上出现【Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057】错误

解决方法: 需要安装补丁:KB2533623 下载地址如下: https://support.microsoft.com/en-us/kb/2533623

在IIS上部署基于django WEB框架的python网站应用

django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上. 笔者的运行环境: Window xp sp3 IIS 5.1 Python 2.7.2 (http://www.python.org/) pywin32-217.win32-py2.7   (python的win32扩展) Django-1.3.1  (https://www.djangoproject.com/) isapi_wsgi-0.4.2-py2.

微软 WCF的几种寄宿方式,寄宿IIS、寄宿winform、寄宿控制台、寄宿Windows服务

WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详细介绍并开发例子进行说明,以求大家对WCF寄宿的方式进行全面的认识和了解. 1. WCF服务的IIS服务寄宿 我在我前面几篇WCF开发框架的介绍文章中,介绍过了WCF常用的一种寄宿方式,IIS服务寄宿.这种寄宿方式是最为方便的方式,而且由于服务只需要IIS运行就能自动运行起来,因此广为使用. 创建这

WCF Service部署在IIS上

环境vs2010,WCF应用程序.如何将WCF部署在IIS上. 第一步:右键点击项目,选择生成部署包. 第二步:在你项目所在的文件目录下找到Package文件夹,这就是我们的部署包所在的地方.在这个package文件夹下面有一个packageTmp. 第三步:在IIS上新建虚拟目录,将物理地址指向此文件夹. 第四部:部署结束.可以在浏览器中查看我们部署的WCF了.

WCF 部署在IIS上

环境vs2010,WCF应用程序,server 2008 第一步:WCF项目右键点击项目,选择生成部署包,如下图: 第二步:WCF项目上右键,选择:在windows资源管理器中打开文件夹,如下图: 第三步:第二步:在你项目所在的文件目录下找到Package文件夹,这就是我们的部署包所在的地方.在这个package文件夹下面有一个packageTmp. 第四步:在IIS上新建虚拟目录,将物理地址指向此文件夹. 1.windows server 2008中没有自带Microsoft .NET Fra

在IIS上部署Silverlight+WCF项目教程

1.在IIS部署Silverlight+WCF项目的前提是:在发布的机器上配置好IIS,具体操作参照http://www.jb51.net/article/29787.htm 2.IIS配置好后,打开IIS进行如下操作: (1)在IIS中添加以下MIME类型,否则无法解析项目 .xap  application/x-silverlight-app    .xaml  application/xaml+xml    .xbap application/x-ms-xbap (2)在IIS的[处理程序

C# WCF简单入门图文教程(VS2010版)

C# WCF简单入门图文教程(VS2010版) 作者:丶一二丶 字体:[增加 减小] 类型:转载 时间:2016-03-17我要评论 这篇文章主要介绍了WCF简单入门图文教程,版本是VS2010版,帮助大家轻松学习了解DataContract.ServiceContract等特性,感兴趣的小伙伴们可以参考一下 在这个例子中我们将使用VS2010创建一个WCF服务,其中会了解[DataContract][ServiceContract]等特性. 内置的WCFSVCHost,并使用“WCF测试客户端

C# 一个WCF简单实例

C# 一个WCF简单实例 作者: 字体:[增加 减小] 类型:转载 时间:2012-10-27我要评论 以订票为例简单应用wcf程序,需要的朋友可以参考下 WCF实例(带步骤) 复制代码代码如下: <xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IServi

wcf之三(通过文件部署服务)

Wcf之三(通过配置文件部署服务) 简介: 上一节主要讲解了接口契约式编程,这与我们的wcf编程有什么联系呀?理解好前一节在后面学习中更容易理解.因为wcf就是契约式编程,服务器.客户端.服务器和客户端之间的契约. Wcf服务契约 服务契约描述了暴露给外部的类型(接口或类).服务所支持的操作.使用的消息交换模式和消息的格式.每个WCF服务必须实现至少一个服务契约.使用服务契约必须要引用命名空间System.ServiceModel . 服务三要素 规定服务的三要素使服务与客户端联系更加方便.1.