日期:2014-05-16  浏览次数:20416 次

[笔记]实战Silverlight+WebService+OleDB+Oracle

一、引言

??? Silverlight是Microsoft推出的RIA应用框架。近几年,Adobe的RIA产品Flex越来越流行,逐渐成为很多J2EE应用的前端界面技术框架。

??? Adobe的RIA,是指Rich Internet Application,即丰富互联网应用,她突破以往Web的应用都是基于页面而造成的界面单一、交互能力弱等限制,为客户提供一个图形化的、美观而交互能力丰富的应用,从而有效提高客户的体验。

??? 微软的RIA,是指Rich Interactive Application,即丰富交互应用。其实与Adobe的RIA是一个意思,而且产品定位也是相同,都是解决Web应用的界面、交互等的问题,但是 Silverlight依靠Microsoft的.Net框架,将会很快普及开来,所以有人称Silverlight是Flex的“杀手”。

??? 现在,Silverlight已经推出了第二版的Beta测试版,以及基于Visual Studio 2008 的开发工具。

??? 本文,将在Visual Studio 2008开发环境中,利用 VisualStudio Silverlight Tools Beta 1工具,开发基于Silverlight 2 Beta的一个应用。

??? 环境要求:Visual Studio 2008,安装好 Silverlight Runtime,安装好 VisualStudio Silverlight Tools Beta 1工具,当然,还需要有一个Oracle数据库(也可以采用其他数据库,但是下面的操作步骤中一些相关的内容需要适当修改)。

?

二、实战目标

??? 本次实战,主要通过创建前台基于Silverlight,通过调用中间层提供的 SOAP WebService访问、操作后台的数据库信息,实现简单的业务功能。在理解了本例子后,你可以进一步扩展,在此思路、实现方式的基础上进一步实现更加 复杂的基于Silverlight、SOAP WebService、OleDB和数据库的组合应用。

??? 本次实战目标是创建一个Web应用,可以往数据库中指定的数据实体添加新的记录。至于查询、删除数据记录,则留给读者自行扩展。

三、架构

??? 本文涉及的架构如下:

?


?

??? Silverlight与后台数据交互,可以有多种方式,例如可以利用.net 3.5新特性LinQ to SQL,也可以利用Web Service。本例则专门针对通过Web Service。关于LinQ to SQL 的例子,在以后的文章中再详述。

?

四、实战过程

?

(一)创建项目:

1、点击菜单“文件 ”--“新建项目 ”,在“新建项目”对话窗中,选择“Silverlight ”项目类型,选择“Silverlight Application ”项目模板,输入项目名称为“JobDemo ”,如下图:

?


?

??? 然后点击“确定 ”按钮。

??? 接着,在“Add Silverlight Application”对话窗中选择第一项选择项,然后点击“确定”,如下图:

?


?

??? 稍后,默认的Silverlight项目创建完毕。如图:

?


?

(二)、创建SOAP WebService:

1、在“解决方案资源管理器”视图中,鼠标右键点击“JobDEmo_Web”项目,选择弹出菜单中的“添加新项”,如下图:

?


?

?

2、在“添加新项”对话窗中,选择“WEB 服务”项目,在“名称”处输入:JobManageService.asmx,点击“添加”按钮。如下图:

?


?

点击“JobDemo_Web”项目后,在“属性窗口”修改Web服务的属性,其中“使用动态端口”改为False,“端口号”改为:65520.如下图:

?


?

?

3、编辑修改Web服务代码:在默认生成的HelloWorld()服务操作后面,增加一个新增Job记录的操作,代码如下:

<WebMethod()> _
Public Function AddJob(ByVal JobID As String, ByVal JobName As String) As Boolean
?? Try
???? Dim conn As New OleDbConnection()
???? conn.ConnectionString = "Provider=MSDAORA;Data Source=o9i;"+ _
???????????????????????????? "Persist Security Info=True;User ID=scott;Password=tiger"
???? conn.Open()

???? Dim command As OleDbCommand = New OleDbCommand()
???? command.Connection = conn
???? command.CommandType = Data.CommandType.Text
???? command.CommandText = "INSERT INTO JOB(JOB_ID,FUNCTION) VALUES ('" + JobID + "','" + JobName + "')"
???? command.ExecuteNonQuery()
???? conn.Close()
???? Return True
?? Catch ex As Exception
???? Return False
?? End Try
End Function

??? 代码中,定义了一个Web服务的操作(Operation),名叫AddJob,入口参数有两个,分别是JobID和JobName。操作中,通过 OleDB组件,访问Oralce数据库,将新的Job插入数据库JOB表中,因此,在你的Oracle数据库中必须已经有一个Table,至少含了两个 字段,分别是JOB_ID、FUNCTION,类型分别是整数和字符串。其中,连接数据库的连接串可以根据自己的Oracle数据库的位置进行修改,也可 以修改该连接串从而连接到其他的数据库而不一定是Oracle数据库。

??? 此外,你还可以参照AddJob操作,增加自己其他的操作,例如删除Job,修改Job等。

??? 以上代码编辑好后