将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes ) [1]

原创 2002年07月24日 08:58:00

SQLXML 3.0用起来( Web Services, XML Views, Managed Classes )

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

小气的神

2002-5-25

 

Article Type: Overview 

难度等级:5/9       

版本:4.16

 

       Web Services不仅作为一种新技术,而且也作为一种对现有技术的整合时;它开始影响一些领域的发展,特别是IBMMicrosoft这样的公司都认为:企业建立Web Services应用时,应当先从企业内部应用开始的,然后扩展到公用的Web Services上。所以两家公司的产品线都毫不迟疑的向改造和支持Web Services方向上迈进,象WebShpereTivoliLotusCommerce ServerBiztalk Server这样的产品都不断地改进和提供对Web Services的支持。

       Web Services的核心是XML技术,目前在数据库方面,IBMOracleMicrosoft都增强了各自基于XML的数据库产品;并且都采用类似的XML Extender的方式来处理XML和关系数据库之间的交换,这使得纯XML数据库支持者几乎绝望。相比起来OracleXDB是给人印象是最深刻的。Microsoft在发布SQL Server 2000时就已经开始支持XML了。之后发布的SQLXML 3.0更是对其的一个增强。不过当发现一个存储过程可以轻易转换成一个Web Services的方法时,我都不知该怎么评价SQLXML本身了。

       由于发布SQL Server 2000时还没有Web Services,另外SQL Server 2000中内建的对XML的支持并非都遵循最新的W3C标准,所以SQLXML更象是一个补丁,不过有些特性是非常突出的:

1.      Web Services SOAP)的支持。

2.      使用HTTP访问SQL Server的多种方式。

3.      定义映射文件同时支持W3C标准的 annotated XSD Schemas和原来的annotated XDR Schemas

4.      SQLXML dotNET支持,允许使用SQLXML Managed ClassesSQL Server 2000上存取XML数据

让我们逐一看看这些特性吧:

 

Web Services 的支持

       简单的说这个功能允许客户发出一个SOAP/HTTP请求给SQL Server 2000,请求执行SQL 2000上的某个存储过程、自定义函数和模板,而SQL Server能够给客户相应的结果(Response)。步骤上也很简单,基本是两步:

1.      首先定义一个存储过程、自定义函数

存储过程: sp_getEmployees

CREATE PROCEDURE sp_getEmployees

@EmployeeID int

 AS

select * from Employees where EmployeeID = @EmployeeID

GO

自定义函数:Add getemployeesByID

CREATE FUNCTION [Add]  ( @a int , @b int )

RETURNS int AS 

BEGIN

 return ( @a + @b  )

END

CREATE FUNCTION [getEmployeesByID] ( @EmployeeID int )

RETURNS  table 

AS 

       RETURN (  Select * from Employees Where EmployeeID = @EmployeeID )

 

保险一点,我们将在Query analyzer中测试一下我们的存储过程和自定义函数。

exec sp_getEmployees 1

SELECT * FROM [Northwind].[dbo].[getEmployeesByID](1)

SELECT [Northwind].[dbo].[Add](1,3)

 

2.      使用IIS Virtual Directory Management 建立Virtual Directory Virtual Name 并且进行配置。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

( 建立一个Norchwind 虚拟目录)

 

(设置该目录的虚拟名属性,新建一个名称(Name):WebGet ,类型(Type): soap )

 

(点击Configure键,出现配置页,输入方法名(method name),然后点击 … )

 

(出现存储过程和自定义函数的列表,选择后确定。sp表示存储过程,udf就是自定义函数了)

 

当我们选择SOAP的功能时,可以有另外的一个设置窗口出现,这个Configuration允许我们进行一些更详细的设置,主要是Row formattingOutput as选项,这些设置将有什么产生怎样不同的影响呢?从下面我们产生的Web ServicesProxy的代码可以看得清楚一些:

 

XML Objects方式可能是这样的:

        public object[] sp_getEmployees(int EmployeeID) {

            object[] results = this.Invoke("sp_getEmployees", new object[] {

                        EmployeeID});

            return ((object[])(results[0]));

        }  

 

Dataset Objects是这样的代码:

        public System.Data.DataSet getEmployeesByID(int EmployeeID) {

            object[] results = this.Invoke("getEmployeesByID", new object[] {

                        EmployeeID});

            return ((System.Data.DataSet)(results[0]));

        } 

 

然后我们在VS.NET环境下,输入Http://localhost/Northmind/WebGet?wsdl (有些奇怪的URL,不过它的确能工作),我们可以象其它Web Services一样使用了。这里省去具体的测试例子代码。

 

 

我们可以看到从一个存储过程甚至是自定义函数,都可以直接变成一个WebServices中的接口或方法,我想对于这个功能仍无法肯定的加以评论,不过它提供了一种方式,使得你可以使用XML的方式组织和访问你的数据,最重要的是这种方式支持SOAP/HTTP协议了。从而Database Server不再单纯的是一个数据层,所以应用构架上可能可以更加松散耦合,当然,单纯的使用SQLXML的这种技术将过于直接了,也许它目前更多的用在企业内部,无法相信你或我会把它直接放到Internet上。不过这是一个好的起点,这些功能可以和其他的技术或功能进行组合从而得到更高的应用,所以我认为数据库对SOAP/HTTP的支持是必要的,未来它可能成为评判一个Database的某种指标。

好吧,让我们看看下一个功能,这里我们会再看一些有关SQLXML的更多一些的内容,可是其中的许多是来源于SQL 2000 发布时就有的HTTP访问和XML支持功能。

 

特别说明:

本文原创,CSDN署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议,请发电子邮件给new2001@msn.com

 

将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹

如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。Hibernate和Spring有时会将配置文件放置在src目录下,编译后...
  • z69183787
  • z69183787
  • 2015年10月06日 19:16
  • 2097

sevlet 3.0 web项目搭建及web.xml讲解

Servlet3.0是Java EE6规范的一部分,Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程。 二、开...
  • tantexian
  • tantexian
  • 2015年12月27日 22:06
  • 22049

将 src中的资源文件自动生成到/web-inf/classes/目录下

http://www.cnblogs.com/xfiver/archive/2010/07/07/1772764.html Eclipse下无法自动编译,或者WEB-INF/classes目录下没文...
  • snioper007
  • snioper007
  • 2013年07月29日 09:52
  • 4655

【错误解决】 java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.classes.views.index_jsp

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 今天建立Spring MVC骨架的时候,突然遇到这么一个问题~~HTTP Statu...
  • qq_26525215
  • qq_26525215
  • 2017年02月26日 20:48
  • 13262

apress.iterating infusion clearer views of objects,classes and systems

  • 2007年10月08日 14:08
  • 1.46MB
  • 下载

让Visual Studio 2008 和 2010支持Web Services Enhancements (WSE) 3.0

/* from:http://digantakumar.com/2010/06/04/wse-3-in-visual-studio-2008-and-2010/ */   不翻居然图都看不到,真是...
  • kofkyo
  • kofkyo
  • 2012年07月17日 09:10
  • 3541

web.xml classes:配置 /url-pattern 配置

解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl...
  • qing_mei_xiu
  • qing_mei_xiu
  • 2017年01月18日 17:41
  • 182

file:/D:/Tomcat%206.0/webapps/Struts2UserLogin/WEB-INF/classes/struts.xml:3:8

file:/D:/Tomcat%206.0/webapps/Struts2UserLogin/WEB-INF/classes/struts.xml:3:8
  • xiaoshunzi111
  • xiaoshunzi111
  • 2016年05月27日 11:53
  • 1636

Unable to load configuration. - action - file:.../webapps/logonProject/WEB-INF/classes/struts.xml

今天学习struts2时碰到一个蛋疼的错误,提示无法加载struts.xml, 但是我的struts.xml只有很简单的一部分 /ListToXml.jsp ...
  • iailp47
  • iailp47
  • 2015年07月08日 11:03
  • 408

各种数据库连接工具Database4,用起来很方便

  • 2015年12月21日 16:44
  • 9.4MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes ) [1]
举报原因:
原因补充:

(最多只允许输入30个字)