WCF入门教程Word文档下载推荐.docx

上传人:b****6 文档编号:18060368 上传时间:2022-12-13 格式:DOCX 页数:12 大小:19.83KB
下载 相关 举报
WCF入门教程Word文档下载推荐.docx_第1页
第1页 / 共12页
WCF入门教程Word文档下载推荐.docx_第2页
第2页 / 共12页
WCF入门教程Word文档下载推荐.docx_第3页
第3页 / 共12页
WCF入门教程Word文档下载推荐.docx_第4页
第4页 / 共12页
WCF入门教程Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

WCF入门教程Word文档下载推荐.docx

《WCF入门教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《WCF入门教程Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

WCF入门教程Word文档下载推荐.docx

2、创建一个新的ICalculator 

接口,并将 

ServiceContractAttribute 

属性应用于该接口,并将 

Namespace 

值设置为“http:

//Microsoft.ServiceModel.Samples”。

此命名空间指定该服务在计算机上的路径,并构成该服务的基址部分。

请注意,在通过采用方括号表示法的属性来批注接口或类时,该属性类可以从其名称中去掉“Attribute”部分。

[ServiceContract(Namespace="

http:

//Microsoft.ServiceModel.Samples"

)] 

publicinterfaceICalculator

3、在接口中创建方法声明,并将 

OperationContractAttribute 

属性应用于每个要作为公共WCF协定的一部分公开的方法。

[OperationContract]

doubleAdd(doublen1,doublen2);

doubleSubtract(doublen1,doublen2);

[OperationContract]

doubleMultiply(doublen1,doublen2);

doubleDivide(doublen1,doublen2);

下面是创建服务协定的完整代码段:

usingSystem;

//AddtheusingstatementfortheSytem.ServiceModelnamespace

usingSystem.ServiceModel;

namespaceMicrosoft.ServiceModel.Samples

{

//Defineaservicecontract.

)]

{

//Createthemethoddeclarationforthecontract.

doubleAdd(doublen1,doublen2);

doubleSubtract(doublen1,doublen2);

}

}

........(整个服务器端的代码未完,等讲完任务三时,再给出完整代码)

实现WCF服务协定(任务二)

1、创建一个新 

CalculatorService 

类,该类从用户定义的 

ICalculator 

接口继承而来并实现该接口定义的协定功能。

publicclassCalculatorService:

ICalculator

2、实现每个算术运算符的功能。

publicdoubleAdd(doublen1,doublen2)

doubleresult=n1+n2;

Console.WriteLine("

ReceivedAdd({0},{1})"

n1,n2);

//Codeaddedtowriteoutputtotheconsolewindow.

Return:

{0}"

result);

returnresult;

publicdoubleSubtract(doublen1,doublen2)

doubleresult=n1-n2;

ReceivedSubtract({0},{1})"

publicdoubleMultiply(doublen1,doublen2)

doubleresult=n1*n2;

ReceivedMultiply({0},{1})"

publicdoubleDivide(doublen1,doublen2)

doubleresult=n1/n2;

ReceivedDivide({0},{1})"

在创建和实现了服务协定后,下一步是运行该服务。

运行服务由三个步骤组成:

配置、承载和打开服务。

配置、承载和运行服务(任务三)

∙为服务配置基址 

为服务的基址创建 

Uri 

实例。

此URI指定HTTP方案、本地计算机、端口号8000,以及服务协定中为服务命名空间指定的服务路径ServiceModelSample/Services。

UribaseAddress=newUri("

//localhost:

8000/ServiceModelSamples/Service"

);

∙ 

承载服务

1.创建一个新的 

ServiceHost 

实例以承载服务。

必须指定实现服务协定和基址的类型。

对于此示例,我们将基址指定为http:

8000/ServiceModelSamples/Services,并将 

指定为实现服务协定的类型。

ServiceHostselfHost=newServiceHost(typeof(CalculatorService),baseAddress);

2.添加一个捕获 

CommunicationException 

的 

try-catch 

语句,并在接下来的三个步骤中将该代码添加到try块中。

3.添加公开服务的终结点。

为此,必须指定终结点公开的协议、绑定和终结点的地址。

此例中,将 

指定为协定,将 

WSHttpBinding 

指定为绑定,并将 

指定为地址。

在这里请注意,我们指定的是相对地址。

终结点的完整地址是基址和终结点地址的组合。

在此例中,完整地址是 

8000/ServiceModelSamples/Services/CalculatorService。

selfHost.AddServiceEndpoint(

typeof(ICalculator),

newWSHttpBinding(),

"

CalculatorService"

4.启用元数据交换。

为此,必须添加服务元数据行为。

首先创建一个 

ServiceMetadataBehavior 

实例,将 

HttpGetEnabled 

属性设置为 

true,然后为服务添加新行为。

ServiceMetadataBehaviorsmb=newServiceMetadataBehavior();

smb.HttpGetEnabled=true;

selfHost.Description.Behaviors.Add(smb);

5.打开 

并等待传入消息。

用户按Enter键时,关闭 

ServiceHost。

selfHost.Open();

Console.WriteLine("

Theserviceisready."

Press<

ENTER>

toterminateservice."

Console.WriteLine();

Console.ReadLine();

//ClosetheServiceHostBasetoshutdowntheservice.

selfHost.Close();

下面是服务器端(即“Service”项目中program.cs文件中)的完整程序代码:

usingSystem.ServiceModel.Description;

//Serviceclassthatimplementstheservicecontract.

//Addedcodetowriteoutputtotheconsolewindow.

publicdoubleAdd(doublen1,doublen2)

publicdoubleSubtract(doublen1,doublen2)

publicdoubleMultiply(doublen1,doublen2)

publicdoubleDivide(doublen1,doublen2)

classProgram

staticvoidMain(string[]args)

//CreateaURItoserveasthebaseaddress.

//CreateServiceHost

ServiceHostselfHost=newServiceHost(typeof(CalculatorService),baseAddress);

try

//Addaserviceendpoint.

selfHost.AddServiceEndpoint(

//Enablemetadataexchange.

ServiceMetadataBehaviorsmb=newServiceMetadataBehavior();

smb.HttpGetEnabled=true;

selfHost.Description.Behaviors.Add(smb);

//Start(andthenstop)theservice.

selfHost.Open();

Console.WriteLine();

Console.ReadLine();

//ClosetheServiceHostBasetoshutdowntheservice.

selfHost.Close();

catch(CommunicationExceptionce)

Anexceptionoccurred:

ce.Message);

selfHost.Abort();

若要运行服务,启动项目文件夹下bin目录中的Service.exe即可。

前面三篇文章是讲服务器端的部署和运行,下面讲讲客户端如何配置和使用。

创建WCF客户端(任务四)

1.通过执行以下步骤,在VisualStudio2005中为客户端创建新项目:

1.在包含该服务(之前文章所述的服务)的同一解决方案中的“解决方案资源管理器”(位于右上角)中,右击当前解决方案,然后选择“添加新项目”。

2.在“添加新项目”对话框中,选择“VisualBasic”或“VisualC#”,选择“控制台应用程序”模板,然后将其命名为 

Client。

3.单击“确定”。

2.为项目提供对 

在“解决方案资源管理器”中右击“Service”项目,从“.NET”选项卡上的“组件名称”列中选择“System.ServiceModel”,然后单击“确定”。

3.为 

命名空间添加 

语句:

4.启动在前面的步骤中创建的服务。

(即打开在服务器项目中生成的Service.exe可执行文件)

5.通过执行以下步骤,使用适当的开关运行ServiceModelMetadataUtilityTool(SvcUtil.exe) 

以创建客户端代码和配置文件:

1.通过选择“开始”菜单中的“MicrosoftWindowsSDK”项下的“CMDShell”,启动WindowsSDK控制台会话。

2.导航到要放置客户端代码的目录。

如果使用默认设置创建Client项目,则目录为C:

\DocumentsandSettings\<

用户名>

\Documents\VisualStudio2008\Projects\Service\Client。

3.将命令行工具ServiceModelMetadataUtilityTool(SvcUtil.exe) 

与适当的开关一起使用以创建客户端代码。

下面的示例生成服务的代码文件和配置文件。

svcutil.exe/language:

cs/out:

generatedProxy.cs/config:

app.confighttp:

8000/ServiceModelSamples/service

6.在VisualStudio中将生成的代理添加到Client项目中,方法是在“解决方案资源管理器”中右击“Client”并选择“添加现有项”。

然后选择在上一步中生成的 

generatedProxy.cs 

文件。

配置WCF客户端(任务五)

在VisualStudio中,将在前一过程中生成的 

App.config 

配置文件添加到客户端项目中。

在“解决方案资源管理器”中右击该客户端,选择“添加现有项”,然后从C:

\Documents\VisualStudio2008\Projects\Service\Client\bin目录中选择App.config 

配置文件。

将app.config添加到项目中后,就算是完成了wcf客户端的配置。

因为具体的配置信息,我们在使用svcutil.exe工具时,它就帮我们配置好并写入了app.config文件。

使用WCF客户端(任务六)

1、为要调用的服务的基址创建 

EndpointAddress 

实例,然后创建WCF 

Client 

对象。

//CreateanendpointaddressandaninstanceoftheWCFClient.

EndpointAddressepAddress=newEndpointAddress("

8000/ServiceModelSamples/Service/CalculatorService"

CalculatorClientclient=newCalculatorClient(newWSHttpBinding(),epAddress);

2、从 

内调用客户端操作。

//Calltheserviceoperations.

//CalltheAddserviceoperation.

doublevalue1=100.00D;

doublevalue2=15.99D;

doubleresult=client.Add(value1,value2);

Add({0},{1})={2}"

value1,value2,result);

//CalltheSubtractserviceoperation.

value1=145.00D;

value2=76.54D;

result=client.Subtract(value1,value2);

Subtract({0},{1})={2}"

//CalltheMultiplyserviceoperation.

value1=9.00D;

value2=81.25D;

result=client.Multiply(value1,value2);

Multiply({0},{1})={2}"

//CalltheDivideserviceoperation.

value1=22.00D;

value2=7.00D;

result=client.Divide(value1,value2);

Divide({0},{1})={2}"

3、在WCF客户端上调用 

Close。

//Closingtheclientgracefullyclosestheconnectionandcleansupresources.

client.Close();

下面是客户端的完整代码:

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Serv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1