
2

3

4

5

6

7

8

9

10


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

2.对于大文件的传输,现在脑子里有几个基本的概念:
(1)要用Streamed的方式,不要用Buffered的方式
(2)要使用二进制格式的原生信息,不要使用Base64进行信息的文本化处理
(3)WCF本身考虑的是怎么对信息作编码,通过什么样的协议传过来。但续传本身的一些功能(比如把已经传过来的内容先一部分得保存起来等)可能需要自己去考虑它的实现方式。
3.如果使用MTOM作为一个binding的Encode方式,如代码段3:















4.使用Streamed的方式去发送消息,有几个明显的限制:
(1)无法对消息体进行签名。这是当然的,因为内存里不再缓存整个消息了。
(2)由于无法签名,所以一些依赖于签名的加密手段就不能使用了。
(3)难以支持整个消息的重发,因而也就无法保证一个可靠的连接(reliable session)
正因为有这些限制,所以WCF中的很多默认的Binding是不支持这种Streamed的方式的,只有下面三种绑定可以:BasicHttpBinding, NetTcpBinding, NetNamedPipeBinding。
5.对于TransferMode这个枚举值,第一次在MSDN的时候可是把俺为难坏了,啃了半天英文也没搞清楚到底哪种环境适合用什么,直到后来看到代码段5例子(我已添加注释):

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

另外,这也纠正了我以前的一个误区。我以前认为ServiceContract和Binding是一一对应的,或者说,我认为如代码段6这样的配置中的contract属性只能指向一个ServiceContract,看来我是错的(还需以后的验证)。




6.自己到目前为止,在开发中还没有用过DataContract和MessageContrace,说明自己对WCF的理解和使用都非常片面,有很大局限性。
7.刚才在MS Downloader里面下载了一些关于WCF的Samples,觉得不错。但自己对高级查询中的一些查询项还是摸不太清头脑,不晓得Product/Technology和Category这两个关键的查询选项到底应该怎么设,只要统统暂设成All。
地址:http://www.microsoft.com/downloads/advancedsearch.aspx?displaylang=en
8.看了一个关于MessageContract的最简单的例子,就是定义一个[MessageContract]的类型,并在其中定义[MessageHeader]和[MessaegBodyMember]。然后这个类型就可以作为一个WCF服务的调用参数类型和返回参数类型了。
下班了,下周继续 ^&^