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

日期: 2009-11-05 作者:it168 来源:TechTarget中国 英文

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

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

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

  protected void btnSubmit(object sender,EventArgs e)
  {
  System.Windows.Browser.HtmlPage.Window.Invoke(“callWebService”, null);
  }

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

  通过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 blnIsUserExists to true if exists.
  return blnIsUserExists;
  }
  }

  通过页面添加ScriptMananger控件

<asp:ScriptManager runat=”server” ID=”scriptManagerId”>
                <Services>
                    <asp:ServiceReference  Path=”UserValidationService.asmx” />
                </Services>
               </asp:ScriptManager>  

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

   <script type=”text/javascript”>
function validateUserName()
{
  var userName = document.getElementById(“txtUserName”).value;
UserValidationService.ValidateUserName(userName,showValidateResult,validateUserNameError);

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实现Silverlight与数据库的交互

  首先通过模板创建一个Silverlight-enabled Webservice,然后将数据库和其他Server-related添加到服务里。接下来,将此服务添加引用到Silverlight 应用中。最后利用如下代码从Silverlight 应用中调用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(client_SendMessageCompleted);
  client.SendMessageAsync(message);
  }
  else
  {
  MessageBox.Show(“You cannot send empty message!”);
  }
  }
  protected void client_SendMessageCompleted(object sender, SendMessageCompletedEventArgs e)
  {
  txtMessage.Text = e.Result.MessageID.ToString();
  }

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐