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中的值
211 0
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
525 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
265 2
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
145 0
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
文件存储 Python
Flask学习笔记(一):Flask Web框架
本文介绍了Flask Web框架的基本概念、安装方法、初始化参数、程序编写、静态文件显示和配置信息加载等基础知识。
308 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.
240 0
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
160 0
|
5月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
499 4
|
9月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
9月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。