|
代理类随后会将该字典表示为 Dictionary<T,K>,这是以下 Dictionary 集合类型组合框的默认值:
[OperationContract] Dictionary<int,string> GetDictionary(); |
但是,您可以请求其他字典类型(如 SortedDictionary<T,K>、HashTable 或 ListDictionary),代理将改为使用这些字典(如果可能):
[OperationContract] SortedDictionary<int,string> GetDictionary(); |
综上所述,新服务引用最重要的功能就是能够在程序集之间共享数据协定类型。使用 Visual Studio 2005,如果客户端将服务引用添加到两个支持相同数据协定的独立服务中,那么客户端将获得两个类型完全相同(表示相同数据协定)的不同服务引用。使用 Visual Studio 2008,默认情况下,如果客户端引用的任何程序集所具有的数据协定类型与引用服务的元数据中显示的数据协定类型相匹配,则 Visual Studio 2008 将不会再次导入该类型。有必要再次强调一下,现有数据协定引用必须位于另一个引用程序集中,而不是位于客户端项目本身中。Visual Studio 的未来版本中可能会解决此限制。目前,解决方法和最佳实践都很明显:将所有共享数据协定都构建到指定的类库中,并让所有客户端都引用该程序集。
通过服务引用的高级设置对话框,您可以配置数据协定共享。默认情况下“Reuse types in the referenced assemblies”(重用引用程序集中的类型)复选框处于选中状态,但您可以关闭此功能。不管复选框的名称是什么,此复选框都将只能共享数据协定而不能共享服务约定。使用复选框下面的单选按钮(参见图 8),还可以指示 Visual Studio 2008 在所有引用的程序集中重用数据协定,或者通过选中列表中的特定程序集来限制共享这些程序集。
添加引用后,项目将具有一个新文件夹 Service References,该文件夹中显示了每个引用的服务的服务引用项(参见图 12)。
 |
| 图12:服务引用文件夹 |
随时可以右键单击引用并选择“Update Service Reference”(更新服务引用)来重新生成代理并更新客户端的 .config 文件。由于服务引用项中还包含一个记录了所使用的原始元数据地址的文件,因此可以执行此操作。
还可以选择“Configure Service Reference”(配置服务引用)打开一个对话框,该对话框与添加引用时使用的高级设置对话框类似。通过配置服务引用对话框,您可以更改服务元数据地址以及其他高级代理设置。
|