Wilson's profile灵感之源PhotosBlogLists Tools Help

Blog


    6/10/2005

    开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)

    微软似乎没有明确地提供一个现成的script执行解决方案,我们能想到的就是VSA和CodeDOM。

    先看看这个脚本:

     1<dnml>
     2
     3<reference assembly="System.Windows.Forms.dll" />
     4
     5<language name="C#" entryPoint="Thingy" />
     6
     7<waitForUserAction value="true"/>
     8
     9<scriptCode><![CDATA[
    10
    11using System;
    12using System.Windows.Forms;
    13
    14public class Test
    15{
    16public static int Thingy()
    17{
    18    Console.WriteLine("This is a test");
    19    Console.WriteLine("This is a another test");
    20    Console.WriteLine("Venkat");
    21    MessageBox.Show("Neat");
    22
    23    Test2 two = new Test2();
    24    two.Stuff();
    25
    26    return 5;
    27
    28}
    29}
    30
    31public class Test2
    32{
    33    public void Stuff()
    34    {
    35        Console.WriteLine("Instance call");
    36    }
    37}
    38
    39
    40]]></scriptCode>
    41
    42</dnml>
    43
    44

    在CData部分,很熟悉,是吗?对,就是C#。其它部分是:

    1、reference:命名空间引用;
    2、language:语言;entryPoint是入口;
    3、waitForUserAction:等待用户反应(脚本执行完后);

    它的原理就是应用CodeDOM在内存中编译和运行这个脚本。

    这是原文:Dot Net Script

    我修改了一下,将其改变为类库+一个小执行器,更加容易嵌入到你的应用中,这里下载:DotNetScriptEngine.zip

    Dot Net Script的特别之处在于它用了XML来承载脚本,看来起更像脚本。而且代码执行能返回int类型值。


    类似的项目还有:NScript - A script host for C#/VB.NET/JScript.NET,不过这个只支持C#,而且不能返回值,但它的架构好很多。
    5/11/2005

    动态模版系统/引擎(开源)推荐

    unruledboy.1qazxsw2大家平时都需要用到动态模版技术吧?就是利用模版,把某些动态内容解析为最终内容,如html等,方便不用hard code。

    NVelocity(http://sourceforge.net/projects/nvelocity)是从java编写的velocity(http://jakarta.apache.org/velocity/)移植的.net版本,是java界超强的模版系统,你可以用它来实现你自己的jsp!

    现在介绍一个很短小精悍的模版引擎:http://www.codeproject.com/csharp/AderTemplateEngine.asp,使用c#2.0编写,也有1.1版本,但不是官方的:http://www.arcturus.com.au/TemplateEngine-1.1.zip。这个就简单点,但仍然很强大,说多了也难解析,看了例子就双。

    均为GPL,请小心使用。
    5/10/2005

    怎么缩小ms sql 的日志

    跟大家分享一下怎么缩小ms sql 的日志,因为使用时间长了,日志会膨胀得很夸张,所以可以执行以下sql语句,非常安全,我反复测试过很多遍:

    DUMP TRANSACTION 你的数据库名 WITH NO_LOG
    BACKUP LOG 你的数据库名 WITH NO_LOG
    DBCC SHRINKDATABASE(你的数据库名)
    EXEC sp_dboption '你的数据库名', 'autoshrink', 'TRUE'

    CIMS系统通用监控消息通知系统

    CIMS系统通用监控消息通知系统是我在新公司,独立开发的一套通过提供标准统一的功能接口,对特定对象进行监控(包括数据库监控、系统资源监控、文件系统改变监控等),根据指定的业务规则,发现改变,即为业务系统提供的统一消息通知机制,统管各种消息渠道实现消息对指定客户终端的传递。

    接合实际情况,消息交互系统采用C/S结构,消息服务器以Windows服务形式在业务系统的服务器端运行,统一分发业务系统的即时消息。

    服务器端采用微软.NET(C#)开发,客户端分别以VB6和.NET(C#)开发。

    系统业务
    1. 服务器端定时(可配置)扫描指定数据库,如根据指定业务规则扫描后发现数据改变,则通过各种渠道发送消息;
    2. 服务器端可向各客户端发送数据库信息改变消息;
    3. 客户端可在数据改变后,连接服务器端,请求消息通知;
    4. 消息发送之前,先根据业务系统的用户权限进行通知权限判断;
    5. 权限判断成功则通过消息脚本模版格式化/生成消息内容模版;

    消息渠道
    综合当今各种流行的消息渠道,消息交互系统实现以下7种渠道:
    1. File Log(日志文件)
    2. DB Log(数据库日志)
    3. HTTP(页面请求记录)
    4. Email(电子邮件)
    5. IM(即时消息)
    6. MSN
    7. SMS(短信)

    Framework(总体框架)
    说明:CIMS的总体框架是CIMS的核心部分,包括以下部分:
    a) 服务器端消息发送服务,实现根据业务请求指定的发送渠道(方式)发送指定消息到指定的客户端,方式包括上述的7种渠道。
    b) 服务器端消息触发器,负责监听客户端的请求,根据用户权限管理,校验请求合法性,并把请求转化为任务提交给服务器端消息发送服务;
    c) 消息模版引擎,为服务器端消息发送服务提供业务消息的格式化输出功能;
    d) 数据访问组件,用以统一访问各种数据库类型,包括MS SQL Server、Oracle、ACCESS等;
    e) 任务定时器,用以实现按指定时间进行数据库扫描;
    f) 多线程消息通知队列,用以以队列形式把消息通知发送给客户端;
    g) 通过抽象的消息发送工厂接口,实现File Log、DB Log、HTTP Log、发送邮件、IM、SMS、MSN消息等。

    重大改变!DotMSN于今天开放了源代码,并升级到2.0版本!!

    最好用的MSN组件DotMSN于今天终于开放了源代码。

    刚刚公布的2.0版本有了很大的改进:
    1、引入了著名的Mentalis.org开发的Proxy类库,这样就实现局域网内proxy的可能。
    2、新P2P架构!
    3、Converation下新的Switchboard,原有的Conversion属性方法都改造到该新类中。
    4、新的例子,还加入了UnitTest。

    对比编译后程序集大小就知道了:196kb:86kb,大了一倍多:D

    我们还可以注意到:EmoticonCollection还没有完成,而且DNOWSerialWrapper没有包含进来估计得下一版本。

    我从来没有办法让它成功传输文件,不知道大家有没有遇到这种情况

    因为改变很大,原有应用如要升级到dotmsn 2.0,得好好看例子改代码了。

    例子开发应该在1024*768,让我等800*600真不爽。

    这里下载:http://www.xihsolutions.net/dotmsn/download/dotmsn-full.zip,最新2.0版本,含所有源代码、例子和文档。