设为首页 收藏本站
查看: 1233|回复: 0

[经验分享] 实现一个可host asp.net程序的小型IIS(Cassinidev介绍)

[复制链接]

尚未签到

发表于 2015-8-12 11:11:23 | 显示全部楼层 |阅读模式
引子
  源于给客户做的一个系统, 基于传统的c/s架构(wpf+wcf), 后来因为客户需要, 就写了一些基于Web的查询小工具, 开发完了要部署的时候才发现, 服务器上并没有装IIS。 DSC0000.png
  服务器是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, 。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97864-1-1.html 上篇帖子: Windows NLB搭配IIS的ARR搭建高可用环境 下篇帖子: [原创]x.509证书在WCF中的应用(Web/IIS篇)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表