新手学web服务遇到的几个问题,请指教!!!
本人以前一直没有从事过web服务的开发,只听说他很火就也自己为自己做了一个日常消费记录的小东东,采用C/S模式+web服务的结合,但目前遇到了一些问题不能解决,另外还有自己的一些疑问想要大家帮忙的.
winform程序是表现层,功能完全来自web服务,web服务则实现对数据库的操作.
搞了几天觉得有如下一些问题请大家帮忙解决.
1.首先这种模式是否可行(不针对此项目来说,因为我一直都不怎么对asp.net感兴趣,我所做的项目一般是在专用网内的,例如交通网,公安网等)
2.web服务能否采用多线程?
3.一个asmx是不是只能对应一个类?
4.我能不能把asmx文件指向app_code目录下任何一个类文件?
5.web方法能不能实现任何返回类型函数的重载?我这里就遇到这样的问题,我把代码大致贴出来
public class baseConsume
{
public virtual DataTable GetConsume(string UserName)
{
return null;
}
public virtual DataTable GetConsume(string UserName,Datetime Start,DateTime EndD)
{
return null;
}
public Virtual bool AddConsume(ConsumeInfo csInfo)
{
return false;
}
}
此类是一个基类,保存在baseConsume.cs中,有两个可重写的方法,然后有一个类继承他,并重写其方法
[WebService(Namespace = "Consume")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class ConsumeDetail:baseConsume
{
[WebMethod(MessageName = "读取指定用户消费细节")]
public override DataTable GetConsume(string UserName)
{
return null;
}
[WebMethod(MessageName = "读取所有消费细节")]
public override DataTable GetConsume(string UserName,DateTime Start,DateTime EndD)
{
return null;
}
}
将此类保存在名为:ConsumeDetail.cs文件中
然后添一个名为:Consume.asmx文件,其内容是:
<%@ WebService Language="C#" CodeBehind="~/App_Code/Consume/ConsumeDetail.cs" Class="Consume.ConsumeDetail" %>
然后Shift+F6编译完全通过.(这里可能有手误,是用记事本写出来的)
然后再在一个名为ConsumeApp的winForm项目中添加web引用,找到Consume.asmx文件,好象提示了一些关于消息命名的提示,但还是
可以继续添加,于是将web引用命名为Consume.Opreate
然后在form1.cs中的button1.Click事件中有如下代码:
private button1_Click(object sender,EventArgs e)
{
Consume.Opreate objConsume =new Consume.Operate();
DataTable tmpTable =new Datatable();
tmpTable = objConsume.GetConsume("User1");
}
问题就出现在这里了,此时objConsume.GetConsume("User1")返回的根本就是不是DataTable类型,而是什么"读取指定用户消费细节"
请问是什么原因,我想可能是关于XML方面的问题了.请大家帮忙解决!
谢谢!