windows communication foundation (workshop) 系列- creating a simple wcf service

windows communication foundation (workshop) 系列- creating a simple wcf service

这段时间开始研究WCF,发现了一个容易入门的学习教程,来自 Robert Shelton, Jr.Windows Communication Foundation (Workshop) ,于是便学边做,顺便也翻译部分内容,基本是按照意思翻译的。在这之前请按装好相应的软件
   
开始正题,希望对大家有所帮助。
 
第一步:选择项目类型和模版
  
打开vs2005,选择网站,然后选择项目模版,选择“WCF Service”


   

确定后系统自动建好了一个基本的框架

第二步:在我们的服务中建立新的代码文件
      
当解决方案建立好后,你可以看到在App_Code/Services.cs 文件,这是一个例子文件,你可以用这个建立你的特性服务,我们决定自己建立一个
自己的服务文件。因此我们选择在App_Code文件夹中增加一个新文件 BankService.cs  
 

 

第三步:增加必须的名字空间

 打开BankService.cs,在顶部加入

   using System.ServiceModel;

using System.Runtime.Serialization;

 

第四步:建立服务合约(Create the Contract for our Service

先把程序贴出来在解释一下

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.ServiceModel;

using System.Runtime.Serialization;

 

 

namespace BankServices

{

 

    [ServiceContract]  //申明这个类为服务公约

    public interface IAccountActivities

    {

        [OperationContract] //申明公约操作方法

        // Method to retrieve the Account Balance

        decimal getBalance(string AccountNumber);

 

        [OperationContract]

        //  Method to Debit (withdraw) money from the account

        decimal debitAccount(string AccountNumber, decimal Amount);

 

        [OperationContract]

        //  Method to Credit (deposit) money into the account

        decimal creditAccount(string AccountNumber, decimal Amount);

    }

 //上面这个类就是一个接口类,完成和其他(比如客户端)程序的通信

//下面这个类是对这个接口的实现,这个不用多说了

    public class AccountActivities : IAccountActivities

    {

        private decimal _currentBalance;  // Holds the balance for the account

 

        #region IAccountActivities Members

 

        public decimal getBalance(string AccountNumber)

        {

            return _currentBalance;

        }

 

        public decimal debitAccount(string AccountNumber, decimal Amount)

        {

            _currentBalance = _currentBalance - Amount;

            return _currentBalance;

        }

 

        public decimal creditAccount(string AccountNumber, decimal Amount)

        {

            _currentBalance = _currentBalance + Amount;

            return _currentBalance;

        }

 

        #endregion

    }

}

第五步:修改Service.svc文件

把代码给为如下内容:

<% @ServiceHost Language=C# Debug="true" Service="BankServices.AccountActivities" CodeBehind="~/App_Code/BankServices.cs" %>

第六步: 建立服务通信端(Create the Service End Points

   我们可以借助WCF服务配置软件完成这个,在vs2005的工具中可以找到

 


 
File,选择打开,找到WCFservices\web.config,在你建的wcf服务程序目录下。

 


 
Configuration导航条下,选择MyService,然后在Name属性力改为BankServices.AccountActivities;


然后再选择

 


修改为

 

 

Adviced下找到 Service behaviors节点

returnFaultsname 改为 BankServicesBehavior

 

 

现在 我们使 Service Metadata 有效

 


选择增加,打开对话框后,选择ServiceMetadata 然后按下
Add   按钮。

 


选择serviceMetadata 属性,设置
HttpGetEnabled 属性为true.这个将允许我们的客户端通过http协议发现我们的服务

然后保存我们的设置。完毕。最终的结果看起来如下:

 

 

第七步:测试我们的服务

 编译并生成程序,然后选择运行,出现文件列表选项,选择service.svc,然后会出现如下界面

 

 

 

第八步:发布站点

 在菜单中选择发布站点,输入:http://localhost/services/bankaccountservices

选择OK,发布成功后在iis中就会看到。

服务这一步完成,下面我们开始客户端的开发

  第一步:建立一个Form程序,完成后选择服务引用。

 

 

 

出现如下对话框,输入:http://localhost/services/bankaccountservices/service.svc

引用名字改为 ATMServices。选择增加

 


Form1.cs中定义:,写一个调用函数

private ATMServices.AccountActivitiesClient myService = new ATMClient.ATMServices.AccountActivitiesClient();

decimal returnedBalance = 0;

decimal TransactionAmount = 123;

 

returnedBalance = myService.creditAccount("123", TransactionAmount);

returnedBalance就是通过调用服务接口计算出来的值。

posted @ 2007-10-24 14:33  杰仔  阅读(278)  评论(0编辑  收藏  举报