定义一函数 (此2个函数多是封装在Web里服务器的方法)
[WebMethod]
public string function_ref(ref string str, ref int n)
{
str = "111";
n = 10;
return "222";
}在客户端(非服务器机)程序里 建立一个Webservice连接,调用 function_ref(),如下:
string str="null";
int n=-1;
Webservice.function_ref(ref str,ref n);
//输出结果 str="111"; n = 10;
这个结果让我有些不解,我是这么想的,Webservice的代码不是在服务器端运行的吗? 客户机传一个地址,服务器按照这个地址进行处理,这些操作是对服务器指定内存的地址的值进行操作,而客户机的 那个地址所指向的值应该不变的吧????
[WebMethod]
public string function_ref(ref string str, ref int n)
{
str = "111";
n = 10;
return "222";
}在客户端(非服务器机)程序里 建立一个Webservice连接,调用 function_ref(),如下:
string str="null";
int n=-1;
Webservice.function_ref(ref str,ref n);
//输出结果 str="111"; n = 10;
这个结果让我有些不解,我是这么想的,Webservice的代码不是在服务器端运行的吗? 客户机传一个地址,服务器按照这个地址进行处理,这些操作是对服务器指定内存的地址的值进行操作,而客户机的 那个地址所指向的值应该不变的吧????
这都是经过C#封装后的东西了,你引用服务后,会生产一个代理类,这个类把服务器传回来的XML数据解析封装后给你的。具体的我也没有仔细了解了。
str = "111";
这句执行在服务器是这样的吧,给str的地址(这个地址不是相对服务器端的吗?) 赋值--“111”,至于他返回一个XML文件,这个文件数据返回应该就是函数返回值的内容吧, 客户端 str的地址的值应该还是没变的啊????
基本解决了我的疑问,不过有加了我一个疑问了··就是代理 这个东东
谢谢lerit!!!
上面的话也就是说,没有代理类你照样可以访问webserver,但是这之间的数据传送必须你自己序列化,还要用soap协议,代理类就都替你做了,简化而已