65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 WCF(Windows Communication Framework)的简单 Web 服务

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (26投票s)

2007年1月2日

3分钟阅读

viewsIcon

352072

downloadIcon

7758

本文向您展示了使用 Windows Communication Framework 设置 Web 服务是多么容易。

Web Service running

引言

本文向您展示了使用 WCF (Windows Communication Framework) 设置 Web 服务是多么容易。 使用我提供的源代码作为模板,您可以快速创建自己的 Web 服务。 本文不涉及客户端使用 Web 服务(您需要等到第 2 部分)。

背景

我一直在使用 WCF,自从早期的 CTP 版本以来。 我发现很难找到好的示例/例子。 要么它们不起作用,要么我太懒或太笨而无法让它们工作。 我只想要一些只需很少的努力(或理解)就能工作的东西。 我只是想要一些我可以安装并运行的东西!!!

当然,在某个时候,每个人都必须理解 ABC (但这可以等到以后再说)。 当您开始学习一项新技术时,特别是 Beta 版或 CPT - 您只是希望它能够工作,弄清楚它是如何工作的可以等到以后再说......

所以我编写了一个简单的 WCF Web 服务,您可以下载并在几分钟内运行它(适用于像我这样的懒惰的开发人员!)

入门

您需要 Visual Studio 2005(它可能与其他版本的 Visual Studio 一起使用,但我没有在其中进行测试,而且我也不打算测试!!),以及 .NET 3.0(我建议从 这里获取整个包)。

然后从上面下载源代码。

使用代码

下载示例代码并在 Visual Studio 2005 中打开解决方案。

有两个项目,Web 服务和类的实现。[图 1]

图 1 - 显示了 2 个项目

我选择使用 Visual Studio 中内置的开发 Web 服务器,它更容易,设置更少,修改更少。 但是没有理由不使用 IIS(如果你知道如何使用它)。 当您的代码投入生产时,您将使用 IIS,但现在我暂时不理会它。

Web 服务有两个部分,.svc 文件和 *web.config*。

WCFService.svc

<% @ServiceHost Service="WCFSample.EchoImplementation"%>

Web.Config

<system.serviceModel>
    <services>
        <service name="WCFSample.EchoImplementation" 
            behaviorConfiguration="returnFaults">
        <endpoint contract="WCFSample.IEchoContract" 
            binding="basicHttpBinding"/>
        <endpoint contract="IMetadataExchange" 
            binding="mexHttpBinding" address="mex">
        </endpoint>
    </service>
</services>

WCFService.svc 文件中 ServiceHost 属性的 Service 应该与 *web.config* 中的某个服务名称匹配。 服务名称终结点协定 都应与 WCF 项目模板中的实现和协定匹配。

WCF 项目模板由 3 部分组成,协定 [数据协定或消息]、实现和接口 [ServiceContract](是的,ABC 必须在某个地方出现)。

服务协定

WCFContract.cs 包含此服务的接口。

[ServiceContract]
interface IEchoContract
{
    [OperationContract]
    EchoMessage Echo(EchoMessage Message);
}   

数据协定

在 *WCFContract.cs* 中包含了发送的 Message

[DataContract]
public class EchoMessage
{
    private string _OutMessage;
    private string _ReturnMessage;

    [DataMember]
    public string OutMessage
    {
        get { return _OutMessage; }
        set { _OutMessage = value; }
    }

    [DataMember]
    public string ReturnMessage
    {
        get { return _ReturnMessage; }
        set { _ReturnMessage = value; }
    }
}   

实现

Web 服务的实现在 *WCFImplementation.cs* 中

class EchoImplementation : IEchoContract
{
    public EchoMessage Echo(EchoMessage Message)
    {
        EchoMessage _returningMessage = new EchoMessage();

        _returningMessage.ReturnMessage = Message.OutMessage;

        return _returningMessage;
    }
}

在此示例中,我使用 EchoMessage 在客户端和 Web 服务之间传递数据,但它可以是任何具有 [DataContract] 属性的类。

开始吧...

现在轮到你了。 代码示例是一个非常简单的服务,但可以复制该结构用于其他 Web 服务,可以扩展该示例,以便在 .svc 文件和类之间存在一对多或多对多的关系。

历史

  • 2007 年 1 月 1 日 - 发布初始版本

参考文献

© . All rights reserved.