在Silverlight 4之前要做到資料存取,必需在後端寫Web Services,讓Silverlight呼叫,Select、Update、Delete、Insert可能要寫4個Method,10個Table要存取最少就要寫40個Method,雖然Ajax也是這樣寫,不過還有一個jQuery可以用,但Silverlight卻沒有(雜七雜八的第三方有啦),寫起來有種被折磨的感覺。
Silverlight 4比較好就是新增Domain Service技術,可以自動產生WCF的Web Services存取用Linq或Entity Framework工具拉出來的Table或Entity,在Silverlight專案中也有自動產生Proxy,而且還是不用去管理的Proxy,不用像之前Web Services更新了,還要手動更新Web參考,省了不少功夫。
開發工具
Silverlight 4微軟沒有為Visual Studio 2008開發Silverlight的工具,只能用Visual Studio 2010與Blend 4開發,但VS2010上市(4月中)的時候,Silverlight 4 Tools還在Beta(6月初才發佈正試版),所以Silverlight 4沒有內建在VS2010中,必需安裝
Microsoft Silverlight 4 Tools for Visual Studio 2010
Silverlight 4 Tools中只有Entity Framework To Domain Service的工具,要Linq To Domain Service必需安裝
新增Silverlight專案
新增Silverlight Application時會跳出New Silverlight Applicaion視窗,Enable WCF RIA Services必需勾選,才會自動產生WCF的Proxy。
如果忘了勾,事後也可以在Silverlight專案的內容,選擇Web Application專案(只能選Web Application專案,因為需要Web Services)。
新增Linq To Sql Classes
隨便連一個資料庫,沒資料庫沒資料的,可以下載使用Microsoft SQL Server Community Projects & Samples中的AdventureWorks2008R2作為測試資料庫,隨便拉幾個Table。
很重要一定要Build,不然Domain Service的精靈一定找不到資料。
剛開始我不知道,是找了一二小時才發現這問題的,嘔死了。
新增Domain Service
Domain Service分類在Web下。
有一些設定如可否編輯,而MetaData是關係資料驗證與資料顯示如:DataGrid自己中文標題或驗證錯誤訊息等中繼資料,會額外在產生一個檔案以partial class方式增加。
事實上Domain Service Class只是精靈產生存取Linq的Code,如果事後Model有修改怎麼辦,目前只有砍檔案重新產生Domain Service Class,不過有看過一些文章說為用partial class方式分隔二個檔分別是自動產生與自己增加的,刪除時不會刪到人工增加的Code。
Silverlight存取Domain Service
這時Silverlight的專案可以看到自動產生的Code。
Code寫起來跟一般Linq的寫法很像,只是是非同步最後必需要用Load是取得資料。
比傳統WCF好的地方是,是送Query去取資料,彈性比較大。
Domain Service實作方式
它是WCF也是Web Service,只是自動產生的。
在Web.Config增加一個httpModules,當網址為Domain Service Class + .svc時處理。
如SilverlightRIA.Web.DomainService1會把 . 換成 - 加上.svc,如SilverlightRIA-Web-DomainService1.svc
而Silverlight專案會自動產生關連與Code。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述