sbj0707

Web service Remoting ADO.NET Windows server 2003

导航

一个奇怪的WEB SERVICE程序

以下的程序出自MSDN
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebserviceswebmethodattributeclassbufferresponsetopic.htm
using System;
using System.IO;
using System.Collections;
using System.Xml.Serialization;
using System.Web.Services;
using System.Web.Services.Protocols;

public class Streaming {

    [WebMethod(BufferResponse
=false)]
    
public TextFile GetTextFile(string filename) {
        
return new TextFile(filename);
    }


    [WebMethod]
    
public void CreateTextFile(TextFile contents) {
        contents.Close();
    }


}


public class TextFile {
    
public string filename;
    
private TextFileReaderWriter readerWriter;

    
public TextFile() {
    }


    
public TextFile(string filename) {
        
this.filename = filename;
    }


    [XmlArrayItem(
"line")]
    
public TextFileReaderWriter contents {
        
get {
            readerWriter 
= new TextFileReaderWriter(filename);
            
return readerWriter;
        }

    }


    
public void Close() {
        
if (readerWriter != null) readerWriter.Close();
    }

}


public class TextFileReaderWriter : IEnumerable {

    
public string Filename;
    
private StreamWriter writer;

    
public TextFileReaderWriter() {
    }


    
public TextFileReaderWriter(string filename) {
        Filename 
= filename;
    }


    
public TextFileEnumerator GetEnumerator() {
        StreamReader reader 
= new StreamReader(Filename);
        
return new TextFileEnumerator(reader);
    }


    IEnumerator IEnumerable.GetEnumerator() 
{
        
return GetEnumerator();
    }


    
public void Add(string line) {
        
if (writer == null)
            writer 
= new StreamWriter(Filename);
        writer.WriteLine(line);
    }


    
public void Close() {
        
if (writer != null) writer.Close();
    }


}


public class TextFileEnumerator : IEnumerator {
    
private string currentLine;
    
private StreamReader reader;

    
public TextFileEnumerator(StreamReader reader) {
        
this.reader = reader;
    }


    
public bool MoveNext() {
        currentLine 
= reader.ReadLine();
        
if (currentLine == null{
            reader.Close();
            
return false;
        }

        
else
            
return true;
    }


    
public void Reset() {
        reader.BaseStream.Position 
= 0;
    }


    
public string Current {
        
get {
            
return currentLine;
        }

    }


    
object IEnumerator.Current {
        
get {
            
return Current;
        }

    }

}


以上是WEB SERVICE的一短代码,在客户端怎么实现这个调用,我觉得有些奇怪,特别是这个方法
public TextFile GetTextFile(string filename) 
 
{
     
return new TextFile(filename);//只执行了构造函数,
 }


返回了一个TextFile对象,但此对象只有一个filename的字段,还完全没有构造好,就返回了,奇怪!!!
还有那个接口,看起来也有点模糊,大家讨论啊!!

posted on 2005-08-20 09:08  IT  阅读(592)  评论(0编辑  收藏  举报