一个简单的寄宿iis的wcf例子
2011-06-25 17:40
288 查看
一.定义服务契约接口
namespace Contracts
{
[ServiceContract(Name =
"CalculatorService",Namespace =
"liufuchu")]
public
interface
ICalculator
{
[OperationContract]
DataTable 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);
}
}
二.定义接口的实现
namespace Services
{
public
class
CalculatorService :ICalculator
{
public
DataTable Add(double n1,
double n2)
{
DataTable dt =
new
DataTable();
dt.TableName = "liufuchu";
dt.Columns.Add("row1",typeof(double));
dt.Columns.Add("row2",typeof(double));
DataRow dr = dt.NewRow();
dr["row1"] = n1;
dr["row2"] = n2;
dt.Rows.Add(dr);
return dt;
}
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;
}
}
}
配置文件:
<?xml
version="1.0"
encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior
name="metadataBehavior">
<serviceMetadata
httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service
behaviorConfiguration="metadataBehavior"
name="Services.CalculatorService">
<endpoint
binding="wsHttpBinding"
contract="Contracts.ICalculator"></endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
三.寄宿iis
类库输出目录为bin/
CalculatorService.svc
文件
<%@
ServiceHost
Service
=
"Services.CalculatorService"%>
四.客户端调用
static
void
Main(string[] args)
{
using (ChannelFactory<ICalculator>
channelFactory = new
ChannelFactory<ICalculator>("calculatorservice"))
{
ICalculator proxy = channelFactory.CreateChannel();
using (proxy
as
IDisposable)
{
DataTable dt = proxy.Add(1, 2);
Console.WriteLine(proxy.Divide(1, 2));
Console.WriteLine(proxy.Multiply(1, 2));
Console.WriteLine(proxy.Subtract(1, 2));
}
}
}
配置文件:
<?xml
version="1.0"
encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint
address="http://127.0.0.1/Services/calculatorservice.svc"
binding="wsHttpBinding"
contract="Contracts.ICalculator"
name="calculatorservice">
</endpoint>
</client>
</system.serviceModel>
</configuration>
namespace Contracts
{
[ServiceContract(Name =
"CalculatorService",Namespace =
"liufuchu")]
public
interface
ICalculator
{
[OperationContract]
DataTable 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);
}
}
二.定义接口的实现
namespace Services
{
public
class
CalculatorService :ICalculator
{
public
DataTable Add(double n1,
double n2)
{
DataTable dt =
new
DataTable();
dt.TableName = "liufuchu";
dt.Columns.Add("row1",typeof(double));
dt.Columns.Add("row2",typeof(double));
DataRow dr = dt.NewRow();
dr["row1"] = n1;
dr["row2"] = n2;
dt.Rows.Add(dr);
return dt;
}
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;
}
}
}
配置文件:
<?xml
version="1.0"
encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior
name="metadataBehavior">
<serviceMetadata
httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service
behaviorConfiguration="metadataBehavior"
name="Services.CalculatorService">
<endpoint
binding="wsHttpBinding"
contract="Contracts.ICalculator"></endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
三.寄宿iis
类库输出目录为bin/
CalculatorService.svc
文件
<%@
ServiceHost
Service
=
"Services.CalculatorService"%>
四.客户端调用
static
void
Main(string[] args)
{
using (ChannelFactory<ICalculator>
channelFactory = new
ChannelFactory<ICalculator>("calculatorservice"))
{
ICalculator proxy = channelFactory.CreateChannel();
using (proxy
as
IDisposable)
{
DataTable dt = proxy.Add(1, 2);
Console.WriteLine(proxy.Divide(1, 2));
Console.WriteLine(proxy.Multiply(1, 2));
Console.WriteLine(proxy.Subtract(1, 2));
}
}
}
配置文件:
<?xml
version="1.0"
encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint
address="http://127.0.0.1/Services/calculatorservice.svc"
binding="wsHttpBinding"
contract="Contracts.ICalculator"
name="calculatorservice">
</endpoint>
</client>
</system.serviceModel>
</configuration>
相关文章推荐
- 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性
- C# WCF 03 简单的IIS寄宿
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- WCF走你~一个简单的例子,根据用户ID,从用户模块(用户服务器)获得实体
- WCF 一步一步从入门到精通 建立一个简单入门的例子(适合一点不会的朋友阅读)
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- wcf创建基于tcp协议的iis寄宿服务的第一个例子
- WCF 第七章 寄宿 在一个IIS寄宿服务中开启ASMX特性
- 重温WCF之构建一个简单的WCF(一)(2)通过Windows Service寄宿服务和WCF中实现操作重载
- 先写一个简单的例子
- SpringMvc+Mybatis+Maven+Mysql做一个CRUD的简单例子
- 一个简单的NHibernate例子
- 重温Struts,完整的一个简单例子
- 一个简单Html元素Select增加删除项的例子
- 一个yale-cas实现单点登录的简单例子实现
- 我的WCF之旅(1):创建一个简单的WCF程序