学习WCF是不是就不需要学习Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列?
WCF分布式开发学习,如何制定一个合理的计划,才能更好地学习WCF分布式应用开发。应该从哪里开始?
如何下载和安装WCF开发相关的组件。
有什么好的学习书籍、论坛?
对很多WCF学习的初学者来说,这往往面临的问题。
今天整理这个文章,首先是希望对许多WCF的学习者,有个帮助。其次就是算是对《WCF分布式开发步步为赢》系列课程的一个完善。
这个问题一直是很多开发者关注的问题.按照微软的说法,WCF是微软分布式应用程序开发的集大成者。因此很多人就认为学习WCF编程,就不需要了解其他的技术.这个说法有一定的道理.WCF的出现确实解决了很多问题,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。既然WCF如此强大,开发者再不用去分别了解.Net Remoting,ASMX等各种技术了。
我也遇到过类似的问题,现在就把自己和别人的一些经验与大家分享,希望对WCF的爱好者有参考作用。
【1】什么是WCF:
WCF全称Windows Communication Foundation,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。
Web 服务中包含了用于应用程序间通信的标准协议,它在全球范围内的广泛采纳改变了软件开发。例如,如今 Web 服务提供的功能包括安全性、分布式事务协调和可靠的通信。Web 服务所发生的这些改变的效益应反映在开发人员所使用的工具和技术方面。设计 Windows Communication Foundation (WCF) 的目的是为分布式计算提供可管理的方法,提供广泛的互操作性,并为服务定位提供直接的支持。
类型化编程模型(称为“服务模型”)设计用来降低分布式应用程序的开发难度,并为 ASP.NET Web 服务、.NET Framework 远程处理和企业服务领域的专业开发人员,以及将要从事 WCF 开发的人员提供熟悉的开发体验。该服务模型的特点在于它将 Web 服务的概念直接映射到 .NET Framework 公共语言运行库 (CLR) 中的对应内容,包括将消息灵活且可扩展地映射到用诸如 Visual C# 或 Visual Basic 等语言实现的服务。该服务模型提供支持松散耦合和版本管理的序列化功能,并提供与诸如消息队列 (MSMQ)、COM+、ASP.NET Web 服务、Web 服务增强 (WSE) 等现有 .NET Framework 分布式系统技术以及很多其他功能的集成和互操作性。(参考MSDN)
【2】如何学习:
既然WCF介绍里提到了以上技术概念:
技术集成:Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列
宿主程序:ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。
【2.1】必备技术前提:
(1).NET 基础知识,包括CLR,基本类库等概念。
(2)c# 或者VB.NET,任何一个机遇.NET平台的编程语言。目前是c#为主。
(3)ASP.NET 及IIS网络应用程序相关知识
(4)Visual Studio 开发工具熟练使用。
【2.2】可选技术条件:
(1)Enterprise Sevices(COM+),企业服务应用程序,微软.NET 平台下对COM+的一个包装。集成了COM+的特性。
(2).Net Remoting,.NET 平台下分布式环境里应用程序通信的技术,适合企业局域网,效率较高。
(3)Web Service(ASMX),微软推出的基于ASP.NET 框架的Web Service技术。开发和部署简单。
(4)WSE3.0,这里是一个过渡技术。已经出现了IIS外托管WebService,支持传输优化等特性,安全模型进一步提升。
(5)MSMQ消息队列,微软平台下,比较成熟的一个技术,适合构建离线消息和松耦合的系统。
【3】学习资源:
1.那里获取最新的Visual Studio 或者the .Net Framework?
微软发布了 SP1 for VS 2008 和.Net Framework 3.5, 这是最新的连接:
Visual Studio 2008 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en
Visual Studio Express SP1: http://www.microsoft.com/express/sp1/
.Net Framework 3.5 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en
微软发布了 VS 2010 和.Net Framework 4.0, 这是最新的连接:
Visual Studio 2010 Beta2:http://msdn.microsoft.com/en-us/netframework/cc896557.aspx
2.哪里有WCF 文档和代码示例?
.Net Framework 3.5 MSDN 文档和例子
文档: http://msdn2.microsoft.com/en-us/library/ms735119(VS.90).aspx
文档: http://msdn2.microsoft.com/en-us/library/ms751514(VS.90).aspx
例子下载: http://go.microsoft.com/fwlink/?LinkId=87352
WCF 社区
社区: http://wcf.netfx3.com/
WCF 安全向导
视频, 教程, 和例子: http://www.codeplex.com/WCFSecurity
3.WCF书籍:
(1)《Programming WCF Services》,Juval Lowy著,评论:内容详细,基础,全面。英语好的可以看英语版。
《WCF服务编程》,Juval Lowy著,中文版本由张逸、徐宁翻译。书籍印刷质量一般。初学和有点基础的朋友可以看看。
(2)Windows Communication Foundation Unleashed ,(美)Craig McMurtry;Marc Mercuri;Nigel Watling;Matt Winkler .
中文名字《WCF揭秘》,赵科平翻译。评论:不适合初学者,算是中级教程。建议有一定WCF编程基础的人
(3)Learning WCF: A Hands-on Guide 。作者:MICHELE LEROUX BUSTAMANTE。例子很多。中文版本由庞引明;侯伯薇翻译。
《学习WCF:从原理到实践》。原书可能很不错,但是中文翻译版本评论一般。说是翻译的词汇比较拗口。看中文名字个人感觉应该是WCF学习手册或者指南比较贴切。有兴趣的朋友可以看看原文图书。
(4)Essential Windows Communication Foundation (WCF): For .NET Framework 3.5 (Microsoft .NET Development Series) by Steve Resnick, Richard Crane, and Chris Bowen 《WCF本质论》,作者 by Steve Resnick, Richard Crane, and Chris Bowen 不错的书籍,Amazon上评论不错,和《WCF服务编程》一样属于讲解详细,通俗易懂的书籍。可以作为入门学习书籍,也可以作为开发的参考手册。 知识点很清晰。
(5)Inside Microsoft Windows Communication Foundation》。 .中文译名为《WCF技术内幕》,Frank Xu Lei(我本人,目前没有正式出版)翻译。很好的系统介绍WCF底层结构和通信原理的书籍。为构建面向服务的(SOA)应用提供了你所需要的深入的架构性的视野,这本书提供给我们实践应用的指导和许多代码示例去帮助你掌握开发和事实互联应用的复杂性。适合WCF的架构师和高级开发人员。
以上书籍都是Amazon上评价很好的书籍,4星半,接近5颗星,确实值得一读,建议大家看英文原著书籍,这些书籍都是WCF经典著作。而且作者的水平很高,无论技术实力,还是工作经验,都已经得到同行的认可。
4.推荐论坛:
【中文论坛】:微软WCF中文技术论坛,成立不久,付仲恺大哥在Web Cast讲授《构建WCF面向服务的应用程序系列课程》常回答大家的问题。欢迎访问。
【英文论坛】:微软WCF英文技术论坛,老外很多,问题种类设计各个方面。也很专业。基本WCF相关的问题都可以解决或者找到提示。
【4】总结:
最后的建议:
(1)是最好对以前的技术有所了解,学习技术态度要扎实。如果你是新手,有足够的时间,建议你从基础学起,现了解Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列等相关概念以后,再来学习WCF技术。我整理了WCF分布式开发必备知识(4) 和WSE3.0构建Web服务安全(4) 系列,对这些技术进行了整理。给出了可以执行的代码。大家可以参考。
(2)如果项目时间紧迫,可以直接奔WCF编程学习,但是等自己时间充裕的话,建议还是回头好好学习一下。起码是有个了解。不会在讨论这些技术问题的时候总是一脸的茫然。例如理解WCF IIS托管,就必须对IIS和ASP.NET底层相关知识有深入的了解。想掌握WCF安全编程,对WS-security知识要熟悉。否则很难理解WCF的安全模型。
(3)根基决定高度。在WCF学习的态度上,认真一些,我们一步一个脚印,一定会成为有很多收获。这个其实也是通常学习技术的一个态度。 技术需要一个积累的过程。
(4)实践是检验真理的唯一标准。呵呵,动手才能更好地理解WCF的一些技术概念,对相关特性才能深入体会。只是纸上谈兵,没有太多实际意义。最大的收获来之于试验。学习最好的方式就是:WCF in Practice!
(5)希望对所有的WCF技术初学者,都能有所启示或帮助!
(6)高手的话,可以研究WCF底层相关的知识,比如线程模型、安全协议,通道模型等等。
也希望WCF前辈多多补充。分享学习经验,推荐学习书籍。给新人以提示。因为经常和一些WCF爱好者讨论这个问题。
最后就整理一个文章。算是一个补充吧。
谢谢。