高分讨论web服务的方案
只是突然想起来的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




