• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于.NET的LINQ to SQL 三層架構(gòu)的研究與實(shí)現(xiàn)

      2014-07-03 18:56:46方生
      電腦知識(shí)與技術(shù) 2014年12期
      關(guān)鍵詞:三層架構(gòu)數(shù)據(jù)模型

      摘要:LINQ作為一種數(shù)據(jù)操作技術(shù),它能夠?qū)?fù)雜的查詢應(yīng)用簡(jiǎn)化成一個(gè)簡(jiǎn)單的查詢語句,在傳統(tǒng)的軟件開發(fā)中,那些復(fù)雜、冗余、難以實(shí)現(xiàn)的方法使用LINQ技術(shù)都能很好的解決,極大的方便了開發(fā)人員對(duì)于業(yè)務(wù)邏輯的處理代碼的編寫。LINQ作為編程語言的一部分,它還彌補(bǔ)了SQL語句中的一些不足,在一定的程度上達(dá)到防止SQL注入式攻擊的目的。文中針對(duì)LINQ技術(shù)進(jìn)行研究,結(jié)合傳統(tǒng)的基于.NET三層架構(gòu)模型,給出一種基于.NET 的LINQ的三層架構(gòu)方式。并采用基于LINQ三層架構(gòu)對(duì)學(xué)生信息管理系統(tǒng)加以實(shí)現(xiàn),提高了應(yīng)用程序的安全性和可移植性。

      關(guān)鍵詞:LINQ; LINQ to SQL;數(shù)據(jù)模型 ;三層架構(gòu)

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)12-2743-04

      .NET LINQ based on to Research and Realization of Three Layer Architecture of SQL

      FANG Sheng

      (Anhui Business College of Vocational Technology,Wuhu 241002,China)

      Abstract: LINQ is a data operation technique, and it can be used to simplify the query into a simple query. In the traditional software development, the redundant, complex, difficult to achieve using LINQ technology can solve good, great convenience to the developers for handling code business logic programming. LINQ as part of a programming language, it also makes up some deficiencies in the SQL statement, to prevent SQL injection attacks to some extent. In this paper, LINQ technology is researched, combined with the.NET three layer architecture model based on the traditional, an algorithm based on three layer.NET architecture of LINQ is presented. And based on LINQ three layer architecture, the student information management system is realized, and improves the application security and portability.

      Key words: LINQ; LINQ to SQL; data model; the three layer architecture

      隨著軟件應(yīng)用領(lǐng)域的日益擴(kuò)大,軟件需要處理的數(shù)據(jù)類型和數(shù)據(jù)量也隨之不斷增加。對(duì)于數(shù)據(jù)訪問的安全性、方便性以及通用性引起軟件開發(fā)人員的普遍關(guān)注。因此,微軟公司在.net3.5中增加了LINQ(Language Integrated Query,語言集成查詢)數(shù)據(jù)操作技術(shù),它為軟件開發(fā)人員提供了一種統(tǒng)一的數(shù)據(jù)查詢模式,可以有效的提高數(shù)據(jù)訪問的安全性和高效性。

      1 LINQ體系結(jié)構(gòu)

      LINQ是.Net Framework中一項(xiàng)突破性的創(chuàng)新,它在對(duì)象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁。LINQ可以操作任何存儲(chǔ)形式的數(shù)據(jù)源,如對(duì)象(集合、數(shù)組、字符串等)、關(guān)系(關(guān)系數(shù)據(jù)庫、ADO.NET數(shù)據(jù)集等)以及XML。LINQ的架構(gòu)如圖1所示。[[1]]

      其中,LINQ to Objects是對(duì)內(nèi)存進(jìn)行操作,LINQ to SQL是對(duì)數(shù)據(jù)庫進(jìn)行操作,LINQ to XML是對(duì)XML文件進(jìn)行的操作,

      2 基于LINQ的三層架構(gòu)

      2.1 傳統(tǒng)的三層架構(gòu)

      通常意義上的三層架構(gòu)是將整個(gè)業(yè)務(wù)應(yīng)用劃分為表示層(UI)、業(yè)務(wù)邏輯層(BLL)和數(shù)據(jù)訪問層(DAL)。為了便于數(shù)據(jù)的傳遞,更好的體現(xiàn)面向?qū)ο笏枷耄ǔ?huì)在傳統(tǒng)三層的基礎(chǔ)上增加一個(gè)業(yè)務(wù)實(shí)體 Model項(xiàng),稱為模型層。它包含與數(shù)據(jù)庫表對(duì)應(yīng)的實(shí)體類。傳統(tǒng)的三層架構(gòu)如圖2所示。[[2]]

      2.2 基于LINQ to SQL的三層架構(gòu)

      LINQ to SQL是操縱數(shù)據(jù)庫重要的技術(shù),在LINQ to SQL中,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型映射到開發(fā)人員所使用的編程語言表示的對(duì)象模型,對(duì)對(duì)象模型的操作就是對(duì)關(guān)系數(shù)據(jù)庫的操作。

      要實(shí)現(xiàn)LINQ to SQL,首先必須根據(jù)現(xiàn)有關(guān)系數(shù)據(jù)庫的元數(shù)據(jù)創(chuàng)建對(duì)象模型。而利用對(duì)象關(guān)系設(shè)計(jì)器(O/R設(shè)計(jì)器)創(chuàng)建的對(duì)象模型包含了傳統(tǒng)的三層架構(gòu)中的實(shí)體類。因此,可以根據(jù)傳統(tǒng)的三層架構(gòu)建立基于LINQ to SQL 三層體系結(jié)構(gòu)如圖3所示。

      其中,DataLinq層主要包括實(shí)體類和DataContext類。通常情況下,一個(gè)實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫中的一張表,利用實(shí)體類的實(shí)例在不同的層之間作為數(shù)據(jù)對(duì)象進(jìn)行數(shù)據(jù)傳輸。而O/R設(shè)計(jì)器生成的強(qiáng)類型DataContext,它表示LINQ to SQL框架的主入口點(diǎn),用于在實(shí)體類與數(shù)據(jù)庫之間傳送和接收數(shù)據(jù)。[[3]]

      3 基于LINQ的三層架構(gòu)的實(shí)現(xiàn)endprint

      本文以學(xué)生信息管理系統(tǒng)“登錄”模塊為例來說明基于LINQ 的 WINFORM系統(tǒng)三層架構(gòu)的具體實(shí)現(xiàn)。

      3.1 數(shù)據(jù)庫

      利用Sql Server2005創(chuàng)建名為mySchool的數(shù)據(jù)庫,該數(shù)據(jù)庫包含六張表,分別為管理員表(Admin)、學(xué)生表(Student)、教師表(Teacher)、年級(jí)表(Grade)、成績表(Result)和課程表(Subject)。在此僅以管理員表為例。管理員表結(jié)構(gòu)如表1所示:

      3.2 基于LINQ的三層架構(gòu)的搭建

      利用Visual Studio 2008創(chuàng)建一個(gè)WinForm項(xiàng)目,其步驟如下:

      1)新建表示層項(xiàng)目,選擇WinForm窗體,將其命名為mySchool。

      2)創(chuàng)建業(yè)務(wù)邏輯層項(xiàng)目,選擇類庫,將其命名為mySchool.BLL。

      3)創(chuàng)建數(shù)據(jù)訪問層項(xiàng)目,選擇類庫,將其命名為mySchool.DAL。

      4)創(chuàng)建對(duì)象模型項(xiàng)目,選擇類庫,將其命名為mySchool.DataLinq。

      5)添加層之間的依賴關(guān)系。表示層添加對(duì)邏輯處理層、 DataLinq的項(xiàng)目引用。邏輯處理層添加對(duì)數(shù)據(jù)訪問層和 DataLinq的項(xiàng)目引用。數(shù)據(jù)訪問層添加對(duì)System.Data.Linq和DataLinq的項(xiàng)目引用;基于Linq的三層架構(gòu)如圖4所示。

      3.3 基于LINQ的三層架構(gòu)功能的實(shí)現(xiàn)

      1) 創(chuàng)建對(duì)象模型

      在DataLinq層添加LINQ to SQL類,并命名為mySchool.dbml。然后利用對(duì)象關(guān)系設(shè)計(jì)器,從數(shù)據(jù)庫中,把表拖動(dòng)到對(duì)象關(guān)系設(shè)計(jì)器的界面上,這時(shí)就會(huì)生成一個(gè)實(shí)體類,該類包含了與表的字段對(duì)應(yīng)的屬性。對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型如圖5所示。

      圖5 對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型

      2) 數(shù)據(jù)訪問層實(shí)現(xiàn)

      創(chuàng)建了對(duì)象模型后,就可以操作數(shù)據(jù)庫了。針對(duì)模型層中的類,數(shù)據(jù)訪問層有一個(gè)對(duì)應(yīng)的數(shù)據(jù)訪問類。例如,針對(duì)Admin實(shí)體類,有一個(gè)對(duì)應(yīng)的adminServices類,用以處理有關(guān)Admin表的數(shù)據(jù)。創(chuàng)建的類結(jié)構(gòu)和Linq to SQL中的查詢?nèi)缦拢?/p>

      public class adminServices

      {private static mySchoolDataContext da=new mySchoolDataContext();

      public static Admin getAdmin(Admin admin)

      {try

      {var result = from newAdmin in da.Admin

      where newAdmin.LoginId == admin.LoginId

      select newAdmin;

      return result.Single();

      }

      catch (Exception ex)

      {throw ex;

      }}}

      3) 業(yè)務(wù)邏輯層實(shí)現(xiàn)

      業(yè)務(wù)邏輯層提供對(duì)各個(gè)業(yè)務(wù)的處理,接收表示層的數(shù)據(jù),通過個(gè)性化需求的處理,傳遞給數(shù)據(jù)層處理相應(yīng)事務(wù),針對(duì)項(xiàng)目應(yīng)用的業(yè)務(wù)規(guī)則、合法性校驗(yàn)等進(jìn)行處理。對(duì)于Admin類的業(yè)務(wù)處理,創(chuàng)建的adminManager類結(jié)構(gòu)如下:

      public class adminManager

      {public static bool getAdmin(Admin admin)

      {Admin newAdmin = adminServices.getAdmin(admin);

      if (newAdmin == null)

      {return false;

      }

      else if (newAdmin.LoginPwd == admin.LoginPwd)

      {return true;

      }

      else

      {return false;

      }}}

      4) 表示層實(shí)現(xiàn)

      表示層提供與用戶交互的界面,將數(shù)據(jù)依據(jù)不同的功能,傳遞給業(yè)務(wù)邏輯層中不同的對(duì)象。根據(jù)登錄功能操作的流程,在“登錄”按鈕的Click事件中,編寫如下的驗(yàn)證方法:

      private void btLogin_Click(object sender, EventArgs e)

      {

      Admin admin = new Admin();

      admin.LoginId = this.txtLoginId.Text.Trim();

      admin.LoginPwd = this.txtLoginPwd.Text.Trim();

      if (adminManager.getAdmin(admin))

      {

      frmMainWindows fMM = new frmMainWindows();

      fMM.Show();

      }

      else

      {

      MessageBox.Show("賬號(hào)或者密碼錯(cuò)誤,請(qǐng)重新輸入!");

      return;

      }}

      從上面的代碼中可以看到,并沒有出現(xiàn)具體的用戶驗(yàn)證,而是通過調(diào)用業(yè)務(wù)邏輯層中的adminManager.getAdmin方法來實(shí)現(xiàn)的??傊诒硎緦又刑幚淼闹饕桥c用戶交互相關(guān)的界面操作,而相應(yīng)的功能實(shí)現(xiàn)則需要通過調(diào)用業(yè)務(wù)邏輯層中的內(nèi)容來實(shí)現(xiàn)。

      4 結(jié)束語

      本文通過一個(gè)簡(jiǎn)單實(shí)例, 描述了 LINQ 在三層架構(gòu)軟件開發(fā)模型下的應(yīng)用。在以往三層架構(gòu)系統(tǒng)開發(fā)過程中,軟件開發(fā)人員必須自己建立相應(yīng)的實(shí)體類并直接對(duì)數(shù)據(jù)庫操作,而基于LINQ的分層架構(gòu)直接與對(duì)象模型交互而無需直接與數(shù)據(jù)庫交互。對(duì)于不同的數(shù)據(jù)源,它都采用同樣的訪問方式。通過簡(jiǎn)單易用的接口,它不僅大大提高了軟件開發(fā)的效率,而且可以安全地消除來自數(shù)據(jù)庫應(yīng)用程序的SQL注入攻擊,增強(qiáng)了應(yīng)用程序的安全性。

      參考文獻(xiàn):

      [1] 劉乃琦,郭小芳 ASP.NET應(yīng)用開發(fā)與實(shí)踐[M].北京:人民郵電出版社,2013.

      [2] 程光華.Web應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2011.

      [3] 張聯(lián)鋒.陳文臣 ASP.NET3.5程序設(shè)計(jì)與項(xiàng)目實(shí)踐[M].北京:電子工業(yè)出版社,2011.

      本文以學(xué)生信息管理系統(tǒng)“登錄”模塊為例來說明基于LINQ 的 WINFORM系統(tǒng)三層架構(gòu)的具體實(shí)現(xiàn)。

      3.1 數(shù)據(jù)庫

      利用Sql Server2005創(chuàng)建名為mySchool的數(shù)據(jù)庫,該數(shù)據(jù)庫包含六張表,分別為管理員表(Admin)、學(xué)生表(Student)、教師表(Teacher)、年級(jí)表(Grade)、成績表(Result)和課程表(Subject)。在此僅以管理員表為例。管理員表結(jié)構(gòu)如表1所示:

      3.2 基于LINQ的三層架構(gòu)的搭建

      利用Visual Studio 2008創(chuàng)建一個(gè)WinForm項(xiàng)目,其步驟如下:

      1)新建表示層項(xiàng)目,選擇WinForm窗體,將其命名為mySchool。

      2)創(chuàng)建業(yè)務(wù)邏輯層項(xiàng)目,選擇類庫,將其命名為mySchool.BLL。

      3)創(chuàng)建數(shù)據(jù)訪問層項(xiàng)目,選擇類庫,將其命名為mySchool.DAL。

      4)創(chuàng)建對(duì)象模型項(xiàng)目,選擇類庫,將其命名為mySchool.DataLinq。

      5)添加層之間的依賴關(guān)系。表示層添加對(duì)邏輯處理層、 DataLinq的項(xiàng)目引用。邏輯處理層添加對(duì)數(shù)據(jù)訪問層和 DataLinq的項(xiàng)目引用。數(shù)據(jù)訪問層添加對(duì)System.Data.Linq和DataLinq的項(xiàng)目引用;基于Linq的三層架構(gòu)如圖4所示。

      3.3 基于LINQ的三層架構(gòu)功能的實(shí)現(xiàn)

      1) 創(chuàng)建對(duì)象模型

      在DataLinq層添加LINQ to SQL類,并命名為mySchool.dbml。然后利用對(duì)象關(guān)系設(shè)計(jì)器,從數(shù)據(jù)庫中,把表拖動(dòng)到對(duì)象關(guān)系設(shè)計(jì)器的界面上,這時(shí)就會(huì)生成一個(gè)實(shí)體類,該類包含了與表的字段對(duì)應(yīng)的屬性。對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型如圖5所示。

      圖5 對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型

      2) 數(shù)據(jù)訪問層實(shí)現(xiàn)

      創(chuàng)建了對(duì)象模型后,就可以操作數(shù)據(jù)庫了。針對(duì)模型層中的類,數(shù)據(jù)訪問層有一個(gè)對(duì)應(yīng)的數(shù)據(jù)訪問類。例如,針對(duì)Admin實(shí)體類,有一個(gè)對(duì)應(yīng)的adminServices類,用以處理有關(guān)Admin表的數(shù)據(jù)。創(chuàng)建的類結(jié)構(gòu)和Linq to SQL中的查詢?nèi)缦拢?/p>

      public class adminServices

      {private static mySchoolDataContext da=new mySchoolDataContext();

      public static Admin getAdmin(Admin admin)

      {try

      {var result = from newAdmin in da.Admin

      where newAdmin.LoginId == admin.LoginId

      select newAdmin;

      return result.Single();

      }

      catch (Exception ex)

      {throw ex;

      }}}

      3) 業(yè)務(wù)邏輯層實(shí)現(xiàn)

      業(yè)務(wù)邏輯層提供對(duì)各個(gè)業(yè)務(wù)的處理,接收表示層的數(shù)據(jù),通過個(gè)性化需求的處理,傳遞給數(shù)據(jù)層處理相應(yīng)事務(wù),針對(duì)項(xiàng)目應(yīng)用的業(yè)務(wù)規(guī)則、合法性校驗(yàn)等進(jìn)行處理。對(duì)于Admin類的業(yè)務(wù)處理,創(chuàng)建的adminManager類結(jié)構(gòu)如下:

      public class adminManager

      {public static bool getAdmin(Admin admin)

      {Admin newAdmin = adminServices.getAdmin(admin);

      if (newAdmin == null)

      {return false;

      }

      else if (newAdmin.LoginPwd == admin.LoginPwd)

      {return true;

      }

      else

      {return false;

      }}}

      4) 表示層實(shí)現(xiàn)

      表示層提供與用戶交互的界面,將數(shù)據(jù)依據(jù)不同的功能,傳遞給業(yè)務(wù)邏輯層中不同的對(duì)象。根據(jù)登錄功能操作的流程,在“登錄”按鈕的Click事件中,編寫如下的驗(yàn)證方法:

      private void btLogin_Click(object sender, EventArgs e)

      {

      Admin admin = new Admin();

      admin.LoginId = this.txtLoginId.Text.Trim();

      admin.LoginPwd = this.txtLoginPwd.Text.Trim();

      if (adminManager.getAdmin(admin))

      {

      frmMainWindows fMM = new frmMainWindows();

      fMM.Show();

      }

      else

      {

      MessageBox.Show("賬號(hào)或者密碼錯(cuò)誤,請(qǐng)重新輸入!");

      return;

      }}

      從上面的代碼中可以看到,并沒有出現(xiàn)具體的用戶驗(yàn)證,而是通過調(diào)用業(yè)務(wù)邏輯層中的adminManager.getAdmin方法來實(shí)現(xiàn)的。總之,在表示層中處理的主要是與用戶交互相關(guān)的界面操作,而相應(yīng)的功能實(shí)現(xiàn)則需要通過調(diào)用業(yè)務(wù)邏輯層中的內(nèi)容來實(shí)現(xiàn)。

      4 結(jié)束語

      本文通過一個(gè)簡(jiǎn)單實(shí)例, 描述了 LINQ 在三層架構(gòu)軟件開發(fā)模型下的應(yīng)用。在以往三層架構(gòu)系統(tǒng)開發(fā)過程中,軟件開發(fā)人員必須自己建立相應(yīng)的實(shí)體類并直接對(duì)數(shù)據(jù)庫操作,而基于LINQ的分層架構(gòu)直接與對(duì)象模型交互而無需直接與數(shù)據(jù)庫交互。對(duì)于不同的數(shù)據(jù)源,它都采用同樣的訪問方式。通過簡(jiǎn)單易用的接口,它不僅大大提高了軟件開發(fā)的效率,而且可以安全地消除來自數(shù)據(jù)庫應(yīng)用程序的SQL注入攻擊,增強(qiáng)了應(yīng)用程序的安全性。

      參考文獻(xiàn):

      [1] 劉乃琦,郭小芳 ASP.NET應(yīng)用開發(fā)與實(shí)踐[M].北京:人民郵電出版社,2013.

      [2] 程光華.Web應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2011.

      [3] 張聯(lián)鋒.陳文臣 ASP.NET3.5程序設(shè)計(jì)與項(xiàng)目實(shí)踐[M].北京:電子工業(yè)出版社,2011.

      本文以學(xué)生信息管理系統(tǒng)“登錄”模塊為例來說明基于LINQ 的 WINFORM系統(tǒng)三層架構(gòu)的具體實(shí)現(xiàn)。

      3.1 數(shù)據(jù)庫

      利用Sql Server2005創(chuàng)建名為mySchool的數(shù)據(jù)庫,該數(shù)據(jù)庫包含六張表,分別為管理員表(Admin)、學(xué)生表(Student)、教師表(Teacher)、年級(jí)表(Grade)、成績表(Result)和課程表(Subject)。在此僅以管理員表為例。管理員表結(jié)構(gòu)如表1所示:

      3.2 基于LINQ的三層架構(gòu)的搭建

      利用Visual Studio 2008創(chuàng)建一個(gè)WinForm項(xiàng)目,其步驟如下:

      1)新建表示層項(xiàng)目,選擇WinForm窗體,將其命名為mySchool。

      2)創(chuàng)建業(yè)務(wù)邏輯層項(xiàng)目,選擇類庫,將其命名為mySchool.BLL。

      3)創(chuàng)建數(shù)據(jù)訪問層項(xiàng)目,選擇類庫,將其命名為mySchool.DAL。

      4)創(chuàng)建對(duì)象模型項(xiàng)目,選擇類庫,將其命名為mySchool.DataLinq。

      5)添加層之間的依賴關(guān)系。表示層添加對(duì)邏輯處理層、 DataLinq的項(xiàng)目引用。邏輯處理層添加對(duì)數(shù)據(jù)訪問層和 DataLinq的項(xiàng)目引用。數(shù)據(jù)訪問層添加對(duì)System.Data.Linq和DataLinq的項(xiàng)目引用;基于Linq的三層架構(gòu)如圖4所示。

      3.3 基于LINQ的三層架構(gòu)功能的實(shí)現(xiàn)

      1) 創(chuàng)建對(duì)象模型

      在DataLinq層添加LINQ to SQL類,并命名為mySchool.dbml。然后利用對(duì)象關(guān)系設(shè)計(jì)器,從數(shù)據(jù)庫中,把表拖動(dòng)到對(duì)象關(guān)系設(shè)計(jì)器的界面上,這時(shí)就會(huì)生成一個(gè)實(shí)體類,該類包含了與表的字段對(duì)應(yīng)的屬性。對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型如圖5所示。

      圖5 對(duì)象關(guān)系設(shè)計(jì)器生成的對(duì)象模型

      2) 數(shù)據(jù)訪問層實(shí)現(xiàn)

      創(chuàng)建了對(duì)象模型后,就可以操作數(shù)據(jù)庫了。針對(duì)模型層中的類,數(shù)據(jù)訪問層有一個(gè)對(duì)應(yīng)的數(shù)據(jù)訪問類。例如,針對(duì)Admin實(shí)體類,有一個(gè)對(duì)應(yīng)的adminServices類,用以處理有關(guān)Admin表的數(shù)據(jù)。創(chuàng)建的類結(jié)構(gòu)和Linq to SQL中的查詢?nèi)缦拢?/p>

      public class adminServices

      {private static mySchoolDataContext da=new mySchoolDataContext();

      public static Admin getAdmin(Admin admin)

      {try

      {var result = from newAdmin in da.Admin

      where newAdmin.LoginId == admin.LoginId

      select newAdmin;

      return result.Single();

      }

      catch (Exception ex)

      {throw ex;

      }}}

      3) 業(yè)務(wù)邏輯層實(shí)現(xiàn)

      業(yè)務(wù)邏輯層提供對(duì)各個(gè)業(yè)務(wù)的處理,接收表示層的數(shù)據(jù),通過個(gè)性化需求的處理,傳遞給數(shù)據(jù)層處理相應(yīng)事務(wù),針對(duì)項(xiàng)目應(yīng)用的業(yè)務(wù)規(guī)則、合法性校驗(yàn)等進(jìn)行處理。對(duì)于Admin類的業(yè)務(wù)處理,創(chuàng)建的adminManager類結(jié)構(gòu)如下:

      public class adminManager

      {public static bool getAdmin(Admin admin)

      {Admin newAdmin = adminServices.getAdmin(admin);

      if (newAdmin == null)

      {return false;

      }

      else if (newAdmin.LoginPwd == admin.LoginPwd)

      {return true;

      }

      else

      {return false;

      }}}

      4) 表示層實(shí)現(xiàn)

      表示層提供與用戶交互的界面,將數(shù)據(jù)依據(jù)不同的功能,傳遞給業(yè)務(wù)邏輯層中不同的對(duì)象。根據(jù)登錄功能操作的流程,在“登錄”按鈕的Click事件中,編寫如下的驗(yàn)證方法:

      private void btLogin_Click(object sender, EventArgs e)

      {

      Admin admin = new Admin();

      admin.LoginId = this.txtLoginId.Text.Trim();

      admin.LoginPwd = this.txtLoginPwd.Text.Trim();

      if (adminManager.getAdmin(admin))

      {

      frmMainWindows fMM = new frmMainWindows();

      fMM.Show();

      }

      else

      {

      MessageBox.Show("賬號(hào)或者密碼錯(cuò)誤,請(qǐng)重新輸入!");

      return;

      }}

      從上面的代碼中可以看到,并沒有出現(xiàn)具體的用戶驗(yàn)證,而是通過調(diào)用業(yè)務(wù)邏輯層中的adminManager.getAdmin方法來實(shí)現(xiàn)的??傊?,在表示層中處理的主要是與用戶交互相關(guān)的界面操作,而相應(yīng)的功能實(shí)現(xiàn)則需要通過調(diào)用業(yè)務(wù)邏輯層中的內(nèi)容來實(shí)現(xiàn)。

      4 結(jié)束語

      本文通過一個(gè)簡(jiǎn)單實(shí)例, 描述了 LINQ 在三層架構(gòu)軟件開發(fā)模型下的應(yīng)用。在以往三層架構(gòu)系統(tǒng)開發(fā)過程中,軟件開發(fā)人員必須自己建立相應(yīng)的實(shí)體類并直接對(duì)數(shù)據(jù)庫操作,而基于LINQ的分層架構(gòu)直接與對(duì)象模型交互而無需直接與數(shù)據(jù)庫交互。對(duì)于不同的數(shù)據(jù)源,它都采用同樣的訪問方式。通過簡(jiǎn)單易用的接口,它不僅大大提高了軟件開發(fā)的效率,而且可以安全地消除來自數(shù)據(jù)庫應(yīng)用程序的SQL注入攻擊,增強(qiáng)了應(yīng)用程序的安全性。

      參考文獻(xiàn):

      [1] 劉乃琦,郭小芳 ASP.NET應(yīng)用開發(fā)與實(shí)踐[M].北京:人民郵電出版社,2013.

      [2] 程光華.Web應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2011.

      [3] 張聯(lián)鋒.陳文臣 ASP.NET3.5程序設(shè)計(jì)與項(xiàng)目實(shí)踐[M].北京:電子工業(yè)出版社,2011.

      猜你喜歡
      三層架構(gòu)數(shù)據(jù)模型
      面板數(shù)據(jù)模型截面相關(guān)檢驗(yàn)方法綜述
      加熱爐爐內(nèi)跟蹤數(shù)據(jù)模型優(yōu)化
      基于“三層架構(gòu)”理論的教學(xué)設(shè)計(jì)案例分析
      良好的信息系統(tǒng)體系結(jié)構(gòu)模式對(duì)網(wǎng)絡(luò)安全監(jiān)察與維護(hù)技術(shù)的方法的探討
      ASP.NET三層架構(gòu)體系分析與應(yīng)用
      基于SSH 的實(shí)驗(yàn)室管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      面向集成管理的出版原圖數(shù)據(jù)模型
      一種顧及級(jí)聯(lián)時(shí)空變化描述的土地利用變更數(shù)據(jù)模型
      句容市| 平湖市| 黄龙县| 资溪县| 方山县| 磐石市| 平远县| 米易县| 河南省| 城口县| 奉贤区| 黎平县| 阜新市| 菏泽市| 射阳县| 德阳市| 山东| 芷江| 辛集市| 海伦市| 禹州市| 梧州市| 宁乡县| 环江| 吴桥县| 和静县| 任丘市| 焉耆| 揭西县| 通山县| 延津县| 永吉县| 西充县| 雷波县| 安达市| 五峰| 泾源县| 留坝县| 鄂托克旗| 永仁县| 珲春市|