MyGeneration学习笔记(4) :在Web Service中使用dOOdad(上)

简介:

     dOOdad对Web Service的支持还不够好,dOOdad的核心是DataTable,而在ADO.Net 2.0中的DataTable虽然相对1.x功能扩展了不少,微软鼓吹DataTable功能有多强多强,据说Web Service也都支持返回DataTable,但俺试了一下,发现还存在不少问题。
    既然Web service不支持DataTable作返回值,所以要将业务实体类内部的信息在网络中传输,就得想其他办法。

       下面是MyGeneration论坛上某网友提供的一种解决方法,基本思路是将dOOdad业务实体内中的DataTable封装到DataSet,将dataset做为参数或返回值:

//Concrete class中添加如下两个方法:

public   class  Employees : _Employees 

   
public void FromDataSet(DataSet ds) 
   

      
this.DataTable = ds.Tables[0]; 
   }
 

   
public DataSet ToDataSet() 
   

      DataSet dataSet 
= new DataSet(); 
      dataSet.Tables.Add(
this.DataTable); 
      
return dataSet; 
   }
 
}

Web Service中的代码片断:

[WebMethod] 
public  DataSet LoadAll() 

      
try 
      

         Employees emps 
= new Employees(); 
         emps.LoadAll(); 
         
return emps.ToDataSet(); 
      }
 
      
catch return null; } 
}
 

[WebMethod] 
public   bool  Save(DataSet dataset) 

      
bool wasSaved = false
      
try 
      

         Employees emps 
= new Employees(); 
         emps.FromDataSet(dataset); 
         emps.Save(); 
         wasSaved 
= true
      }
 
      
catch { } 
      
return wasSaved; 
}
 

客户端代码:

// ---------------------------------------------------------- 
//  Invoke the Web Service and Load all of the Data 
// ---------------------------------------------------------- 
EmployeesService empsService  =   new  EmployeesService(); 
DataSet ds 
=  empsService.LoadAll(); 

// ---------------------------------------------------------- 
//  Load that Data into a local Employees object 
// ---------------------------------------------------------- 
Employees emps  =   new  Employees(); 
emps.FromDataSet(ds); 
emps.FirstName 
=   " WebService!! "
emps.GetChanges();  
//  very important 

// ---------------------------------------------------------- 
//  Reconvert to a DataSet (after calling GetChanges) 
// ---------------------------------------------------------- 
ds  =  emps.ToDataSet(); 

// ---------------------------------------------------------- 
//  Marshall it back to the web service 
// ---------------------------------------------------------- 
empsService.Save(ds);

          这个方法不错,不过有个小问题就是这个DataSet有自己的Schema,如果客户端对该web服务接口的访问量比较大的话,给网络传输带来一定的性能影响。 

         下一篇文章中,我将给出我自己的一个另一种实现方法,敬请关注。

本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2006/08/23/601238.html,如需转载请自行联系原作者
相关文章
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
258 0
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
613 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
330 2
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
189 0
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
文件存储 Python
Flask学习笔记(一):Flask Web框架
本文介绍了Flask Web框架的基本概念、安装方法、初始化参数、程序编写、静态文件显示和配置信息加载等基础知识。
353 0
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
302 0
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
205 0
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
390 0
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
525 0