博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现一个可host asp.net程序的小型IIS(Cassinidev介绍)
阅读量:5312 次
发布时间:2019-06-14

本文共 3182 字,大约阅读时间需要 10 分钟。

引子

    源于给客户做的一个系统, 基于传统的c/s架构(wpf+wcf), 后来因为客户需要, 就写了一些基于Web的查询小工具, 开发完了要部署的时候才发现, 服务器上并没有装IIS。哭泣的脸

服务器是win 2003 server操作系统, 硬盘上没保留系统安装文件的备份,要装IIS就得跑一趟机房, 为做一个懒惰的程序员,就开始想方法找歪路啦。

Google之, 得到以下信息:

  • Cassini —— VS自带的ASP.NET Development Server的前身(),可惜这玩意只支持本机连接, 而且最高只支持到.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 ——就是本文的主角啦,这是一个开源项目(), 支持远程连接, 支持.net 3.5和4.0, 可以源码级重用或程序集重用, 绝对轻量级,部署方便。

示例

    下载:

(官方下载)

下载回来的压缩包里有很多的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
{
/// 
/// MainWindow.xaml 的交互逻辑
/// 
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
(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

转载于:https://www.cnblogs.com/zhangji/archive/2011/09/22/2185154.html

你可能感兴趣的文章
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>
Python数据分析入门案例
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
Linux 中【./】和【/】和【.】之间有什么区别?
查看>>