C# webservice如何接收并处理数据?

公司是用C#的,现有一业务,需要与其它公司做数据交接,现在公司要获取对方的数据,而对方要我们做个webservice,提供XML格式让他传输数据过来给我们使用,他提供的数... 公司是用C#的,现有一业务,需要与其它公司做数据交接,现在公司要获取对方的数据,而对方要我们做个webservice,提供XML格式让他传输数据过来给我们使用,他提供的数据最终有可能是传入到数据库里,那我这边是怎么写这个webservice呢?是要在webservice的页面上创建一个数据库表的类?然后写个方法,这个方法要求对方提供一个参数,这个参数就是这个数据库表的类名?返回值又是什么?对方使用了这个方法返回了值过来,我又该怎么获取并处理呢?对此一点概念都没有,求帮忙,谢谢! 展开
 我来答
阳光的雷咩咩
2014-12-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7819万
展开全部

就新建个webservice项目,然后写个函数类似如下都行

        public void Up(XmlDocument doc)
        {
            //里面通过解析xml操作你自己的数据库
        }

        public XmlDocument Down()
        {
            //查询数据库并生成xml
            return new XmlDocument();
        }

如果XmlDocument他那边不能接收你就直接改成string类型也行。

顺便说下VS里新建WCF服务项目类型也可以实现类似web service的功能,而且更推荐。

更多追问追答
追问
public XmlDocument Down()的意思就是将数据库的字段名全部转换成XML格式,然后返回给对方,对方就根据里面的字段名进行赋值再通过public void Up(XmlDocument doc)这样返回过来吗?
追答
实际上webservice与你平时编程没区别,最大的区别就是要考虑到webservice就是为了跨平台使用的,也就是纯文本类型实际上是最通用的,因此不管参数或者返回值都最好是string,int等基本类型,当然XmlDocument理论上也可以我没试过,你自己多试就知道了。
xiangjuan314
2016-01-13 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2896万
展开全部
/// <summary>
/// 同步数据对象。用于从webservice中获取数据后同步
/// </summary>
public class WebServiceClient{
       private const string WEBSERVICE_URL = "http://host/axis2/services/BookBeanServer";
       public static string LastError = string.Empty;
       public WebServiceClient() { }
       /// <summary>
       /// 处理单本资源。为调用处使用并行处理,此处只处理单本资源。
        /// </summary>
      /// <param name="metaId"></param>
      /// <returns></returns>
       public bool Process(string metaId) {
                var result = new Book();
                try {
                    result.InitializeFrom(this.GetBookOrignalXmlFromWebService(metaId));
                }
                catch (XmlException ex) {
                    LastError = ex.Message;
                    return false;
                }
                return this.SynData(result);
            }
       private string GetBookOrignalXmlFromWebService(string metaId) {
                MyWebServiceReference.BookBeanServerPortTypeClient client = new MyWebServiceReference.BookBeanServerPortTypeClient(
                    new WSHttpBinding(SecurityMode.None), 
                    new EndpointAddress(WEBSERVICE_URL)
                    );
                object obj = client.getBook(new string[] { metaId });
                XmlNode[] nodes = (XmlNode[])obj;
                return nodes.Length > 0 ? nodes[0].InnerXml : string.Empty;
     }
     private bool SynData(Book Book) {
            //TODO:同步数据
              return true;
     }
            
}

 WebServiceClient表示单本资源处理类,其职责是调用WebService,将获取的数据同步到数据库。

       由于涉及到的数据量比较大,在调用出使用并行处理。.Net framework4.0中,提供了并行处理方案,在并行处理方面,更推荐使用其提供的Parallel类,与ThreadPool相比,减少了线程开销。

       调用处代码如下:

Parallel.ForEach<string>(
                GetMetaIds(), 
                metaid => { 
                    WebServiceClient client = new WebServiceClient();
                    var temp = Task.Factory.StartNew(() => { return client.Process(metaid); });
                    temp.ContinueWith(tmp => { 
                        //TODO:处理同步处理的结果
                        Console.WriteLine(tmp.Result ? "ok" : "f"); 
                    });
                }
          );

其中GetMetaIds()函数返回IList<string>数据,存储调用的WebService的参数集合。
      在Visual Studio中,在新建的项目中添加web service引用,会自动生成访问代理类。此处为webservice引用创建了MyWebServiceReference的命名空间。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2014-12-18 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4052万
展开全部
  1. 搞清楚要传什么数据,以确定怎么存储数据(几个表?之间的关系?各字段类型长度等)

  2. 如果是多个表的话,可以定义多个WebService的方法,也可以定义一个方法,用不同参数区别

  3. 定义数据传输的xml格式,你负责解析指定格式的xml,并存储到数据库中。

  4. 返回值比较简单,就是成功,或者失败就可以了。

更多追问追答
追问
暂时只有一个表,请问下如果返回的是数据库表的类型,WebService是不是会自动将这个类转换成XML的?如果像对方这样要求,说提供XML格式的,是要手动编写XML还是等系统自行处理?因为WebService的接口地方加"?WSDL"就能看到XML的格式,所以我都不知手动设置和机器自行处理有什么分别
追答
wsdl那个是根据soap自动生成的,我们可以不用关注,因为我们不是从基础开始编程,而是用现成的类(组件?)。
这儿说的xml格式只限于你实际要传输的数据,
对应于表中的一行或者多行数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式