基於OSGi.NET開發ASP.NET MVC 3.0外掛程式化應用程式

來源:互聯網
上載者:User

OSGi.NET外掛程式架構能夠適用於任何.NET應用環境,提供統一的模組化、SOA、擴充的外掛程式開發模型,並能夠通過外掛程式倉庫來發布外掛程式更新,實現外掛程式的自動升級,統一應用的部署。現在我們來看一下,使用OSGi.NET開發ASP.NET MVC外掛程式化應用。

 

1 準備工作

進入iOpenWorks網站 http://www.iopenworks.com/ 下載OSGi.NET外掛程式架構,你可以從以下地址來下載外掛程式架構:http://www.iopenworks.com/Products/SDKDownload。下載完成後,安裝該SDK。SDK支援VS 2005/2008/2010,目前對VS2012的支援正在開發。

 

接著,您可以從以下地址下載空的ASP.NET MVC 3.0主程式:/Files/baihmpgy/1_MvcOSGi.zip。這是我們開發ASP.NET MVC外掛程式應用的Demo。

 

2 擷取一個主介面

安裝完OSGi.NET外掛程式SDK後,使用VS 2010開啟下載的ASP.NET MVC 3.0主程式,按F5運行該項目,進入外掛程式中心頁面。在這裡選擇“Win7 風格 Web 介面架構”。

接著,點擊“下載安裝應用“,以下是下載的進度和最終安裝介面完成的提示。

這時,你可以發現我們已經擁有一個仿Windows 7風格的Web介面了。

 

3 開發ASP.NET MVC外掛程式

下面,我們先建立一個ASP.NET MVC外掛程式項目,後面選擇的是Empty MVC項目。

接著,我們需要為該外掛程式項目添加一個外掛程式描述資訊清單檔Manifest.xml檔案,該檔案的內容如下。在這裡聲明了該外掛程式的SymbolicName為HelloWorldPlugin2,它聲明了一個本地程式集HelloWorldPlugin2.dll。

<?xml version="1.0" encoding="utf-8" ?> <Bundle xmlns="urn:uiosp-bundle-manifest-2.0" SymbolicName="HelloWorldPlugin2">   <Runtime>     <Assembly Path="HelloWorldPlugin2.dll"/>   </Runtime> </Bundle>

緊接著,我們需要將Web.config更改一下,刪除一些與主程式衝突的內容。

View Code

<?xml version="1.0"?> <configuration>   <system.web>     <compilation debug="true" targetFramework="4.0">       <assemblies>         <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />         <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />         <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />         <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />         <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />       </assemblies>     </compilation>    <pages>       <namespaces>         <add namespace="System.Web.Helpers" />         <add namespace="System.Web.Mvc" />         <add namespace="System.Web.Mvc.Ajax" />         <add namespace="System.Web.Mvc.Html" />         <add namespace="System.Web.Routing" />         <add namespace="System.Web.WebPages"/>       </namespaces>     </pages>   </system.web> </configuration>

 下面,我們添加一個Controller和一個View,內容為預設。

接著,我們編輯Views中的_ViewStart.cshtml檔案,更改一下Layout的路徑。

@{     Layout = "~/Plugins/HelloWorldPlugin2/Views/Shared/_Layout.cshtml"; }

下面,我們再更改一下Manifest.xml檔案,將當前MVC外掛程式的HelloController的Index Action註冊到介面架構中,可以直接通過Win 7 風格 Web 介面架構來訪問。

<?xml version="1.0" encoding="utf-8" ?> <Bundle xmlns="urn:uiosp-bundle-manifest-2.0" Name="MVC外掛程式2" SymbolicName="HelloWorldPlugin2">   <Runtime>     <Assembly Path="HelloWorldPlugin2.dll"/>   </Runtime>  <Extension Point="UIShell.WebApplications">     <Application ToolTip="MVC外掛程式2"                  Icon="/{BundleRelativePath}/Images/Application.png"                  DefaultPage="/HelloWorldPlugin2/Hello"                  WindowState="maximized">       <NavigationNode Text="List Movies" ToolTip="List All Movies"                       ImageUrl="/{BundleRelativePath}/Images/Application.png"                       NavigateUrl="/HelloWorldPlugin2/Hello/Index"/>     </Application>   </Extension> </Bundle>

現在我們來運行一下項目。這時,你可以發現MVC外掛程式表徵圖已經出現在主介面,雙擊開啟主介面後,預設開啟了MVC外掛程式的Index頁面了。你可以從以下地址來下載當前外掛程式項目的內容:/Files/baihmpgy/2_MvcOSGi_EmtyPlugin.zip。

接下來,我們為HelloWorldPlugin2添加更多的內容也頁面,此時,我們的HelloController控制器代碼如下,它為Movie記錄定義了Create/Edit/Save/Delete的動作。

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using HelloWorldPlugin2.Models;namespace HelloWorldPlugin2.Controllers {     public class HelloController : Controller     {         public ActionResult Index()         {             var model = new MovieList();             return View(model.GetMovies());         }        public ActionResult CreateNew()         {             var model = Movie.NewMovie();            return View(model);         }        public ActionResult SaveNewMovie(Movie movie)         {             var model = new MovieList();             model.GetMovies().Add(movie);             return RedirectToAction("Index");         }        [HttpGet]         public ActionResult EditMovie(int id)         {             var model = new MovieList().GetMovies().Find(p => p.Id == id);             return View(model);         }                 [HttpPost]         public ActionResult EditMovie(Movie movie)         {             var model = new MovieList().GetMovies().Find(p => p.Id == movie.Id);             model.Name = movie.Name;             model.Rating = movie.Rating;            return RedirectToAction("Index");         }        public ActionResult DeleteMovie(int id)         {             new MovieList().GetMovies().Remove(new MovieList().GetMovies().Find(p => p.Id == id));             return RedirectToAction("Index");         }     } }

此時,我們再運行項目,如下所示,在這裡,你可以來增加/修改/刪除一條Movie記錄了。你可以通過以下地址來下載當前的外掛程式項目:/Files/baihmpgy/3_MvcOSGi_HelloWorldPlugin2.zip。

4 建立其它MVC 3外掛程式

同樣的,我們可以接著建立一個MVC外掛程式——HelloWorldPlugin,你可以通過以下地址來下載項目當前的內容:/Files/baihmpgy/4_MvcOSGi_MoreMvcPlugins.zip。通過Web介面架構,可以直接存取到該外掛程式。

當然,你也可以通過http://localhost:35718/HelloWorldPlugin2/Hello/Index網址來直接存取頁面,Url的路由規則為{plugin}/{controller}/{action}。

此時,開放工廠遠端管理工具,可以發現有10個外掛程式,在這裡,你可以Start/Stop/Uninstall核心載入的外掛程式。

 

源碼:

/Files/baihmpgy/1_MvcOSGi.zip

/Files/baihmpgy/2_MvcOSGi_EmtyPlugin.zip

/Files/baihmpgy/3_MvcOSGi_HelloWorldPlugin2.zip

/Files/baihmpgy/4_MvcOSGi_MoreMvcPlugins.zip

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.