zoukankan      html  css  js  c++  java
  • 用aspx文件作为模板

    用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);

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

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

     
     
  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3209598.html
Copyright © 2011-2022 走看看