实现Silverlight 与数据库交互的途径

基于安全原因的考虑,Silverlight是不允许直接访问数据库的。但还是有很多方法来间接实现Silverlight对数据库的访问。比如以下的三种方式:1 RESTful API;2 在Silverlight下借助JavaScript来实现访问数据库;3 利用.NET Web服务模板——Silverlight-enabled。本文将主要介绍一下后俩种方法。

利用JavaScript实现Silverlight与数据库的交互

只要在Silverlight事件处理的后面添加调用以下简单的JavaScript代码即可。其中”callWebService”是JavaScript的函数。

 

1  protected   void  btnSubmit( object  sender,EventArgs e)
2  {
3  System.Windows.Browser.HtmlPage.Window.Invoke( " callWebService " null );
4  }

  关于JavaScript的调用可以参照一下内容:

  通过ScriptServiceAttribute添加

 1  [ScriptService]
 2  public   class  UserValidationService: System.Web.Services.WebService
 3  {
 4      [WebMethod]
 5       public   bool  ValidateUserName( string  strInput)
 6      {
 7           return   ! GetUserByUserName(strInput);  // If user exists return false indicates the name is no longer availabe.
 8      }
 9 
10       private   bool  GetUserByUserName( string  strUserName)
11      {
12            bool  blnIsUserExists  =   false ;         
13            // Call database API to see if the username is availabe, set blnIsUserExists to true if exists.
14            return  blnIsUserExists;
15      }
16  }

 

通过页面添加ScriptMananger控件

 

1  < asp:ScriptManager runat = " server "  ID = " scriptManagerId " >
2                   < Services >
3                       < asp:ServiceReference  Path = " UserValidationService.asmx "   />
4                   </ Services >
5  </ asp:ScriptManager >

 

 

像调用JavaScript局部函数一样调用Webservice

 

 1  < script type = " text/javascript " >
 2  function validateUserName()
 3  {
 4    var userName  =  document.getElementById( " txtUserName " ).value;
 5  UserValidationService.ValidateUserName(userName,showValidateResult,validateUserNameError);
 6 
 7 
 8  function validateUserNameError(result)
 9  {
10       // Do nothing if any error, ideally, we should log this error to database.
11  }
12 
13  function showValidateResult(result)
14  {
15  // Since it is only a boolean value, no need to get result.d, if result contains .net object,
16  //  use result.length and result.d to retrieve the object.
17       if ( ! result)
18      {    
19           // Not available
20      } else
21      {
22           // Username is still available
23      }
24  }
25  </ script >

 

 利用Silverlight-enabled Webservice实现Silverlight与数据库的交互

  首先通过模板创建一个Silverlight-enabled Webservice,然后将数据库和其他Server-related添加到服务里。接下来,将此服务添加引用到Silverlight 应用中。最后利用如下代码从Silverlight 应用中调用webservice。

 

 

 1  using  MySilver.MyService;
 2  ......
 3  .....
 4 
 5  private   void  btnSend_Click( object  sender, RoutedEventArgs e)
 6  {
 7            if  ( ! String.IsNullOrEmpty(txtMessage.Text.Trim())) 
 8           {
 9                 lstHisotryMessage.Items.Add( " Gene:  "   +  txtMessage.Text.Trim()); 
10                 GeneMessage message  =   new  GeneMessage(); 
11                 message.Body  =  txtMessage.Text.Trim();
12                 MyServiceclient  =   new  MyService(); 
13                 client.SendMessageCompleted  +=   new  EventHandler < SendMessageCompletedEventArgs > (client_SendMessageCompleted); 
14                 client.SendMessageAsync(message);
15           }
16            else
17           {
18                 MessageBox.Show( " You cannot send empty message! " ); 
19           }
20  }
21 
22  protected   void  client_SendMessageCompleted( object  sender, SendMessageCompletedEventArgs e)
23  {
24           txtMessage.Text  =  e.Result.MessageID.ToString();
25  }
CopyrightIT168 [ http://www.it168.com/ ]
本文链接: http://tech.it168.com/a2009/1105/804/000000804641.shtml

 

 

 

转载于:https://www.cnblogs.com/CuiQG/archive/2010/03/24/1694006.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值