CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  Web Services

高分讨论web服务的方案

楼主boylynn()2006-11-02 23:56:39 在 .NET技术 / Web Services 提问

只是突然想起来的idea,不知道能不能实现,如何实现,想和大牛们讨论下。  
  有这样的一个WEB服务,查询RDB(SQLServer)里的数据,返回DataSet类型,关键是输入参数为XML的一个string  
  [WebMethod]  
  public   DataSet   RetrievalData(string   xmlquery)  
  {}  
  输入参数xmlquery例如:  
  <root>  
      <name>namexxx  
      </name>  
      <starttime>startxxx  
      </starttime>  
      <endtime>endxxx  
      </endtime>  
      <id>xxx  
      </id>  
      <group>idxxx  
      </group>  
  </root>  
  程序内部实现上,先对输入的xmlquery进行判断,看是不是符合Schema定义,然后遍历结点,提取参数  
  ,比如  
  string   byname   =   <name>节点的值  
  string   byid   =<id>节点的值。。。等等  
  然后把参数做为查询的参数给CommandText   进行查询  
  理论上是行得通的,对么?  
  就是不知道如何对xmlquery进行Schema校验,以及更好的提取结点。  
  大家有什么办法。 问题点数:80、回复次数:17Top

1 楼ckpbed(ckp)回复于 2006-11-03 11:23:19 得分 10

可以定义xsd进行校验。Top

2 楼boylynn()回复于 2006-11-03 12:31:01 得分 0

xsd不就是schema么Top

3 楼fq_ln(冬天)回复于 2006-11-03 12:56:02 得分 10

xsd就是schema没错,其实你的参数完全不必用string,就用dataset就可以了(类型化的DataSet)Top

4 楼boylynn()回复于 2006-11-03 13:05:08 得分 0

恩   有道理   就是手动建立不带数据库连接的DataSet是么?然后建立建立DataTable么?这个怎么对用户进行校验呢?用户输入只是一些strings阿,还有这个好扩充么?以后增加或减少检索条件怎么做?Top

5 楼boylynn()回复于 2006-11-03 15:48:09 得分 0

也许没说清楚,就是首先要把   输入的字符串解析成xml类型,然后对该xml进行判断,看其是否符合schema架构,然后提取节点,匹配参数进行查询Top

6 楼marising(抹布)回复于 2006-11-03 17:38:33 得分 10

DataSet   GetData(string   sql)  
  void   ExcuteSql(string   sql)  
  两个方法搞定,岂不是更简单?Top

7 楼fangzhe()回复于 2006-11-03 18:42:01 得分 0

LZ先去看看xsd再说Top

8 楼boylynn()回复于 2006-11-03 20:05:43 得分 0

to   marising(抹布)  
  你那个“string   sql”是什么样的,如果本来就是一个普通的string参数,那这样不就是相当于  
  DataSet   GetData(string   querystring1,string   querystring2,...)  
  {  
      //ExcuteSql(...)  
      //return   ds  
  }  
  这样一个不就够了。   但是没有达到本来的意思啊,不具扩展性呢Top

9 楼boylynn()回复于 2006-11-04 18:52:59 得分 0

再顶顶啊   ,没人回答了么?Top

10 楼yan63(silence like a cancer grows)回复于 2006-11-05 00:13:31 得分 20

输入参数xmlquery例如:  
  <root>  
      <name>namexxx  
      </name>  
      <starttime>startxxx  
      </starttime>  
      <endtime>endxxx  
      </endtime>  
      <id>xxx  
      </id>  
  --------------------  
  只要是可序列化的,使用自定义类型也是可以的  
   
  public   DataSet   RetrievalData(XmlqueryEntity   xmlquery)  
  {}  
   
      <group>idxxx  
      </group>  
  </root>  
  Top

11 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-07 22:21:43 得分 0

输入一个idea,返回一个最优的解答,多么有些的“设计”。就是不知道怎么表达任意的idea以及计算机怎样计算出解答,大家继续讨论。。。。。Top

12 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-07 22:23:12 得分 0

多么有些的“设计”       -->         多么优秀的“设计”  
   
  我都激动得不会写字了,呵呵。  
   
  我觉得万能的永动机还是少研究的好。Top

13 楼boylynn()回复于 2006-11-08 09:56:47 得分 0

to   yan63   你说的有道理啊。  
  sp1234   这个基本上还不是怎么“永动”把,如果把这样的web服务发布了后,针对某个数据库的检索就很方便了,检索条件可以随便删减,只要改schema就可以了,当然客户端要读懂这个检索条件的xml文件的schema文件。Top

14 楼yan63(silence like a cancer grows)回复于 2006-11-08 11:44:30 得分 10

如果把这样的web服务发布了后,针对某个数据库的检索就很方便了,检索条件可以随便删减  
  ---------------------------------------------  
  楼主这样子作的好处是显而易见的,灵活,易扩展等,但是在非可信网络下,运行客户端提交的sql可能会有安全问题,至少暴露了db的结构,作为服务来讲,封装不足是个问题,而若以其灵活性作为数据访问层,soap本身的低效率和频繁的网络交互可能成为性能的瓶颈  
  Top

15 楼boylynn()回复于 2006-11-08 21:06:36 得分 0

你说的问题我想到过。库里的数据可以存为sql2005的新类型xml。最要命的是soap的效率,这个就不好说了。anyway   我觉得这样还是有市场的。  
  现在   正在尝试    
  btw:用web服务做数据库是不是很不明智?Top

16 楼mmens(快乐中前行!)回复于 2006-11-09 09:33:22 得分 20

可以!  
   
  自己在后台写一个XML解析类,来解析查询字符串。  
   
  以前做过项目就这样用,不过考虑更多一些。从需求到编码,XML一直贯穿于其中。  
   
  不过这样的坏处是,需要定义合理的架构,否则反复迭代就受不了了。Top

17 楼boylynn()回复于 2006-11-11 16:40:14 得分 0

对用户来讲,他始终输入的不过是字符,我在想,在客户端是接收一个xml的txt文件做为条件好呢,还是一些输入文本框然后在组合成xml好呢Top

相关问题

关键词

得分解答快速导航

  • 帖主:boylynn
  • ckpbed
  • fq_ln
  • marising
  • yan63
  • yan63
  • mmens

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo