實現一個可host asp.net程式的小型IIS(Cassinidev介紹)

來源:互聯網
上載者:User
引子

    源於給客戶做的一個系統, 基於傳統的c/s架構(wpf+wcf), 後來因為客戶需要, 就寫了一些基於Web的查詢小工具, 開發完了要部署的時候才發現, 伺服器上並沒有裝IIS。

伺服器是win 2003 server作業系統, 硬碟上沒保留系統安裝檔案的備份,要裝IIS就得跑一趟機房, 為做一個懶惰的程式員,就開始想方法找歪路啦。

Google之, 得到以下資訊:

  • Cassini —— VS內建的ASP.NET Development Server的前身(http://blogs.msdn.com/b/dmitryr/),可惜這玩意只支援本機串連, 而且最高只支援到.net framework 3.5, pass掉。
  • IIS Express —— 微軟打算用來替換掉ASP.NET Development Server的工具, 不僅支援遠端連線,.net framework 4更是不在話下, 比VS內建的server功能強大許多, 相信很多vs web開發人員已經用iis express來替換掉vs內建的那個asp.net development server, 可是對我這個web新手來說, 這東西還是重量級了些, 配置又好麻煩,懶得研究, pass掉。
  • Cassinidev ——就是本文的主角啦,這是一個開源項目(http://cassinidev.codeplex.com/), 支援遠端連線, 支援.net 3.5和4.0, 可以源碼級重用或程式集重用, 絕對輕量級,部署方便。
樣本

    下載:

CassiniDev 3.5.1.8-4.1.0.8 release (官方下載)

下載回來的壓縮包裡有很多的exe及dll檔案, 下面是每個檔案的作用描述:

直接使用的:

CassiniDev.exe:對應.net framework 3.5, asp.net 2.0, windowform gui

CassiniDev4.exe: 對應.net framework 4, asp.net 4.0, windowform gui

CassiniDev-console.exe:對應.net framework 3.5, asp.net 2.0, 控制台程式

CassiniDev4-console.exe:對應.net framework 4, asp.net 4.0, 控制台程式

供二次開發的:

CassiniDev-lib.dll:對應.net framework 3.5, asp.net 2.0

CassiniDev4-lib.dll:對應.net framework 4, asp.net 4.0

供VS調試用的(即用來替換掉VS內建的ASP.Net development server):

WebDev.WebServer.exe

WebDev.WebServer20.exe

WebDev.WebServer40.exe

    使用:

一 般情況下, 直接使用上面的exe便可實現asp.net的寄宿了, 但是相應的, 可供我們控制的就比較少, 不自由, 例如實際應用中可能需要把我們的宿主寫成windows Service的形式, 直接用上面的exe就沒法實現了, 這種情況下可以利用cassinidev-lib進行二次開發, 甚至是直接到官網上下載原始碼來產生自己需要的程式, 下面是一段簡單的例子,利用cassinidve4-lib.dll實現一個asp.net的host

  在vs2010中建立一wpf應用程式, 在主視窗中加入一TextBox做顯示資訊用, 修改MainWindow代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using CassiniDev;
 
namespace JKAspNetHost
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        private readonly Server server;
 
        public MainWindow()
        {
            InitializeComponent();
 
            server = new Server(8038, "/", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WebApp"), 
                System.Net.IPAddress.Parse("0.0.0.0"), "", 0, false, false);
 
            server.Start();
            textLog.AppendText("伺服器運行中...\r\n");
            textLog.AppendText(server.PhysicalPath +  "\r\n");
            textLog.AppendText(server.RootUrl + "\r\n");
            server.RequestComplete += new EventHandler<RequestEventArgs>(server_RequestComplete);
        }
 
        void server_RequestComplete(object sender, RequestEventArgs e)
        {
            //可能由ui線程以外的線程調用, 所以需要Dispatcher.Invoke
            Dispatcher.Invoke(new Action(()=>{
                textLog.AppendText("Request:" + e.RequestLog.Url + "\r\n");
                if (textLog.Text.Length > 10000)
                {
                    textLog.Text = textLog.Text.Substring(textLog.Text.Length - 1000, 1000);
                }
                textLog.ScrollToEnd();
            }));
        }
 
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            try
            {
                server.ShutDown();
            }
            catch { }
        }
    }
}

 

其他用途

1,如果您需要做一些隨光碟片附帶的示範程式或介紹程式, 卻又沒有案頭應用開發經驗, 那麼可以利用cassinidev+webbrowser的來實現,  同一個exe中, 既是服務端又是前端展示層, 無須安裝, 開箱即用。

2,單機應用或小型區域網路應用, 利用強大的html作展示層,使用者體驗不比傳統的MFC, windowFrom差, 開發效率, 介面美觀。

3, 。。。

原文 :http://www.cnblogs.com/sweethome/archive/2011/09/22/2184988.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.