代码改变世界

WCF 第二章 契约 在WSDL中使用KnownType暴露额外类型

2011-06-23 21:44 by DanielWise, 2365 阅读, 0 推荐, 收藏, 编辑
摘要:如果数据类型满足任何先前描述的条件,那么它们会在WSDL中暴露出来。有一些额外的可能,当然,你也可能想强制一个类型包含在WSDL契约中。 举一个类继承的例子。如果一个序列化的派生类到达一个期待得到一个序列化的基类的终结点时,WCF不会知道如何反序列化这个派生类因为它不是契约的一部分。另外一个例子是一个hashtable 类,存储了其他的类作为自己的元素。WSDl将会定义hashtable类,但是不是那么存储在hashtable内部的类。 在这些情况下,你必须告诉WCF这些应该显示包含在WSDL契约中的类。这是使用KnownTypes完成的。它可以在四种方式下完成:通过添加一个KnownType 阅读全文

WCF 第二章 契约 定义类的层次结构

2011-06-23 21:36 by DanielWise, 1174 阅读, 0 推荐, 收藏, 编辑
摘要:复杂类型一般在代码中以类的形式实现。复杂类更进一步通过增加特殊结构的继承关系来定义。这种方式,一个通用类型比如”price” 可以派生出为一个更加特殊的类型如”stock price” 或者 “house price”.WCF支持通过在WSDL中合适的表示的类的继承关系,在类结构和XML之间序列化和反序列化它们同时从每个类中取出属性并加入到一个集合中。 在列表2.17中,类Price由三个元素和一个子类组成。StockPrice,继承自Price.命名空间应用到两个类上所以它们在XML中由完全合法的名字。每个元素保留自己的命名空间。 列表2.17 使用数据契约定义类的层次结构 using Sy 阅读全文

WCF 第二章 契约 数据契约

2011-06-23 21:31 by DanielWise, 5352 阅读, 1 推荐, 收藏, 编辑
摘要:在一个服务内部,功能性的应用由代码实现的。在服务外部, 功能性服务在WSDL中定义。在一个WCF服务中,应用程序数据在简单和复杂类型表示;而在服务外部,应用程序数据由XML元数据定义表示。WCF数据契约提供了对代码定义的.NET CLR类型与W3C组织定义用来在服务外部通信的XML元数据定义之间的映射。使用WCF,开发人员花费更多的时间在代码和接口语义上,在XSD和WSDL语法上花费的时间会更少。那不是说XSD和WSDL语法不重要;它们是跨平台系统上进行互操作必要前提。但是编译器也显示出了在把由.NET 语言生成的数据结构翻译为跨平台的具有互操作性的XSD和WSDL表示的优势。在设计阶段,[D 阅读全文

WCF 第二章 契约 WSDL中的操作名字、类型、操作和命名空间

2011-06-23 21:23 by DanielWise, 4375 阅读, 0 推荐, 收藏, 编辑
摘要:WCF 根据服务端源代码中定义的内部类名称和属性来生成外部暴露服务实现。这些实现通过服务中的MEX终结点暴露出来并在设计阶段时被客户端以WSDL形式使用。接下来在客户端,WSDL会被用来写一些代码来建立可以与服务端通信的适当的消息格式。所以你选择的类,方法和参数的名字与服务范围潜在相差很远。然而,在服务的接口暴露内部名字和外部细节是很不好的形式。比如,你可能有一个叫BurgerMaster的分配算法,你想在外部以Resources名字暴露这个算法。或者可能有内部的编码标准要求你应该命名接口。幸运的是,你可以通过修改[ServiceContract],[OperationContract], [ 阅读全文

WCF 第二章 契约 在一个服务中实现多个契约和终结点

2011-06-23 21:16 by DanielWise, 5099 阅读, 0 推荐, 收藏, 编辑
摘要:一个服务作为一系列终结点被定义的。每个终结点都有一个地址,绑定和契约。契约就是暴露终结点能力的。地址就是这些应用或服务从网络的哪个地址可找到,契约是关于如何访问他们的。在终结点和契约间有一对多的关系。一个终结点可以只有一个契约,但是一个契约可以被很多终结点引用。尽管一个终结点可以仅仅确认一个契约,接口聚合使能一个单独的契约来暴露多个接口。另外,多个有同样绑定但是不同契约的终结点可以位于同一个地址,给一个单独终结点实现所有契约的假象。通过在一个服务中的多个终结点暴露一个契约,你可以让服务在不同绑定下都可以访问。你可以定义一个终结点使用WS-I基础协议绑定来得到最大访问量同时使用另外一个使用TCP 阅读全文

WCF 第二章 契约 实现一个双向契约的客户端部分

2011-06-23 21:11 by DanielWise, 994 阅读, 0 推荐, 收藏, 编辑
摘要:为了参与到一个双工消息交换模式中,客户端必须实现WCF的ABCs-必须在客户端定义服务要把消息发送到的地址,指导服务端如何把消息发送给客户端的绑定,定义消息内容和格式的契约。幸运的是,当你生成一个客户端代理而且在运行时使用信道结构时,WCF很大程度上考虑到了这些。生成一个客户端代理类,你可以使用svcutil.exe或者添加服务引用。代理定义一个与服务同名的接口,并在后面加上Callback.如果服务契约接口是IStockService,客户端接口就是IStockServiceCallback。客户端必须实现一个从接口继承的类。在运行时,与服务类似,客户端通过终结点定义和发送消息给客户端来严格 阅读全文

WCF 第二章 契约 实现一个双向契约的服务端部分

2011-06-23 21:07 by DanielWise, 1093 阅读, 1 推荐, 收藏, 编辑
摘要:一个双向契约包含服务终结点和客户端终结点的接口实现。在契约类型中,服务端契约在客户端实现。 列表2.6为一个提供stock price更新的服务定义一个服务契约。它使用双工通信以便于一个客户端可以注册更新,服务将周期性的发送更新消息给客户端。客户端通过调用服务端的RegisterForUpdates操作来初始化通信。服务然后会创建一个线程来周期性的通过调用客户端的PriceUpdate操作来发送... 阅读全文

WCF 第二章 契约 两个单向契约VS一个双向契约

2011-06-23 21:05 by DanielWise, 1153 阅读, 0 推荐, 收藏, 编辑
摘要:你可以通过两个不同消息交换模式来解决双向通信问题。你可以使用两个单向契约,或者你可以使用一个双工契约。对于两个单向契约来说,客户端和服务端都是独立的WCF宿主。它们分别暴露终结点来可以让另一个向自己发消息。因为它们是全面的服务,它们可以暴露多个终结点,使用多个绑定和独立的定义契约的版本。使用一个双工契约,客户端不用明确的变成一个WCF服务而且不用很复杂(很灵活)来选择绑定或者暴露其他终结点。更进一... 阅读全文

WCF 第二章 契约 双向操作

2011-06-23 21:03 by DanielWise, 1193 阅读, 0 推荐, 收藏, 编辑
摘要:请求-回复通信是客户端与服务端最普遍的消息交换模式。通信在客户端被初始化,客户端发送一个请求消息给服务端,然后服务端发送一个返回消息给客户端。如果返回消息很快,那么通信过程可以是同步的,所以客户端应用程序阻塞等待反馈。如果请求和回复之间会有延时,请求-回复模式可以在客户端使用标准.NET技术实现异步调用。在那种情况下,WCF会在发送请求给服务端后立即把控制返回给客户端应用程序。当服务接收到反馈以... 阅读全文

WCF 第二章 契约 单向操作

2011-06-23 21:01 by DanielWise, 1088 阅读, 0 推荐, 收藏, 编辑
摘要:当一个客户端需要向一个服务端发送消息但是不接受返回消息时,但不消息交换模式很有用。使用这个模式,客户端只需要消息成功传递的确认;它不需要服务端返回一个精确的消息。有时单步模式被错误的称作"发后不理"。在实际应用中,它是"发送和理解"因为调用者接收到一个消息成功提交到通信信道的确认。 WCF支持在服务操作层次的单向消息交换模式。服务操作可以被标记为单向而且基础结构将会使那种情况更完善。当一个客户端调用服务端的一个单项方法时,或者更准确的说,当一个客户端发送一条消息给一个操作被标记为单向的服务终结点时,控制端在服务操作完成之前就返回给调用方。单向操作通过在属 阅读全文
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 26 下一页