.Net Framework 3.0是基于.Net 2.0,加上WPF,WCF,WWF封装而成的。
其中WCF是Windows Communication Foundation。
其实WCF做的贡献就是,把现有的所有分布式技术(如Web Services(ASMX), .Net Remoting, Enterprise Services, WS-*, MSMQ消息队列)统一起来,让开发分布式应用更一致,更简单。

以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML,Kerberos,X509,用户/密码,自定义等多种标准与模式。

下面仅介绍托管应用程序宿主(自宿主)的方式:(例子是一个实现用户登录注册服务)
建立三个工程:
Client 使用WCF服务
Common 定义合同规范
Server 实现WCF服务
Common:
在WCF中,所有的服务都暴露合同。合同是一种描述服务所实现功能的平台中立的标准的方式。WCF定义了四种类型的合同:
  · 服务合同描述你可以在服务上执行哪些操作。
  · 数据合同定义哪些数据类型被传入和传出服务。WCF为内置类型定义隐式合同,例如int和string,但是你可以容易地为定制类型定义显式的选入式数据合同。
  · 错误合同定义哪些错误将被该服务所激发,以及该服务怎样处理错误信息和把如何把它们传播到客户端。
  · 消息合同允许服务直接与消息进行交互。消息合同可以被类型化或非类型化,并且有点类似于CLR中的迟绑定调用。不过,消息合同很少为SOA开发者所用。
1.服务合同:

.Net Framework 3.0 WCF 自宿主例子using System.Collections.Generic;
.Net Framework 3.0 WCF 自宿主例子
using System.Text;
}


2.数据合同:

.Net Framework 3.0 WCF 自宿主例子using System;
.Net Framework 3.0 WCF 自宿主例子
using
 System.Collections.Generic;
.Net Framework 3.0 WCF 自宿主例子
using
 System.Text;
.Net Framework 3.0 WCF 自宿主例子
using
 System.Runtime.Serialization;
.Net Framework 3.0 WCF 自宿主例子
.Net Framework 3.0 WCF 自宿主例子
namespace
 Common.Entity
}


3.错误合同:
//略

Server实现:

.Net Framework 3.0 WCF 自宿主例子using System;
.Net Framework 3.0 WCF 自宿主例子
using
 System.Collections.Generic;
.Net Framework 3.0 WCF 自宿主例子
using
 System.Text;
.Net Framework 3.0 WCF 自宿主例子
using
 Common.Interface;
.Net Framework 3.0 WCF 自宿主例子
using
 Common.Entity;
.Net Framework 3.0 WCF 自宿主例子
.Net Framework 3.0 WCF 自宿主例子
namespace
 Server.DAL
}

运行服务:

.Net Framework 3.0 WCF 自宿主例子using System;
.Net Framework 3.0 WCF 自宿主例子
using System.Collections.Generic;
.Net Framework 3.0 WCF 自宿主例子
using System.Text;
.Net Framework 3.0 WCF 自宿主例子
using System.ServiceModel;
.Net Framework 3.0 WCF 自宿主例子
using Server.DAL;
.Net Framework 3.0 WCF 自宿主例子
.Net Framework 3.0 WCF 自宿主例子
namespace Server
}


服务端App.Config:

.Net Framework 3.0 WCF 自宿主例子<?xml version="1.0" encoding="utf-8" ?>
.Net Framework 3.0 WCF 自宿主例子
<configuration>
.Net Framework 3.0 WCF 自宿主例子  
<system.serviceModel>
.Net Framework 3.0 WCF 自宿主例子    
<services>
.Net Framework 3.0 WCF 自宿主例子      
<service name="Server.DAL.UserService">
.Net Framework 3.0 WCF 自宿主例子        
<endpoint address="net.tcp://localhost:8001/UserService"
.Net Framework 3.0 WCF 自宿主例子                   binding
="netTcpBinding"
.Net Framework 3.0 WCF 自宿主例子           contract
="Common.Interface.IUserService" >
.Net Framework 3.0 WCF 自宿主例子          
<!--指定服务的契约接口-->
.Net Framework 3.0 WCF 自宿主例子        
</endpoint>
.Net Framework 3.0 WCF 自宿主例子      
</service>
.Net Framework 3.0 WCF 自宿主例子    
</services>
.Net Framework 3.0 WCF 自宿主例子  
</system.serviceModel>
.Net Framework 3.0 WCF 自宿主例子
</configuration>


Client客户端:
客户端App.Config:

.Net Framework 3.0 WCF 自宿主例子<?xml version="1.0" encoding="utf-8" ?>
.Net Framework 3.0 WCF 自宿主例子
<configuration>
.Net Framework 3.0 WCF 自宿主例子  
<system.serviceModel>
.Net Framework 3.0 WCF 自宿主例子    
<client>
.Net Framework 3.0 WCF 自宿主例子      
<endpoint name="UserServiceClient" address="net.tcp://localhost:8001/UserService"
.Net Framework 3.0 WCF 自宿主例子                binding
="netTcpBinding"
.Net Framework 3.0 WCF 自宿主例子                contract
="Common.Interface.IUserService">
.Net Framework 3.0 WCF 自宿主例子      
</endpoint>
.Net Framework 3.0 WCF 自宿主例子    
</client>
.Net Framework 3.0 WCF 自宿主例子  
</system.serviceModel>
.Net Framework 3.0 WCF 自宿主例子
</configuration>


使用服务:

.Net Framework 3.0 WCF 自宿主例子using System;
.Net Framework 3.0 WCF 自宿主例子
using System.Collections.Generic;
.Net Framework 3.0 WCF 自宿主例子
using System.Windows.Forms;
.Net Framework 3.0 WCF 自宿主例子
using Client.Util;
.Net Framework 3.0 WCF 自宿主例子
using Common.Entity;
.Net Framework 3.0 WCF 自宿主例子
using Common.Interface;
.Net Framework 3.0 WCF 自宿主例子
using System.ServiceModel;
.Net Framework 3.0 WCF 自宿主例子
.Net Framework 3.0 WCF 自宿主例子
namespace Client
}

 

运行结果为:
The password of A is not B!!!

 

相关文章: