Windows通讯基础编程之基础知识
2008-04-09 04:03:14来源:互联网 阅读 ()
WCF是一种不断增强的和进化的技术,它把以前所有独特和分散的微软连接技术合并到了单一的System.ServiceModel名称空间之中。WCF中所包含了Web服务(ASMX)、Web服务扩展(WS*)、微软消息队列(MSMQ)、企业级服务、COM 和.NET Remoting。
让一个名称空间包含所有这些内容是非常有益的,它使我们设计、开发和部署需要连接的应用程序大大地简化了。有了WCF之后,你不需要在大量不同的名称空间的实现之间进行选择,也不需要编写类型来建立连接的应用程序。无论你的应用程序是通过松散耦合的Web服务连接,还是通过紧密耦合的企业级服务来连接,编写代码的模型都是一致的,不同的信息类型之间的转换变得平缓很多--因为它们都使用了同一个编程名称空间。
使用WCF
WCF遵循"软件即服务"模型,也就是所有的功能单元都被定义为服务。开发者不需要关心通讯(communications)是如何工作的,而只需要关心服务的位置、服务之间如何对话以及如何描述这些内容。因此,对于任何服务来说,你都必须知道下面三个问题的答案:
1.服务的地址。服务在哪儿?它在互联网上、自己的网络中的某台计算机上、还是在自己使用的计算机上?
2.服务的绑定。如何与它对话?我是使用SOAP还是MSMQ?
3.服务的规范(Contract)。它能为我做什么事情?我应该给它传递什么类型的数据?它返回什么样的数据?
如果你对Web服务非常熟悉,或许你已经理解了WSDL术语中的这三个方面的内容。WCF采用了这种定义服务工作方式的流行和成功的方法,并对它进行了扩展,使它能够与其它形式的通讯(微软消息队列、企业级服务、COM 和.NET Remoting)一起工作。
第一个WCF应用程序:建立服务
如果你现在还不太熟悉WCF的一些术语,例如绑定、规范、寻址(addressing)等等,也不要担心;这类术语最好从示例中学习。在本文后面的部分中,你将建立自己的第一个Indigo应用程序。为了建立这个应用程序,你必须遵循一定的步骤。
开始之前,在硬盘上建立一个物理目录(C:\tconvert)以存放应用程序,并把这个目录映射为IIS虚拟目录(叫做Temperatures)。如果你使用的是Windows Server 2003,那么请确保ASPNET进程能够访问这个目录。
第一步是建立一个Windows通讯基础服务规范。它基本上是一个被标记的接口,表明自己是一个服务规范。详见列表1。
列表1:WCF服务规范。它显示了温度转换服务示例的服务规范。
namespace Devx.Indigo.Samples
{
using System;
using System.ServiceModel;
[ServiceContract()]
public interface ITemperatures
{
[OperationContract]
double ftoc(double n1);
[OperationContract]
double ctof(double n1);
}
}
请注意上面属性的标记。ServiceContract()属性表明ITemperatures接口将成为WCF中的一个服务规范,OperationContract()表明ftoc和ctof将被定义为该规范中的操作符(operation)。因此,该过程是很简单的。
第二步是在它上面进行扩展,建立用于实现列表1中定义的接口的代码。下面的代码建立了Service类。
using System;
using System.ServiceModel;
namespace Devx.Indigo.Samples
{
[ServiceContract()]
public interface ITemperatures
{
[OperationContract]
double ftoc(double n1);
[OperationContract]
double ctof(double n1);
}
public class TemperatureService : ITemperatures
{
public double ftoc(double f)
{
double dReturn = 0.0;
dReturn = ((f - 32) * 5) / 9;
return dReturn;
}
public double ctof(double c)
{
double dReturn = 0.0;
dReturn = ((c 32) * 9) / 5;
return dReturn;
}
}
}
你可以使用下面的命令来编译这段代码,即在命令提示符下输入下面一行内容。你必须给.NET框架组件设置PATH(路径)信息。
csc /r:System.ServiceModel.dll
/out:TemperatureService.dll /t:library
TemperatureService.cs
在tconvert目录下建立BIN子目录,并把上面生成的DLL文件复制到该目录中。
下一步,配置web.config文件(见列表2)。web.config包含了WCF处理各项事务需要的所有信息。仔细查阅这个文件是很有帮助意义的。请注意,这个文件的语法在每个版本中都好像有很大的改变,甚至于在微软的在线文档和供下载的文档中也有所不同。
列表2:TemperatureService的 Web.Config文件。这个文件定义了TemperatureService的服务、行为和绑定。
<?xml version="1.0" encoding="utf-8" ?>
<configuration
xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<services>
<service behaviorConfiguration="TemperatureServiceBehavior"
type="Devx.Indigo.Samples.TemperatureService" >
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="Devx.Indigo.Samples.ITemperatures" />
</service>
</services>
<behaviors>
<behavior configurationName="TemperatureServiceBehavior"
returnUnknownExceptionsAsFaults="True">
</behavior>
</behaviors>
<bindings>
<wsHttpBinding>
<binding configurationName="Binding1" />
</wsHttpBinding>
</bindings>
</system.serviceModel>
<system.web>
<compilation debug="true" />
</system.web>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:AJAX能够取代桌面应用程序吗?
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash