minihttp是基於c#實現的輕量級的動態WEB服務元件,通過minihttp可以輕鬆地構一個動態的WEB服務並嵌入到.NET程式中執行部署.由於minihttp完全基於託管程式碼實現,所以可以輕鬆執行在windows .net和 linux mono之間而不需要調整任何程式碼.為了方便處理動態功能minihttp還提供基礎的MVC開發模式,並支援Razor檢視模板從而讓實現動態功能更簡單.
功能描述
- 支援 .net和mono平臺下執行
- 暫只支援GET和POST功能
- 支援MVC和Razor
構建WEB服務
minihttp構建一個web服務非常簡單,只需要通過呼叫HttpHost.CreateHttpServer建立IHttpServer,並呼叫相關Open方法即可開啟服務功能.
IHttpServer server = HttpHost.CreateHttpServer(); server.Prefixes.Add("http://*:80/"); //server.ServerPath += "Web" + System.IO.Path.DirectorySeparatorChar; server.Open();以上程式碼就是在所有IP的80埠開啟服務,如果在不指定ServerPath的前提下,目錄指向當前程式域執行的目錄.
使用MVC功能
minihttp構建的出發點就是用於提供一個服務程式方便實現WEB管理功能而存在,所以minihttp支援動態處理是最基礎的功能需求.為了讓開發人員更好地編寫動態資料處理,minihttp整合了基礎的mvc功能和Razor檢視模板支援.
Hello World
以下是制定一個簡單的Hello Word頁面,主要功能是使用者提交自己的名字然後顯示出來.
- Action
public ActionResult HelloWorld(string name) { return View("/views/helloworld", name); }- View
<h2>Hello World</h2> <form method="post" action="/helloworld"> <div class="input-group"> <span class="input-group-addon">輸入名字:</span> <input type="text" class="form-control" name="name" placeholder="Username"> </div> <br /> <div class="input-group"> <button type="submit" class="btn btn-default" style="float:right;">提交</button> </div> </form> <br /> <div class="input-group"> <span class="input-group-addon">hello:</span> <span class="form-control">@Model</span> </div>在使用上基本相容asp.net mvc模式,定義相應的方法並返回指定的view和model.
引數繫結
提供Action引數定功能,支援值型別和類模型,也提供自定義繫結描述擴充套件.minihttp是通過提交資料的名稱來進行資料繫結對映,並提供大量的預設繫結器來滿足大部分情況的需要.下面簡單介紹一下如何繫結一個類模型
- Model
public class Register { public string Name { get; set; } public string EMail { get; set; } public string Password { get; set; } }- Action
public ActionResult Register(Models.Register register) { return View("/views/register", register); }- View
@{ minihttp.quickstart.Web.Models.Register reg = (minihttp.quickstart.Web.Models.Register)Model; } <h2>資料繫結</h2> <form method="post" action="/register"> <div class="input-group"> <span class="input-group-addon InputLabel">使用者名稱:</span> <input type="text" class="form-control" name="name" placeholder="Username"> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">郵件:</span> <input type="text" class="form-control" name="email" placeholder="Username"> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">密碼:</span> <input type="text" class="form-control" name="password" placeholder="Username"> </div> <br /> <div class="input-group"> <button type="submit" class="btn btn-default" style="float:right;">提交</button> </div> </form> <h3>提交資料</h3> <div class="input-group"> <span class="input-group-addon InputLabel">使用者名稱:</span> <span class="form-control">@reg.Name</span> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">郵件:</span> <span class="form-control">@reg.EMail</span> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">密碼:</span> <span class="form-control">@reg.Password</span> </div>常用需求都可以通過自動化綁來簡化提交資料的獲取,這樣可以大大節省這方面的工作量.
子模板
子模板可以便於共享檢視,這樣就可以有利於檢視的複用,對些minihttp也提供了對它的支援.
- View
<h2>子模板</h2> @{ var data = new {User= new minihttp.quickstart.Web.Models.User(){ Name="sdf",EMail="sdfsd",Address="sdfsdf",Phone="12345"}}; } @RenderPage("/views/controls/userinfo",data)- ChileView
<div class="input-group"> <span class="input-group-addon InputLabel">使用者名稱:</span> <span class="form-control">@ViewData.User.Name</span> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">郵件:</span> <span class="form-control">@ViewData.User.EMail</span> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">地址:</span> <span class="form-control">@ViewData.User.Address</span> </div> <br /> <div class="input-group"> <span class="input-group-addon InputLabel">地址:</span> <span class="form-control">@ViewData.User.Phone</span> </div> <br />
MasterPage
該功能也是minihttp所支援的功能,主要是方便統一處理頁面佈局,其使用方式和asp.net mvc一致.可以通過以下方式統一設定所有頁面的masterpage佈局.
server.MasterPage = "/views/layer/master";master頁面通過 @RenderBody()來指定頁面輸出的方式.
<div id="main"> <div id="start-menu"> <div class="panel panel-default"> <div class="panel-heading">Start</div> <div class="panel-body"> <ul> <li><a href="/helloworld">Hello World</a></li> <li><a href="/Register">資料繫結</a></li> <li><a href="/Control">子模板</a></li> <li><a href="/datalist">資料列表</a></li> </ul> </div> </div> </div> <div id="center"> @RenderBody() </div> <div style="clear: both;" /> </div>
下載
(元件許可任何個人或企業免費使用)