用aspx文件作为模板

首先申明:标题中的如果是可以去掉的。

想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等,都是浮云;二来想跟大家交流交流已达到相互提高的目的。

这篇文章先不讲如何实现,主要是讲讲思想,以及在实现过程中可能会碰到的一些问题:

1。每个人都写过自己的代码生成器,每个人都曾经为自己的代码生成器自豪过,但是有一个缺点,就是代码生成器都是为自己,或者为自己的团队定制的,换一个人,或者换一个团队环境,你的那个代码生成器可能就废了。

2。是否碰到过,每次你的生成的代码都有一些不尽人意的时候(小问题如:一个字符的问题,字段,属性摆放位置,代码缩进等等,大问题如:增加一个方法),你都会打开你的代码生成器源代码,进行一些调整,然后重新编译,ok,问题解决了,可是类似的情况可能会发生n多次。。。唉。。。

3。有没有一个办法可以解决在出现上述第二条中出现的问题,稍微调整一下模板,然后就可以了。方案当然有,现成的就有大把的基于模板的代码生成器,如CodeSmith。

4。如果你是大牛的话,如果你因为用别人的代码生成器而感到拘束,因为不是自家的东西不顺畅,所以你想拥有自己代码生成器,所有你开始了自己的代码生成器的开发历程,主要有下面几种方式:

a).正则表达式查找替换(缺点:要写很多正则表达式,比如,常量正则表达式,列表/列表项正则表达式);

b).基于xml文件方式,然后采用xmlDocument,XPath等方式加载,其实类似第一种,也是查找替换(这种相对第一种稍微好点,博客园中路过秋天大哥的秋色园的页面html代码就是通过这样的方式实现的,至于难度,大家研究过的都知道有多么复杂了)

c).高级点,可能涉及到逻辑处理if else if else, for, foreach, while等等,这种需要话的时间可不是一点点,碰到的问题也是各种各样的,稍微在博客园中搜索一下,就可以找到很多类似的文章

5。4中提到的三种代码生成器都不是我要的,所以一直还是停留在自己为自己定制的代码生成器上,没增加一段内容,都需要修改源码,编译。。。。纠结。

6。一次偶然的机会,看到有人说了这么一句话:ASPX页面上最好的代码生成器,”诶,这个不错哦“,周杰伦说过!但是如果要实现基于ASPX文件的代码生成器,需要将aspx文件宿主在一个ApplicatioinHost中,才能够被解析和访问,一般有下面几种方式:

a).IIS;

b).如果你没有IIS你可以使用中安装VisualStudio的时候自带的WebDev.WebServer.exe中;

c).网上有个开源的项目,名字为:CassiniServer,可以将一个WebSite目录发布成一个网站,可以让你通过浏览器访问;(另外,路过秋天大哥也参考这个写了一个工具,名字为:IIS_V10,本来想个给地址下载的,可是上秋色园使用”找找看“功能搜索关键字“IIS_V10”居然找不到相关文章,看来秋天大哥需要看看你的“找找看“的bug了。)

d).写自己的WebServer,写一个WebServer可不是那么简单的事情哦,虽然我也试过,但是却以失败告终,如果想尝试的同学可以参考用C#开发自己的Web服务器 - 前端开发的日志 - 网易博客系列文章,虽然很难,但是还是可以学到很多东西的。

7。到这里我考虑放弃了,但是在我看到这篇文章(自己写Web服务器(续) - 猴健居士 - 博客园)的时候,想我找到了解决方案了:下面这一句是核心代码:

private AspxCreator _aspxHost = (AspxCreator)ApplicationHost.CreateApplicationHost(typeof(AspxCreator), "/",AppDomain.CurrentDomain.BaseDirectory);

如果觉得不够,可以去仔细看看那篇文章。

总结:一路走来,真是花了不少力气,碰了不少墙壁,虽然走了很多弯路,但是学到了不少东西,还是值得的,代码实现尚在完善中,请大家期待!

 
 

用aspx文件作为模板的更多相关文章

  1. 所有的代码生成器都是浮云,如果可以用aspx文件作为模板

    首先申明:标题中的如果是可以去掉的. 想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等,都是浮云:二来想跟大家交 ...

  2. ASP.Net Web Form<一> aspx文件编译及呈现

    对比复习下JSP 1.jsp的本质是Servlet ,会在第一次被访问时会被翻译成一个类文件,从此对这个页面的访问都是由这个类文件执行后进行输出. aspx 本质是IHttpHandler 2.jsp ...

  3. 仅用aspx文件实现Ajax调用后台cs程序。(实例)

    仅用aspx文件实现Ajax调用后台cs无刷新程序.(实例) 两个文件:aaa.aspx 和aaa.aspx.cs 一.aaa.aspx <script type="text/java ...

  4. CI 资源文件加入模板

    CI  资源文件加入模板: (资源文件:图片,css,js ,业务文件csv,txt.....) 1.引入url辅助函数库   helper 2.使用base_url函数  生成文件物理硬盘地址 3. ...

  5. aspx文件、aspx.cs文件、aspx.designer.cs文件之讲解

    .aspx文件:(页面)书写页面代码.存储的是页面design代码.只是放各个控件的代码,处理代码一般放在.cs文件中. .aspx.cs文件:(代码隐藏页)书写类代码.存储的是程序代码.一般存放与数 ...

  6. aspx文件移动到新建的文件夹中设置路径的问题

    项目中仅仅把aspx移动到想要的文件夹内是会出错的,不用想也知道是路径问题.这里我就说这个路径该如何去修改. 两个地方需要修改:1.母版路径修改方法: <link href="Styl ...

  7. 动态生成修改aspx文件

    using System.IO; using System.Text;/// <summary>/// SCPage 的摘要说明 修改 aspx 和aspx.cs文件/// </su ...

  8. .cs文件与aspx.cs文件之间的区别是什么???他们的作用是什么???ASPX文件的作用是什么?

    一般在vs里面新建一个页面会产生两种文件:一种是后缀名为.cs的,一种是.aspx. 简单的说,.cs文件一般是在里面实现功能的,而.aspx就是实现界面效果的. 区别:.cs文件里面写的是.net的 ...

  9. Mybatis映射文件完整模板参照

    Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

随机推荐

  1. 2299 Ultra-QuickSort(归并)

    合并排序第一次.连环画看着合并看着别人的博客的想法. http://poj.org/problem? id=2299 #include <stdio.h> #include <std ...

  2. Swift 简简单单实现手机九宫格手势密码解锁

    原文:Swift 简简单单实现手机九宫格手势密码解锁 大家可以看到我之前的文章[HTML5 Canvas简简单单实现手机九宫格手势密码解锁] 本文是使用苹果语言对其进行了移植 颜色配色是拾取的支付宝的 ...

  3. 基于tomcat为了应对高并发模型实现webserver

    在博客上,一个简单的AIOweb来样加工.查看AIO异步处理,依靠操作系统完成IO操作Proactor处理模型确实很强大,它可以实现高并发.高响应server一个很好的选择,但在tomcat中间con ...

  4. IOS开发之——使用SBJson拼接Json字符串

    SBJson包的下载地址在上一篇文章中. 能够使用NSDictionary中的键值对来拼接Json数据,很方便,也能够进行嵌套,直接上代码: //開始拼接Json字符串 NSDictionary *d ...

  5. jquery+ligerform三级联动下拉框

    如下为ligerform里的三级联动下拉框: var formData=[ {display:,width:,space:,type:"select",group:"区域 ...

  6. HBuilder CSS 自定义代码块

    =begin 本文档是CSS代码块的编辑文件.注意不要把其他语言的设置放到css里来. HBuilder可使用ruby脚本来编辑代码块和增强操作命令. 1.编辑代码块 如果要新增一个代码块,复制如下一 ...

  7. ASP.NET中XML转JSON的方法

    原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...

  8. SVG 学习(二)--- 创建组合交互式应用

    接着上一节的内容,本次学习主要介绍SVG组合式应用以及js交互式应用! 1.组合式应用 绘制两棵带有投影效果的树! <svg width="400" height=" ...

  9. Office文档在线编辑的实现之一

    因为项目的关系,研究了一下Office的在线编辑功能,写出来共享一下. Office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件. IIS(6.0)支持webdav ...

  10. IE6/7中li浮动外边距无法撑开ul的解决方法

    昨天群里有人提出了这样的问题: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 < ...