在Asp.Net中實現類似DWR的功能
熟悉Ajax的人應該都知道DWR這個開源框架,它讓Ajax程式開發變得簡單,但是目前好像只能支援Java,今天就來說一下我在Asp.Net專案中怎樣模擬實現DWR的功能:
建立一個介面(姑且叫做IWAjaxEngine),其作用定義對Ajax暴露的方法,我設計的是一個返回string型別的方法,還有一個是沒有返回值的方法,兩個方法的引數都是Dictionary
在App_Data目錄下新建一個XML文件作為配置檔案,放在這個目錄下的原因,大家應該都知道吧,是可以起到保護作用。這個配置檔案中就是專門配置實現IWAjaxEngine介面的業務邏輯類的資訊(類名、引數列表、引數型別等等),然後建立一個封裝這個配置檔案的類(WAjaxConfig),可以把這個類的例項設為static,這樣就不用每次都讀配置檔案了。
接下來就說到重點部分了,也就是Ajax怎麼直接呼叫後臺業務邏輯類。我的想法是建立一個Web窗體,也就是.aspx和.aspx.cs檔案,在page_load事件中根據Ajax傳遞過來的引數(包含能夠找到配置檔案中類資訊的ID標識)在WAjaxConfig中找到要呼叫的類名(找不到的話就丟擲異常),然後通過類名反射建立一個該類的例項(當然是以IWAjaxEngine介面作為該例項的型別),有了例項,我們就可以呼叫介面定義的兩個方法,要麼返回字串要麼什麼都不返回。
整個實現的思路就是這樣,說起來與DWR還是有所不同的,不過已經滿足了我的需求。當然這裡說的有些簡單,真正做起來並不是很容易,有很多需要細化的地方。另外,我還做了一些輔助的工具類,可以生成XML或JSON字串;前臺也實現了類似於DWR引擎指令碼的engine.js和工具集指令碼util.js(其實是把DWR的util.js搬過來了,誰讓人家做的功能強大呢,不過也添改了一些程式碼,因為發現有些js程式碼不符合標準DOM操作,FireFox就不支援了,還有些方法不支援XML DOM 的NodeList。在此謝謝那位DWR的作者-_-),這樣,我們就可以在前臺像使用DWR一樣進行程式設計了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617320/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLite中中實現 if not exist 類似功能SQLite
- PostgreSQL類似OracleMERGE功能的實現SQLOracle
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- 實現類似IE的列印網頁功能 (轉)網頁
- 深度解析:在 React 中實現類似 Vue 的 KeepAlive 元件ReactVue元件
- 教你如何用SQLite 實現if not exist 類似功能的操作SQLite
- 實現類似Pinterest 的圖片預載入功能REST
- Python在類中實現swith case功能Python
- 用CSS實現類似導航翻轉功能例子CSS
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- 在 asp.net core 中使用類似 Application 的服務ASP.NETAPP
- VB6初步實現在WINXP下類似WIN7顯示桌面的功能Win7
- Android中實現類似iOS的SwitchButton控制元件AndroidiOS控制元件
- 在dotnet core實現類似crontab的定時任務
- .Net中用js實現無重新整理類似ajax功能(例)JS
- lakeFS:實現類似於Git或事件溯源ES的物件儲存功能Git事件物件
- comet在asp.net中的實現ASP.NET
- 類似 MSDN 導航樹效果 ASP.Net(C#) + JavaScript 實現! (轉)ASP.NETC#JavaScript
- 簡單實現類似Spring的Aop原理實現Spring
- 在DWR中呼叫Http Servlet 物件HTTPServlet物件
- MySQL的字首索引及Oracle的類似實現MySql索引Oracle
- 完美實現類似QQ的自拍頭像、上傳頭像功能!(Demo 原始碼)原始碼
- 實現ABP中Person類的許可權功能
- VM中實現手機震動功能的類
- Excel有類似“分列”的“分行”功能嗎?Excel
- 在Swift中實現撤銷功能Swift
- 類似咻一咻,水波紋實現
- go如何實現類似java的動態代理GoJava
- mysql中substring_index類似split分組功能MySqlIndex
- 在 Asp.NET MVC 中使用 SignalR 實現推送功能ASP.NETMVCSignalR
- javascript如何實現類的功能JavaScript
- 在java中實現對FORM的列印功能 (轉)JavaORM
- 在asp.net中ListView的交替背景顏色實現ASP.NETView
- 用 golang 去實現類似 swoole 的 websocket 服務 ?GolangWeb
- Blazor如何實現類似於微信的Tab切換?Blazor
- JS實現類似於微博秀的GitHub掛件JSGithub
- 實現類似QQ的即時通訊程式(十一)
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle