菜菜刚开始接触WCF,一切都要从零开始,所以在此也记下笔记,以作日后翻看,大家也可以多多指点。
在了解WCF概述之前,我们也先来了解一下,在WCF版本还未进行发布之前,都是使用的什么技术呢?
Asp.Net Web 服务(ASMX)
这种技术用于与基于J2EE的现有预定应用程序,以及与Internet上的合作伙伴应用程序进行通信。因此目前大多数平台都支持基本的Web服务,所以在WCF发布之前,这是实现跨供应商互操作性的最直接的方法。
Asp.Net FrameWork远程处理
远程处理专门为紧密耦合的.NET到.NET通信而设计,因此它为本地网络中的应用程序提供了无缝而直接的开发体验。
企业服务
该技术可用来管理对象的生存期和定义分布式事务,在与应用程序进行通信和集成时,这些功能会很有用。但是企业服务仅支持有限的一组通信选项。
WSE(ASMX的加强版)
可与ASMX一起使用,以便与基于J2EE的预定应用程序以及合作伙伴应用程序进行通信,它实现了最新定义的一些Web服务协议(统称WS_*规范),因此只要相关所有应用程序都支持这些新规范的兼容版本,WSE就可提供更加灵活的Web服务安全性。
Microsoft消息队列(MSMQ)
用于与基于Windows的合作伙伴应用程序进行通信,这些应用程序对数据传送、工作量分离以及应用程序生存期均要求有保证。消息队列提供持久稳定的消息传送,这通常是间歇式连接的应用程序的最佳解决方案。
那么如果使用WCF:
WCF可使用Web服务进行通信,因此与同样支持SOAP的其他平台(例如基于J2EE的主流应用程序服务器)建的胡曹祖行就变得简单明了。
还可以对WCF进行配置和扩展,以便与使用并非基于SOAP的消息(例如RSS这种简单的XML格式)的Web服务进行通信。
性能是大多是业务中至关重要的考虑事项,开发WCF的目标就是要使之成为Microsoft所开发的速度最快的分布式应用程序平台之一。
当通信双方都简历在WCF上时,为获得最理想的性能,可使用线上编码这是XML信息集的一个优化的二进制版本。消息仍遵循SOAP消息的数据结构,但其编码使用该数据结构的二进制表示形式,而不是XML1.0文本编码的标准尖括号加文本格式。
管理对象生存期、定义分布式事务以及企业服务的其他方面的功能现在可以由WCF来提供。任何基于WCF的应用程序都可以使用这些功能。
WCF支持一个大的WS_*规范集,因此可在同样支持这些规范的任何其他平台进行通信时帮助提供可靠性、安全性和事务。
建立在消息队列上的WCF排队消息选项使应用程序能够使用持久的排队,而无需使用另外一组应用程序编程接口。
综上所述WCF就是:
提供统一的,可用于建立安全、可靠的面向服务的应用的高效开发平台。WCF将Web服务的概念直接映射到.Net Framework公共语言运行库(CLR)中的对应内容,包括将消息灵活且可扩展地映射到用诸如Visual C#或Visual Basic等语言实现的服务。该服务模型提供支持松散耦合和版本管理的序列化功能,并提供与注入消息队列(MSMQ)、COM+、Asp.Net Web服务、Web服务增强版(WSE)等现有.NET FrameWork分布式系统技术以及很多其他功能的集成和互操作性。
下面我们来简单的创建并调用WCF服务。
1.打开VS开发工具,然后文件→新建项目,再选择WCF服务库如果所示
点击确定后,那么简单的WCF服务即创建成功。直接F5就可看到
可进行服务的测试,简单测试成功后我们可创建另外的应用程序来进行调用。那么我们来创建一个简单的WinForm应用程序吧。
添加了一个按钮用于进行调用WCF服务的,右侧有个引用可右击
进行添加服务引用
然后点击发现那么就会搜索出现在解决方案中存在的服务,下面命名空间就是客户端生成对应的名称。
点击按钮添加调用代码
private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();
MessageBox.Show(sc.GetData(1111));
}
最后将WinForm项目设为启动项,F5运行项目,点击按钮
那么到此第一个WCF服务的创建到调用就实现了。
第一课我主要了解了什么是WCF服务,以及创建了最简单的WCF服务。