silverlight3 学习 4.1 初识WCF

本文介绍如何使用Silverlight创建WCF服务,并通过示例展示了定义服务协定、实现服务接口的方法。此外还介绍了如何配置服务主机和服务终结点,以及如何创建客户端应用程序来调用这些服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Silverlight

创建WCF 服务时,首先应该定义协定。协定指定服务支持的操作,通过定义接口可创建协定。接口中的每个方法都对应于特定的服务操作。每个接口都必须将ServiceContract特性应用于自身,ServiceContract有两个重要的属性Name:服务的名称和Namespace:命名空间;

如果未指定,则默认的命名空间为http://tempuri.org。每个操作都必须将 OperationContract特性应用于自身。如果接口中的一个方法具有 ServiceContract特性但是并没有OperationContract特,则无法通过该服务访问此方法。

 

 [ServiceContract]
public interface IMyCalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

 

先以简单示例对WCF有一个初步的认识:

摘自MSDN

开始创建自己的WCF服务

1,首先创建一个控制台应用程序

添加代码:

 [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}

 

2,在Main方法下添加如下代码: 注意代码注释行

//创建服务的基础地址,可以设置服务运行端口和IP地址
Uri siteUri = new Uri("http://localhost:8001/ServiceModelSamples/Service");
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService),siteUri))
{
try
{
// 添加公开服务的终结点。必须指定终结点公开的协议、绑定和终结点的地址.
WSHttpBinding binding = new WSHttpBinding();
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "CalculatorService");
//启用元数据交换
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);
// ServiceDescription sd = serviceHost.Description;
// sd.Behaviors.Add();
serviceHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
serviceHost.Close();
}
catch (InvalidOperationException ioe)
{
Console.WriteLine(ioe.Message);
Console.ReadLine();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine(timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine(commProblem.Message);
Console.ReadLine();
}
}

 

3,运行效果

  使用命令行工具创建客户端代码 

svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service
5,创建一个客户端控制台应用程序 
添加generatedProxy.csapp.config文件.
Main方法内添加代码 

转载于:https://www.cnblogs.com/65876951/archive/2010/10/25/1860268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值