您所在的位置: 首页 > 开发 > .Net >

Visual Studio 2008中WCF的新增功能(1)

http://developer.51cto.com  2008-01-21 14:37  Juval Lowy  Msdn  我要评论(0)
  • 摘要:Visual Studio 2008可自动执行WCF手动任务,包括更新代理引用和消除重复任务(例如创建简单托管项目)。Visual Studio还能解决跨目标和数据协定类型共享等一些困难问题。
  • 标签:Visual Studio 2008  WCF  功能

Visual Studio 2008和基础Microsoft .NET Framework 3.5提供了新工具,并支持Windows Communication Foundation(WCF)。它们并未改变WCF 1.0(与.NET Framework 3.0一起发布)的基本功能,而是对其进行了扩展和完善。

Visual Studio 2008可自动执行WCF手动任务,包括更新代理引用和消除重复任务(例如创建简单托管项目)。Visual Studio还能解决跨目标和数据协定类型共享等一些困难问题。在本专栏中,我将逐步介绍其新功能及优势,并对其任何缺陷和解决方法做出解释。尽管我将在此使用C#项目设置,但除非我另行说明,否则所有设置同样适用于Visual Basic。

.NET Framework跨目标

Visual Studio的早期版本通常针对随其一起提供的 .NET Framework 版本。例如,Visual Studio 2005 只能生成针对 .NET Framework 2.0 的程序集,而此惯例并不能反映大多数开发人员所面临的真实情况。通常,开发人员需要在维护针对早期版本的 .NET 而编写的旧版应用程序的同时,还要在其新版应用程序中使用新版 Visual Studio。

此外,此惯例还意味着开发人员在维护为早期版本的 .NET Framework 而编写的应用程序时,无法从效率增强功能(例如 Visual Studio 2005 中引入的代码重构支持)中获益。

问题在于 .NET Framework 各版本不支持跨目标功能。您要么必须安装多个版本的 Visual Studio,要么使用独立的测试和部署内部版本进行补偿。Visual Studio 2008尝试通过为多个版本的.NET Framework提供充分支持(虽然不完美)来解决这一问题。由于实际上.NET Framework 3.0和.NET Framework 3.5使用的CLR版本与.NET Framework 2.0使用的相同,唯一的区别在于新引用的程序集,因此Visual Studio仍可针对相同运行库,而为.NET Framework版本2.0、3.0和3.5(其中.NET Framework版本号对应的是发行版本,而不是运行库版本,运行库版本仍为CLR 2.0)提供跨目标功能。

在Visual Studio 2008中,“Properties”(项目)的“Application”(应用程序)窗格包含一个称为“Target Framework”(目标框架)的新组合框,通过该组合框您就可以针对.NET Framework版本2.0、3.0和3.5(参见图1)。

图1:Visual Studio 2008中的目标框架属性

Target Framework值仅在开发时有效,而在运行时无效(您的程序集仍指向.NET 2.0 CLR)。您选择的值表示您构建程序集时可针对的.NET Framework的最早版本。新项目默认被配置为针对.NET Framework 3.5。如果添加引用,则会变得有些复杂;如果在引用较高版本程序集时,降低Target Framework版本,Visual Studio 2008将提示您引用出错和内部版本失败。Visual Studio 2008不允许您向其所需Framework版本高于现有项目的.NET Framework程序集添加引用。如果您向版本更高的同一解决方案中的其他项目添加引用,Visual Studio 2008将警告您可能会发生冲突。如果通过浏览程序集来添加引用,Visual Studio 2008将不会干预您进行操作。

在语言和跨目标方面,请注意,您可以在C#中(而不是Visual Basic中),通过限制编译器版本来限制使用.NET Framework 2.0或3.0项目中诸如匿名类型和扩展方法等功能。您可以转至“Build”(内部版本)窗格,然后单击“Advanced”(高级)按钮,并选择“ISO-2(C# 2.0)”作为语言版本(而不是尚未标准化的默认版本)来执行此操作。

在Visual Studio 2008中打开Visual Studio 2005 WCF项目时,升级过程中框架版本保持为 2.0。实际上这可以正常运行(请记住,基础运行库版本并未改变),但我建议根据需要手动将其设置为版本 3.0 或 3.5。

使用新项目模板时,Target Framework 版本是最重要的因素。WCF 工作流和整合项目必须针对 .NET Framework 3.5 进行构建;Service Library 项目要求针对 .NET Framework 3.0 或 3.5。“Add Service Reference”(添加服务引用)功能仅当为项目选择 Framework 版本 3.0 或 3.5 时可用,本专栏稍后将介绍此功能。

WCF 提供的主机

Visual Studio 2008 附带了一款名为 WcfSvcHost.exe 的现成的通用服务主机。它位于 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE 中。为了方便使用,我建议将该位置添加到系统的 Path 变量中。WcfSvcHost 是一种简单的命令行实用工具,可接受两个参数:一个是指向包含一个或多个服务类的 .NET 程序集的文件路径,另一个是指向托管 .config 文件的文件路径。例如:

WcfSvcHost.exe /service:MyService.dll  /config:App.config

指定的服务程序集可以是类库程序集 (DLL),也可以是应用程序程序集 (EXE)。WcfSvcHost 将启动一个新进程,该进程将自动托管指定 .config 文件的服务部分中列出的所有服务类。请注意,这些服务类及其服务约定和数据协定不必是公共类型,可以是内部类型。此外,自动托管的服务不需要提供任何元数据,但是它们可以发布元数据(如果选择发布)。

WcfSvcHost 是一种以桌面任务栏图标驻留的 Windows 窗体应用程序。若要关闭主机,只需从任务栏图标上下文菜单中选择“Exit”(退出)即可。使用这种方式终止托管不太妥当,因为 WcfSvcHost 将中止当前正在进行的所有调用,客户端很可能会收到异常。如果单击 WcfSvcHost 任务栏图标,将出现一个对话框,其中列出托管的所有服务(参见图 2)。

图2:WcfSvcHost 服务列表

该对话框还显示服务的状态及其元数据地址,您可以将这些信息复制到剪贴板,稍后向服务添加引用时可能会用得到。关闭 WcfSvcHost UI 只是将其折叠回任务栏。


共6页: 1 [2] [3] [4] [5] [6] 下一页
【内容导航】
 第 1 页:.NET Framework跨目标  第 2 页:WCF 提供的测试客户端
 第 3 页:WCF 服务库  第 4 页:添加服务引用
 第 5 页:ClientBase 中的异步回调管理
WCF开发基础
体验Visual Studio 2008的魅力
JSP开发基础教程
PHP教程 PHP开发基础入门
深入Vista应用程序开发
 
 验证码: (点击刷新验证码)   匿名发表
  • Linux C编程实战

  • 作者:童永清
  • 本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linu..
Copyright©2005-2008 51CTO.COM 版权所有