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>
下載
(組件許可任何個人或企業免費使用)