Silverligh訪問(wèn)數(shù)據(jù)庫(kù)方法技巧指導(dǎo)
Silverligh的應(yīng)用范圍比較廣泛。在開發(fā)人員實(shí)際使用中,可以輕松的實(shí)現(xiàn)各種基于多媒體方面功能?;诎踩虻目紤],Silverlight是不允許直接訪問(wèn)數(shù)據(jù)庫(kù)的。但還是有很多方法來(lái)間接實(shí)現(xiàn)Silverlight對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。#t#
比如以下的三種方式:1 RESTful API;2 在Silverlight下借助JavaScript來(lái)實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù);3 利用.NET Web服務(wù)模板——Silverlight-enabled。本文將主要介紹一下后倆種方法。
利用JavaScript實(shí)現(xiàn)Silverlight與數(shù)據(jù)庫(kù)的交互
只要在Silverlight事件處理的后面添加調(diào)用以下簡(jiǎn)單的JavaScript代碼即可。其中”callWebService”是JavaScript的函數(shù)。
- protected void btnSubmit
(object sender,EventArgs e) - {
- System.Windows.Browser.HtmlPage.
Window.Invoke("callWebService", null); - }
關(guān)于JavaScript的調(diào)用可以參照一下內(nèi)容:
通過(guò)ScriptServiceAttribute添加
- [ScriptService]
- public class UserValidationService:
System.Web.Services.WebService- {
- [WebMethod]
- public bool ValidateUserName
(string strInput)- {
- return !GetUserByUserName(strInput);
//If user exists return false
indicates the name is no longer availabe.- }
- private bool GetUserByUserName
(string strUserName)- {
- bool blnIsUserExists = false;
- //Call database API to see if the
username is availabe, set blnIsUser
Exists to true if exists.- return blnIsUserExists;
- }
- }
通過(guò)頁(yè)面添加ScriptMananger控件
- < asp:ScriptManager runat="server"
ID="scriptManagerId">- < Services>
- < asp:ServiceReference Path=
"UserValidationService.asmx" />- < /Services>
- < /asp:ScriptManager>
像調(diào)用JavaScript局部函數(shù)一樣調(diào)用Webservice
- < script type="text/javascript">
- function validateUserName()
- {
- var userName = document.getElementById
("txtUserName").value;- UserValidationService.ValidateUserName
(userName,showValidateResult,validate
UserNameError);- }
- function validateUserNameError(result)
- {
- //Do nothing if any error, ideally,
we should log this error to database.- }
- function showValidateResult(result)
- {
- //Since it is only a boolean value,
no need to get result.d, if result
contains .net object,- // use result.length and result.d
to retrieve the object.- if(!result)
- {
- //Not available
- }else
- {
- //Username is still available
- }
- }
- < /script>
利用Silverlight-enabled Webservice實(shí)現(xiàn)Silverlight與數(shù)據(jù)庫(kù)的交互
首先通過(guò)模板創(chuàng)建一個(gè)Silverlight-enabled Webservice,然后將數(shù)據(jù)庫(kù)和其他Server-related添加到服務(wù)里。接下來(lái),將此服務(wù)添加引用到Silverlight 應(yīng)用中。***利用如下代碼從Silverlight 應(yīng)用中調(diào)用webservice。
- using MySilver.MyService;
- ......
- .....
- private void btnSend_Click
(object sender, RoutedEventArgs e)- {
- if (!String.IsNullOrEmpty
(txtMessage.Text.Trim()))- {
- lstHisotryMessage.Items.Add("Gene: "
+ txtMessage.Text.Trim());- GeneMessage message = new GeneMessage();
- message.Body = txtMessage.Text.Trim();
- MyServiceclient = new MyService();
- client.SendMessageCompleted +=
new EventHandler< SendMessageCompleted
EventArgs>(client_SendMessageCompleted);- client.SendMessageAsync(message);
- }
- else
- {
- MessageBox.Show("You cannot send empty message!");
- }
- }
- protected void client_SendMessage
Completed(object sender, SendMessage
CompletedEventArgs e)- {
- txtMessage.Text = e.Result.MessageID.ToString();