C# 用QQ企业邮箱发邮件

问题System.Net.Mail下的SmtpClient来发送邮件,而System.Net.Mail only仅支持Explicit SSL

不要465端口,用25,不用EnableSsl = true;

 

    {
        static void Main(string[] args)
        {
            SmtpClient client = new SmtpClient();
            client.Host = "smtp.exmail.qq.com";
            client.Port = 25;
           // client.Port = 465;
          //  client.EnableSsl = true;
            client.Timeout = 10000;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential("test@ms.com", "1234567890");
            MailMessage mm = new MailMessage("test@ms.com", "user1@ms.com", "test", "test");
            mm.BodyEncoding = UTF8Encoding.UTF8;
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            client.Send(mm);
        }
    }

 

最后在配置TFS邮件通知设置的时候端口改用25,不选择SSL,顺利解决问题。

SmtpClient发送邮件超时的异常参考:

http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

了解更多

SEO须知:<meta>系列用法。

有时候会有一些站点内容,不希望被ROBOTS抓取而公开。为了解决这个问题,ROBOTS开发界提供了两个办法:一个是robots.txt,另一个是The Robots META标签。
1,<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">  默认是all
其中的属性说明如下: 
设定为all:文件将被检索,且页面上的链接可以被查询; 
设定为none:文件将不被检索,且页面上的链接不可以被查询; 
设定为index:文件将被检索; 
设定为follow:页面上的链接可以被查询; 
设定为noindex:文件将不被检索,但页面上的链接可以被查询; 
设定为nofollow:文件将不被检索,页面上的链接可以被查询。 
2,revisit-after (重访) 
<META name="revisit-after" CONTENT="7 days" >
通知搜索引擎多少天访问一次
其他的:
<META NAME="GENERATOR" CONTENT="Macromedia Dreamweaver MX"> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<Meta http-equiv="Content-Language" Content="zh-CN"> 
<Meta http-equiv="Refresh" Content="5; Url=http://hi.baidu.com/pihi"> 
<Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT"> 
<meta http-equiv="cache-control" content="no-cache"> 
<META name="keywords" content="关键字"> 
<meta name="description" content="描述"> 
<meta name="author" content="作者"> 
<meta name="build" content="日期"> 
<meta name="coprright" content="版权"> 
<meta name="reply-to" content="email"> 
<meta name="robots" content="all"> 
<meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=23)"> 
<meta http-equiv="Page-Exit" content="RevealTrans (Duration=3, Transition=23)"> 
<link rel="shortcut icon" href="favicon.ico"> 
------------------------------------------------------------------------------------------------------------ 
meta标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME)。 
1、Content-Type和Content-Language (显示字符集的设定) 
说明:设定页面使用的字符集,用以说明主页制作所使用的文字已经语言,浏览器会根据此来调用相应的字符集显示page内容。 
注意: 该meta标签定义了HTML页面所使用的字符集为GB2132,就是国标汉字码。如果将其中的“charset=GB2312”替换成“BIG5”,则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时,IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面Meta标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集,则IE就提示下载。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”。 
Charset选项:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content还可以是:EN、FR等语言代码。 
2、Refresh (刷新) 
3、Expires (期限) 
说明:指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。 
注意:必须使用GMT的时间格式,或直接设为0(数字表示多少时间后过期)。 
4、Pragma (cach模式) 
说明:禁止浏览器从本地机的缓存中调阅页面内容。 
注意:网页不保存在缓存中,每次访问都刷新页面。这样设定,访问者将无法脱机浏览。 
5、Set-Cookie (cookie设定) 
说明:浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提高速度。当你希望访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。通常HTML文件没有必要禁用缓存,对于ASP等页面,就可以使用禁用缓存,因为每次看到的页面都是在服务器动态生成的,缓存就失去意义。如果网页过期,那么存盘的cookie将被删除。 
用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday, 21-Oct-98 16:14:21 GMT; path=/"> 
注意:必须使用GMT的时间格式。 
6、Window-target (显示窗口的设定) 
说明:强制页面在当前窗口以独立页面显示。 
用法:<Meta http-equiv="Widow-target" Content="_top"> 
注意:这个属性是用来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent。 
7、Pics-label (网页RSAC等级评定) 
说明:在IE的Internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级 
别就是通过该参数来设置的。 
用法:<META http-equiv="Pics-label" Contect= 
"(PICS-1.1'http://www.rsac.org/ratingsv01.html' 
I gen comment 'RSACi North America Sever' by 'inet@microsoft.com' 
for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))"> 
注意:不要将级别设置的太高。RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft Internet Explorer(IE3.0以上)来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的(n 0 s 0 v 0 l 0)表示该站点不包含不健康内容。级别的评定是由RSAC,即美国娱乐委员会的评级机构评定的,如果你想进一步了解RSAC评估系统的等级内容,或者你需要评价自己的网站,可以访问RSAC的站点:http://www.rsac.org/。 
8、Page-Enter、Page-Exit (进入与退出) 
说明:这个是页面被载入和调出时的一些特效。 
用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)"> 
<Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)"> 
注意:blendTrans是动态滤镜的一种,产生渐隐效果。另一种动态滤镜RevealTrans也可以用于页面进入与退出效果: 
<Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)"> 
<Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)"> 
Duration 表示滤镜特效的持续时间(单位:秒) 
Transition 滤镜类型。表示使用哪种特效,取值为0-23。 
0 矩形缩小 
1 矩形扩大 
2 圆形缩小 
3 圆形扩大 
4 下到上刷新 
5 上到下刷新 
6 左到右刷新 
7 右到左刷新 
8 竖百叶窗 
9 横百叶窗 
10 错位横百叶窗 
11 错位竖百叶窗 
12 点扩散 
13 左右到中间刷新 
14 中间到左右刷新 
15 中间到上下 
16 上下到中间 
17 右下到左上 
18 右上到左下 
19 左上到右下 
20 左下到右上 
21 横条 
22 竖条 
23 以上22种随机选择一种 
9、MSThemeCompatible (XP主题) 
说明:是否在IE中关闭 xp 的主题 
用法:<Meta http-equiv="MSThemeCompatible" Content="Yes"> 
注意:关闭 xp 的蓝色立体按钮系统显示样式,从而和win2k 很象。 
10、IE6 (页面生成器) 
说明:页面生成器generator,是ie6 
用法:<Meta http-equiv="IE6" Content="Generator"> 
注意:用什么东西做的,类似商品出厂厂商。 
11、Content-Script-Type (脚本相关) 
说明:这是近来W3C的规范,指明页面中脚本的类型。 
用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript"> 
★NAME变量 
name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。 
name的value值(name="")指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、refresh(刷新)等。还可以指定其他任意值,如:creationdate(创建日期) 、 
document ID(文档编号)和level(等级)等。 
name的content指定实际内容。如:如果指定level(等级)为value(值),则Content可能是beginner(初级)、intermediate(中级)、advanced(高级)。
1、Keywords (关键字) 
说明:为搜索引擎提供的关键字列表 
用法:<Meta name="Keywords" Content="关键词1,关键词2,关键词3,关键词4,……"> 
注意:各关键词间用英文逗号“,”隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。当数个META元素提供文档语言从属信息时,搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。例如: 
<Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine"> 
<Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil"> 
列举出几个重要关键词即可,也不可过分堆砌。
2、Description (简介) 
说明:Description用来告诉搜索引擎你的网站主要内容。 
用法:<Meta name="Description" Content="你网页的简述"> 
注意: 把网页内容高度概括到这里,长度要合理,不可过分堆砌关键词,每个页面description要有所不同
3、Robots (机器人向导) 
说明:Robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。Content的参数有all、none、index、noindex、follow、nofollow。默认是all。 
用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow"> 
注意:许多搜索引擎都通过放出robot/spider搜索来登录网站,这些robot/spider就要用到meta元素的一些特性来决定怎样登录。 
all:文件将被检索,且页面上的链接可以被查询; 
none:文件将不被检索,且页面上的链接不可以被查询;(和 "noindex, no follow" 起相同作用) 
index:文件将被检索;(让robot/spider登录) 
follow:页面上的链接可以被查询; 
noindex:文件将不被检索,但页面上的链接可以被查询;(不让robot/spider登录) 
nofollow:文件将不被检索,页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下探找) 
4、Author (作者) 
说明:标注网页的作者或制作组 
用法:<Meta name="Author" Content="张三,abc@sina.com"> 
注意:Content可以是:你或你的制作组的名字,或Email 
5、Copyright (版权) 
说明:标注版权 
用法:<Meta name="Copyright" Content="本页版权归Zerospace所有。All Rights Reserved"> 
注意: 
6、Generator (编辑器) 
说明:编辑器的说明 
用法:<Meta name="Generator" Content="PCDATA|FrontPage|"> 
注意:Content="你所用编辑器" 
7、revisit-after (重访) 
说明: 
用法:<META name="revisit-after" CONTENT="7 days" > 

了解更多

软件定制开发工作安排规范

想做好定制软件开发工作,必须对定制软件开发流程管理必须做科学,每一步定位清晰,目标明确,下面对定制软件开发工作流进行拆解分析:
需求分析
 资深软件系统分析师对企业所面临的管理问题进行分析
需求初步确认
 软件系统分析师初步确认企业需求,作为合同确认的依据
系统调研
软件系统分析师对企业的初步需求进行详细调研,确定系统界面的设计和运行的流程
需求说明书
 将软件系统分析师对企业详细调研文稿化,经双方讨论确认后,开始系统界面设计
界面设计
专业软件开发工程师及美工设计师完成系统界面设计,经用户确认,开始软件开发
开发及测试
 专业软件开发工程师和测试工程师完成系统软件开发和测试,强大测试力量和一对一软件测试体系,确保系统软件质量
使用培训
 专业培训讲师对企业进行软件基础知识和系统软件运作流程全面培训
初始化试运行
 专业软件工程师辅导用户使用系统,协助用户进行初始化工作;系统初始化完毕,进行试运行阶段,测试系统功能的完善性和全面性
正式切换 双方共同测评系统,确保系统能全面符合用户需求说明书定义的所有功能,正式切换系统
从项目推动过程来讲,可以分为:
1、 项目启动阶段
这一阶段主要是为实施做好准备,由项目指导委员会召开项目动员大会,确定项目组成员,确定项目的计划和目标,建立实施所必须的系统环境。
2、调研分析阶段
项目实施小组在开始系统实施前,先对公司现有的应用系统进行详细调研和分析,根据企业的具体情况和信息化管理的特点确定目标业务流程。对各级用户进行需求调研。最终以双方确认的目标作为下一步具体实施的业务蓝图,并结合软件产品和技术开发实际情况,规划设计详细的解决方案,并进行确认,作为设计开发的基础。
3、 系统开发阶段
根据调研分析的结果,进行系统设计、编码、测试,完成软件的开发。
4、 项目实施阶段
在系统开发完成之后,软件实施进入实质性阶段。项目实施小组要在项目指导委员会的全力支持和相关部门、人员的协作配合下完成大量的具体工作,比如数据分析与导入、系统设置、人员培训、规章制度建立、实施文件归档、客户化修改等。软件的使用者尤其是关键用户必须在这段时间内掌握相关功能模块的操作和应用,以便在系统正式运行后能够独立地使用软件。
5、 试运行阶段
在经过项目实施阶段后,各个模块及整个系统需要试运行一段时间,以确信软件能够在企业中运行良好,并达到预期效果。同时,根据试运行阶段中发现的问题进行系统调整。
6、 系统切换/正式运行
在试运行阶段后,确信软件可以正式开始运行后,需要进行系统切换,企业正式切换到新的业务流程,并在软件上进行企业日常业务处理。至此,软件的实施已经全部完成,进入后期维护阶段。
架构设计
设计的中心思想

1、 以业务逻辑建模,而不是以数据库为中心建立系统模型
对信息系统的设计,应紧紧专注于将企业生产的系统抽象转化为信息系统的模型,能够准确、完整、清晰地了解业务逻辑和业务流程,并且对业务的变化作预先考虑,是项目成功的关键。开发人员容易出现的问题是以关系数据库设计或数据控件的设计代替系统建模,造成的问题是以数据为中心,其结果是系统与数据紧密耦合,难以实现业务逻辑的变化和扩展。
2、 定制软件开发是否满足了用户的期望
为了实现这个目标,完善准确的需求收集和需求分析,是项目成功设计的前提。否则无论这个软件再先进,从用户角度看,也是失败的软件。因此,在设计前期,对需求分析所必须的资源和时间投入,必须有足够的重视和充分的计划。
3、 必须要考虑非软件的因素
任何一个项目都是为了用户实现其业务目的,软件工程也不例外。同时,企业用户作为一个实体,其决策收到其行业特点、用户、市场、上级主管部门、决策人员的个性、企业的定位、企业的现状、长远发展规划、历史因素等综合情况的影响,因此,在架构设计上,应综合考虑这些因素。
设计原则
4、 在可能的情况下,按照“统一规划、统一架构、统一标准”的原则。
5、 以良好的设计模式来保证系统的先进性、合理性和应用扩展性。
6、 系统的模块之间应用和交互,尽可能采用松耦合,以实现系统的灵活性和实用性,延长系统的生命周期,保护用户的投资。
7、 采用以SOA作为体系架构的核心,以保证系统级别和部件级别重复使用和业务重组,便于用户长远的。
8、 系统的开放性要求能软件实现三个无关性:通讯组件的网络及协议无关性,数据来源无关性和用户对流程无关性。
9、 采用有效的需求分析手段,力图实现准确到位的需求分析,
为良好的人机界面设计提供坚实的基础。高度重视用户界面的设计,作到符合不同用户的实际经验和使用习惯,减少对信息系统的畏惧感,提高用户使用信息系统的信心,真正使系统成为提高生产管理效率的有效工具。
10、尽可能采用经过实际运行检验的成熟模块,

从而节省开发资源和缩短开发周期,确保项目按时交付使用。


定制软件开发项目管理
南思特的项目管理是在传统RUP 和XP 之间寻找一个平衡点的项目管理。我们称为“实用最好”的项目管理思想的贯彻。因为我们认识到,没有一种方法可以完全适用于不同的项目类型和客户。只有把握住管理过程中的一些核心不变因素,在简洁、有效、实用的前提下才是现实可行的。为此,我们在项目管理过程中坚持如下的一些基本原则:
1、 确定最适合的团队

包括选择称职的项目经理、合格的成员。特别是项目经理必须要了解成员,合理安排人员和工作。
2、 风险的预估和备用方案

充分估计项目的风险,是项目管理的核心。其风险包括人员风险、技术风险、需求膨胀、进度压力、质量风险等。必须要设定备用方案。
3、 分解原则

大的项目必须要进行分解。
4、 持续构建和尽早发布

在可能的情况保证每日构建的成功。在可能的情况尽早发布给产品经理或用户试用。
5、 测试驱动

测试的编写应该在代码的实施之前。
6、 全局规划,分步实施,步步见效

小步成功可以极大的减轻压力,避免质量风险
7、 合理的使用文档和工具

文档和管理工具的使用在必要时必不可少,但是过度使用带来的问题更多。
8 简单有效

项目的技术和构架的、产品的选用都应该坚持这个原则。
9 平衡原则

更多倾向RUP 还是XP,完全依据项目的特征和用户的情况而定,做好必要的平衡。

了解更多

后台功能设计的起点:权限方案设计分享

权限是一个公司信息系统的起点。我从入职以来就一直想要对公司后台的权限系统进行一个梳理(其实是老板要求的),苦于对后台和公司业务还不够了解,所以想法一直没能成型。终于,经过几个月断断续续的琢磨,我趁最近需求数量不多的时候,把权限的调整方案梳理了出来。

这次梳理公司后台的系统,我在原有权限系统的基础上引入了 公司组织架构,形成了 动态权限管理模式,使得公司的权限管理更加合理化。目前已经把方案提交给开发进行审核,希望可以最终落实。这里就先向大家汇报一下这几个月以来梳理权限的成果,给同样有权限体系设计问题的朋友们一点参考。

要设计权限,首先要对权限 已有的成熟方案有一定认识,其次要 对业务有深入的分析,才可以在业务的基础上有针对性的设计权限模型。

关于权限成熟方案,我查了很多资料,主要了解了一些关于 RBAC(Role-Based Access Control)权限模型的知识。加上在前司对SharePoint的权限分配方案有一定的了解,权限的知识基本就已经足够了(不够也没有更多了,找到一篇从产品的角度解释RBAC的文章,值得一读:请点击查看)

关于业务需求分析方面,我对公司后台的权限系统做了梳理。

因为公司对数据的保密要求很高,所以后台有大量查看项目、查看投资人的细致权限设置,但是 缺乏一致的管理方法,导致经常出现有需求无权限,或调动后权限没有及时清除的问题。公司后台主要是按照RBAC设置了权限体系,另外还根据项目服务小组的机制为每个项目单独设置了权限。后台RBAC的权限角色中,有部门角色、功能角色、临时团队角色等等,相对比较混乱。

现在这套系统面对一些问题:

权限角色太多,分类混乱。有大量临时建立弃而不用的分组;如果员工调换部门,需要逐个删除他已有的权限,再逐个赋予新部门的权限;如果部门领导更换,需要对部门内员工的所有成员的审批对象都进行调整。

为了解决上述问题,我尝试将公司的 组织结构信息引入权限管理的系统。

尽量以部门为单位分配权限,权限角色过多混乱的情况;出现员工部门调动或领导更换,会根据其部门更改自动重新分配权限;对无法按照部门分配的功能采取原有的权限分配模式,通过给不同的员工分配不同的角色实现,保证灵活性。

从上述的思路出发,我定义了新的权限管理需求。新的权限管理分为 部门权限制度和 非部门权限制度两种:

1、部门权限制度

部门权限分组默认按照组织结构图。

按照小组设置部门,部门分管理者权限和默认权限两种,默认权限为部门管理权限的子集。

若组织架构中的小组设置了管理者,则管理者默认拥有管理者权限。除管理者外,所有人加入小组后默认拥有默认权限。

(2)管理者权限包括

部门权限维护类:新建子权限组、默认权限维护、打破权限集成等权限(可以分配给部门领导使用,也可以掌握在超管手中统一分配) 审批类:所有报销、请假和购票的申请(若小组没有设置管理者,则小组成员所有审批事宜由上级层级中的管理者负责 ) 职能类:单个部门的全部权限

(2)权限维护类权限详细介绍

子权限组:部门内可以根据员工设置子权限组,根据子权限组,分配部门权限;默认权限维护:增删进入部门所默认拥有的权限;打破权限继承:使某位员工失去默认拥有的权限,为其单独分配权限。

2、非部门权限制度

组织方法参照原有RBAC权限管理;

超管可以为单个员工或小组开启非部门权限。

可以为非部门权限设置有效时间段;若员工调转部门,则所有非部门权限默认失效,需要超管审批以后方可重新生效。

这套规则可以基本解决原来的权限与部门没有关联的问题,以及权限分配混乱难以管理的问题。这仅仅只是产品从业务角度梳理出来的需求,具体实现还需要和开发商量以后解决。而且要真正能够落实实现还需要很漫长的过程。

这次设计方案给我最大的体会就是,设计复杂的功能最有效的手段还是 从具体是使用场景出发,使用场景决定业务逻辑,业务逻辑决定功能逻辑。我在最初设计的时候执着于寻找成熟的权限管理模式套用,后来发现这样生搬硬套不能提升后台权限分配的效率。在过后的几个月工作中,我接触到了不少分配权限的实际问题,比如不知道分权限给谁,或者分配出去的问题没有办法管理的问题。这些问题直接启发我引入了公司组织架构的概念,也便有了这套方案。

所以, 产品的设计与实现都服务于使用场景,才是真正好的产品,这一点对业务为导向的后台产品至关重要。与大家分享,也请大家多提意见。

了解更多

一直在说软件开发,软件开发分哪些方向?

有很多方向,下面给你列几个常见的:

1. 桌面程序:Java、C++、C#、VB、C均可。
2. 网站服务器端开发:JSP(Java语法)、PHP、ASP(C#语法)、Web App框架等
3. 网站客户端:HTML、CSS、Javascript、Flash等等,小程序用的便是以javascript为基础的应用架构
4. 智能手机程序:安卓使用Java,iPhone使用Objective-C
5. 底层、工具开发:C、C++,如:操作系统开发使用c,android系统底层是用c++。Linux系统等。
6. 多功能脚本程序:Python、Perl、Ruby等等
7. 人工智能:Prolog、PDDL
8. 工业控制:C、PLC、汇编
9. 通用应用数据交换处理技术:标记语言XML/XPATH/XSLT、JSON、YAML等等
10. 数据库: SQL/PLSQL
11. 嵌入式开发:java,OBJECTS-C,C、C++
12. 游戏开发:网页游戏可以用脚本语言javascript,python,后台可用Java,C#。 但PC上的大型游戏一般需要c++或C了。 特别的是,如果你会涉及IOS平台,用的是object-c。
13. 企业级应用开发:Java企业级标准。桌面的用VB ,VC ,C++, C#

社会在不断进步,开发语言也不断变化中。要跟上变化,就必须不断地学习。

了解更多

类型对照表

类型对照表:

Win32 Types
CLR Type
char, INT8, SBYTE, CHAR 
System.SByte
short, short int, INT16, SHORT
System.Int16
int, long, long int, INT32, LONG32, BOOL , INT
System.Int32
__int64, INT64, LONGLONG
System.Int64
unsigned char, UINT8, UCHAR , BYTE
System.Byte
unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t
System.UInt16
unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT
System.UInt32
unsigned __int64, UINT64, DWORDLONG, ULONGLONG
System.UInt64
float, FLOAT
System.Single
double, long double, DOUBLE
System.Double

了解更多

C++与C#类型对应关系

c++:HANDLE(void *) ---- c#:System.IntPtr

c++:WORD(unsigned short) ---- c#:System.UInt16

c++:DWORD(unsigned long) ---- c#:System.UInt32

c++:结构体 ---- c#:public struct 结构体{};

c++:结构体 &变量名 ---- c#:ref 结构体 变量名

c++:结构体 **变量名 ---- c#:out

c++:GUID ---- c#:Guid

c++:UINT8 * ---- c#:ref byte

c++:char*/void*(指向一个字符串) ---- c#:string

对于结构体中的指针数组,对应于C#中的IntPtr[]类型,如:   

int * a[] -------------- IntPtr[]a

了解更多

只有2%站长知道的打造关键词库提升排名策略

提升排名一直是个老生常谈的话题,98%的站长都知道关键词优化,但是你优化的关键词是你自己建立的你网站的关键词库还是已经存在的网络形成的关键词呢?你的网站是否有专属于你的品牌词?带着这样的问题,菜鸟站长家园站长和你一起学习只有2%站长才知道的打造关键词库提升排名的策略。

第一,建立关键词库有哪些作用?

1. 确定网站优化的方向,指导内容更新

(1)每个网站都有它的核心内容和辅助内容,网站做关键词优化的时候,大多数站长或者SEOer在做SEO的时候,优化的都是核心关键词,也就是网站的主要关键词。比如你是做产品的,假设是压缩机,那么你网站的主要关键词就是压缩机。

(2)如果你的网站的关键词仅仅局限于少量的核心词,那么你的关键词覆盖率肯定是不够的。什么是关键词覆盖率?假设互联网上有关“网站优化”的关键词有100个,而你的网站的关键词仅仅只有网站优化,网站优化方法,网站优化技巧,菜鸟网站优化等等相关词,假设是10个,那么你的网站关键词“网站优化”的覆盖率仅仅只有10%。事实上,绝大多数站长在管理网站的时候,网站关键词甚至都不到十个,那么用户搜索关键词的时候,有的关键词你的网站没有的,你就失去了大批的流量,你的网站竞争力就不够!请记住关键词覆盖率P=网站关键词/相关关键词(拓展关键词)

(3)给网站建立了关键词库,我们就可以有针对性的优化网站关键词,从而指引网站内容的更新。在网站内容每次更新的时候,更新的文章内容就需要出现网站的关键词,如果没有出现你网站的关键词,更新就没有意义。添加的关键词不要太多,一两个就可以,一个关键词优化好了,就会获得很大的内容价值。维护好这些关键词,你的关键词排名就会稳步上升,整体排名也就会慢慢上来了。关键是要添加的合适,不要硬生生加进去,要显得自然。具体加几个关键词没有规定,只要全文流畅自然,不显得突兀即可。

(4)除了核心关键词的优化,要注意拓展关键词,还要抓住一些相关词,长尾关键词,有时效性的关键词等,来丰富你的关键词库,增加你的关键词覆盖率。

2. 相关性建设,指导内链的建设

(1)这个问题只说可能说不太清楚,我们举个例子来谈。假设关键词就是“关键词”,那么关键词排名,关键词分析,关键词优化,关键词排名技巧,关键词排名方法等等,这些词都是具有相关性的,都可以放到我们的网站去,这就是相关性建设。

(2)相关性关键词,很适合内链建设。这里我们不建议放自动链,自动链容易导致关键词过多,这样显得就很不自然,不合理。什么是自动链?有的网站大家会发现,只要文中出现某个关键词,该关键词就会自动添加超链接链接到一个指定的网址。假设我设置关键词是网站优化,它的链接地址是C,那么文中一旦出现网站优化字样,该字样就会自动添加链接指向C位置,这就是自动链。我们提倡自然添加内链,要添加有针对性的内链,这样才更有价值。

3. 关键词分析,挖掘黄金关键词

(1)黄金是不是很有价值的?我们所需要的关键词不是随意堆砌,也应当是有价值的,是有竞争度的,我们称之为黄金关键词!为什么要挖掘黄金关键词?有的核心关键词过于广泛,不具有竞争度,比如你百度一下关键词百度,搜索结果超过了100000000完全饱和了,这样的关键词就是无意义的。因此,我们需要挖掘属于自己网站的黄金关键词。

(2)如何分析关键词的竞争度?

a.看百度索引量

你的关键词,百度搜索的时候最好搜索结果还没有达到饱和状态,比如搜索压缩机,结果是多少,搜索深圳压缩机,结果又有多少?如果搜索结果没有达到饱和甚至不是很多,这样的关键词就是具有竞争度的。

b.看关键词转化率

假设A关键词带来的IP是200,转化率接近30%,B关键词带来的IP是10,转化率接近42%,那么显然后者的价值就大,我们需要优化的关键词就是B。

第二,词库建立的步骤

1、关键词的挖掘——包括主关键词、一次扩展、二次扩展

如何挖掘关键词?

我们可以通过百度推广助手挖掘,或者通过百度下拉,搜索, 用户搜索习惯以及组合关键词等进行挖掘。

举例:假设优化SEO培训(假设核心主关键词),我们进行扩展:

拓展后大家会发现,我们的关键词还是很丰富的。很多站长之前不了解,只知道优化核心关键词,而我们90%的流量是来源于长尾关键词的。

2、关键词分类——按类别、按价格、按价值、按时间

比如你网站的栏目,就是分类的,大多数都是按分类设置的栏目,用关键词做栏目。有的是商城类的网站,也有按价格的,主要还是栏目分类

3、关键词库维护——删减、分析、覆盖率、内链的支撑

定期检查关键词库,用户搜索降低甚至不搜索的关键词,我们要进行删减,尤其是时效性的关键词,需要注意。

4.扩大关键词覆盖率?

上面我们解释了关键词覆盖率P=网站关键词/相关关键词(拓展关键词),假设我们的词库有200个关键词,近期优化了20个,还有180个没有优化。等到这20个稳定了,我们为什么不去优化那剩下的180个呢?再选20个优化,以此类推,我们的关键词库就会不断丰富和稳定,关键词覆盖率也就越来越大。其次就是内链的支撑——相关关键词之间做内链,这个之前讲过不再赘述。

第三,利用词库提升排名

1.黄金关键词优先策略

首先我们要看有竞争度的关键词,竞争度上面才提到的不再多陈述。假设你搜索的关键出现加过的网站如果关键词都出现在首页,说明关键词竞争度相当大,竞争度相当大的显然不容易做,那么我们就考核关键词,看排名首页的,看建站时间,外链数量,收录数量等,找竞争度少的关键词进行优化,这样更有利于网站排名。

2.高度相关内链建设策略

什么是高度相关?比如SEO优化技巧和SEO优化策略以及深圳SEO三个相关词,显然前两个是高度相关的。通俗的说,就是2个词基本一个意思就叫高度相关。高度相关做内链,可以很好的提高用户体验,也有利于网站整体关键词的优化,从而提升排名。

了解更多

开源软件开发项目管理软件

最近总为项目怎么管理费脑筋,每个流程和细节都得记录和处理,所以结果就是找来了一些开源的、功能全的软件来了,做下记录,各位有什么不同软件推荐的也可以在博客留言讨论。

 

Redmine
Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。

TeamLab

TeamLab 是一个免费开源的商业协作和项目管理的平台。TeamLab 主要功能包括:项目管理、里程碑管理、任务、报表、事件、博客、论坛、书签、Wiki、即时消息等等。

采用.net开发,目前版本6.5,编译、安装、部署与测试方法:

1、打开redistributable/asc文件夹,运行buildanddeploy.bat文件。2、根目录下会看到_ci文件夹下多出一个deploy文件夹3.进入到serverice文件夹下,运行TeamLabSvc.exe。4、一切完成后,打开IE,输入http://本机IP:8082,应该可以看到登录界面了。
5、修改默认端口可以在teamlabsvc.exe中进行配置

 

Endeavour Software Project Management

JAVA开发,(中文:奋进号项目周期管理系统)是一个功能丰富基于Web的软件项目管理工具。Endeavour适合用来管理大规模的迭代和增量企业系统软件项目,主要功能包括:用例管理、迭代开发、项目计划、需求变更管理、缺陷跟踪、测试用例、文档管理和其他功能等

Project-Open

project-open采用TCL开发的基于Web的项目管理系统,它能帮助你的业务涵盖领域,如客户关系管理,销售,项目规划,项目跟踪,协作,时间表,发票和付款等。

功能包括:

◆ 项目/方案
◆ 甘特图
◆ 项目模板
◆ 项目计划
◆ 项目跟踪
◆ 项目报告
◆ 风险管理
◆ 财政管理
◆ 时间表
◆ 项目管理
◆ 定购单
◆ 发票和付款
◆ 人力资源
◆ 雇员薪水表
◆ 查询管理
◆ 客户
◆ 新闻
◆ 讨论
◆ 聊天
◆ 维基
◆ 事物


Project.net

Project.net是一套强大、可扩展、可定制基于Web的项目管理系统,采用java开发,结构定的比较大


Plandora

Plandora 是一个需求变更和项目管理平台,采用甘特图进行任务计划,项目周期存储在知识库中


Onepoint Project

Onepoint Project代表了一类新的项目领导软件解决方案,不再让你在易用性和功能性的选择上左右为难。此外,它的不同的版本能满足您的需求和业务的规模。

功能和特点
减少项目风险:通过集成解决方案提高可用性
最小的项目管理工作:管理项目模板和团队
增加项目透明度:通过特设的监测,计划与实际的比较
大大减少成本:通过它减少风险和管理,而且增加透明度

 

 


eGroupWare Community

已经收费

 

zentaopms

国产开源的项目管理软件,资料很多


dotProject

DotProject是一个在1996年左右,基于Web,强大,小巧.被翻译为了大约40多种语言,应用于100多个国家, 只要能够跑AMP的OS,都可以(AMP指Apache,Mysql,PHP),它包含的模块有:公司管理,项目管理,任务进度跟踪(运用甘特图),论坛,文件管理,日历,通信 录,备忘录/帮助桌面,用户与模块的权限管理,主题管理。并采用模块化设计以便于扩展。

 

 最后,还推荐一些更多的文章,大家一起去研究下。

一个国外统计c#各类开源项目的网站:http://csharp-source.net/

国内有人统计的c#开源项目:http://alance.iteye.com/blog/693987

了解更多

C#开源项目介绍

一、AOP框架
        Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发 人员提高开发效率。
        NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于Mono C#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NKalore兼容公共语言规范CLS(Common Language Specification),它可以在任何.NET开发环境中使用,包括微软的Visual Studio .NET。


        PostSharp读取.NET字节模块,转换成对象模型。让插件分析和转换这个模型并写回到MSIL。PostSharp使开发程序分析应用程序容易得 像分析代码规则和设计模式,它使程序开发的思想变革为面向方面软件开发(AOSD/AOD)思想。
        AspectDNG的目标是为.NET开发人员提供简单而功能强大的AOP-GAOP实现。它效仿java下的开源工具AspectJ 和 Spoon,成熟程度也很接近它们。
        RAIL(Runtime Assembly Instrumentation Library) 开源项目可以在C#程序集加载和运行前进行处理控制调整和重新构建。C#在CLR中,我们已经能够动态加载程序集并且获得程序集中的类和方 法,RAIL(Runtime Assembly Instrumentation Library)的出现填补了CLR处理过程中的一些空白


        SetPoint是一款.NET框架下的全功能(full-featured)AOP引擎.它着重为称为语义切点(semantic pointcuts)的定义依赖RDF/OWL的使用.它的功能为一个IL-level,highly dynamic weaver&LENDL,一个引人注目的定义语言、、、、、、
        DotNetAOP为 CLR language提供AOP 框架基础属性。
        NAop是一个DotNet下的AOP框架。
        AspectSharp是DotNet下的免费AOP框架,它以Dynamic Proxies和XML作为配置文件。
二、Ajax框架
        Ajax.NET Professional (AjaxPro)是最先把AJAX技术在微软.NET环境下的实现的AJAX框架之一。它在客户端脚本之上创建代理类来调用服务器端的方法。
        MagicAjax.NET是一款在ASP.NET下创建Web页面提供AJAX技术的框架。它使开发人员很容易把AJAX整合到他们的页面而不需要替换 ASP.NET控件或自己写javascript脚本代码。
        Anthem.NET是为ASP.NET开发环境提供的开源AJAX工具包,它可以运行于ASP.NET 1.1和2.0。
三、工作流(workflow)
        Workflow.Net是使用微软.Net技术基于wmfc标准的创建工作流引擎。
        NetBPM是JBpm移植到.net平台下的一款开源工作流软件。NetBpm可以很容易和.Net应用程序集成在一起,可以创建,执行和管理工作流程 序。
        Bpm Tool支持将业务模型转换成软件模型。业务开发人员可以使用模型驱动的方法设计,实现,执行和跟踪业务流程。因此开发人员能够更容易的关注业务逻辑的变 化。
三、文本编辑
        FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的桌面文本编辑器的许多强大功能。它是轻量级且不必在客户端进行任何方式的安装。
        FreeTextBox 是一个基于 Internet Explorer 中 MSHTML 技术的 ASP.NET 开源服务器控件。这是一款优秀的自由软件(Free Software),我们可以轻松地将其嵌入到 Web Forms 中实现 HTML 内容的在线编辑,在新闻发布、博客写作、论坛社区等多种 Web 系统中都会有用途。
        VietPad是一个功能完整的跨平台的Java/.NET的Vietnamese Unicode开源文本编辑器。支持打开,编辑,打印,转换,排序,和保存基于文本的Unicode格式的Vietnamese文件。
        NetSpell是一款.NET框架下的开源拼写检查引擎。
        PPC_edit是一款应用在Pocket PC上的开源文本编辑器,它支持TXT, RTF, HTML, WordML, DocBook 和 ZIP格式的文件,屏幕上会显示国际标准的软键盘。
四、博客(Blog)
        NovaShare是一款Blog引擎,它使你创建基于交互式的web的新闻和论坛网站,很像WonkoSlice或Slashdot。管理员可以发布文 章和发起投票,浏览者可以创建用户帐号,发表议论等等。
        dasBlog是从BlogX 网上日志引擎发展而来。像Trackback ,Pingback 一样增加许多附加的特征,有完整的Blogger/MovableType API支持,API注释,完整的Radio-style模板定制,支持Mail-To-Weblog/POP3的附件和内嵌图片,基于WEB的 DHTML,OPML,配置的编辑器。
        DotText是一个被使用了数百个blogs的强劲的blog引擎。这是一个N-tiered应用的例子。
         tBlogger是一个C#开发的完整的blog网站程序,使用XML配置。
五、 系统构建

        .NETZ是一款免费开源工具,它可以压缩和打包微软 .NET 框架可执行文件(EXE, DLL)以使他们更小。更小的可执行文件占用的磁盘空间较少且因为读取文件时对磁盘的访问较少而使读取数度更快。它和PE(portable executable)打包工具不一样,.NETZ是使用 C# 编写的存粹的 .NET 解决方案。.NETZ可以用来打包几乎每一种 .NET 支持的语言编写的程序。.NETZ支持 .NET EXE 和 非共享(non-shared)的 DLL 文件。压缩过的程序能以相同的方式解压缩这些对最终用户是透明的。
        NAntContrib为NAnt提供定制任务的工具。
        Prebuild是XML驱动的一款跨平台pre-build工具,使开发人员很容易就可以为IDE和.NET开发工具生成项目或构建文件。它支持 Visual Studio .NET 2002, 2003, 2005, SharpDevelop, MonoDevelop 和 NAnt。
        BusyBeeBuilder是.NET平台下功能强大,易于使用,可扩展的开源构建自动操作工具。
        Draco.NET 是 Windows 服务应用程序。它的设计使其容易持续的集成新特性。Draco.NET监视你的源代码储存库。当探测到你的项目有变化时自动重新创建项目并把包含变化列表 的创建结果发送到你的Email。
        Build Studio为软件的自动构件处理提供了一套完整的解决方案。
        CruiseControl.NET是.NET平台下的一款整合服务器。
        NAnt类似Apache项目下的Ant,是.Net下的开源构建工具。适用在自动编译.NET应用的场合,如.NET项目的每日构建(nightly build)。
五、图表制作

        ZedGraph是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。它功能完整且有详细的功能自定义,不过 使用默认的选项就足够好用了。一款类似 PieChart, StackBar, LineChart的C#开源图表组件。
        NPlot是一款.NET下的开源图表类库.它值得称道的地方是优雅且灵活的API设计.NPlot包含了Windows Form控件, ASP.NET控件和一个创建Bitmap图片的类。还有一个可用的GTK#控件。
        XSCharting是C#开发的图表组件,提供了多种多样的图表选项。
        DaveChart是一个免费的DotNet类库。
        NChart 提供了很多值得应用在商业,教育等多个领域的2 D图表。
六、聊天系统

        Dot Net Chat server是基于DotNet框架开发的聊天服务器和客户端项目。
七、内容管理系统(CMS)

        Ludico是C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一个所见即所的(WYSIWYG) 的编辑器等。
        mojoPortal是一款C#开发的面相对象网站框架,它可以运行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平台上。
        Cuyahoga是C#开发的灵活的CMS / Portal 解决方案。它可以运行于Microsoft .NET 和Mono 平台,支持SQL Server, PostgreSQL或MySQL作为底层数据库。
        Umbraco是一款在.net平台下C#开发的开源内容管理系统,该系统效率,灵活,用户界面都不错。
        Kodai CMS是.NET平台下的一款功能齐全的内容管理系统。
        Rainbow项目是一款使用Microsoft''s ASP.NET和C#技术开发的有丰富功能的开源内容管理系统。
        NkCMS是使用ASP.net和Sql server 2000开发的内容管理系统。
        Amplefile是一款内容管理系统,是.Net环境下的windows应用程序,使用了.Net remoting.
        Go.Kryo是一个用ASP.NET(C#).NET 实现的简单的内容管理系统,后台数据库使用Microsoft SQL Server 。
        ndCMS是 ASP.net (C#)下的一个内容管理系统。它提供了用户管理,文件管理,一个WYSIWYG编辑器,模板管理,拼写检查和内置的http压缩。ndCMS的目标是提 供一个简单而快速的方式部署.Net站点以节省你的时间和金钱。
八、代码覆盖 (Code Coverage)

        NCover是.NET框架下的C#版本代码覆盖分析工具。NCover可以对程序进行 line-by-line 的代码覆盖统计。
九、论坛系统

        YetAnotherForum可以作为ASP.NET开发的网站的论坛或是留言板。它使用MSSQL作为底层数据库。
十、开发工具(IDE)


        SharpDevelop是一个DotNet平台下的免费开发工具,支持C#和VB.NET。


        MonoDevelop是可以支持C#和其它符合.Net规范的开发语言的IDE。


        C# Studio是 C#/Mono/GTK# 开发者的一个简单的IDE。


十一、安装制作


        izfree是一套套免费的工具用于帮助创建使用Microsoft''''s Windows Installer 技术的安装程序。使用izfree你可以为你的应用程序制作强劲的安装程序。


        Windows Installer XML (WiX)可以重XML源文件创建Windows程序安装包的工具集。它支持命令行方式,开发人员可以把结合它来创建MSI和MSM安装包一个可以和商业 软件安装产品相比的开源打包工具。


十二、IoC容器


        Spring.net是从java的Spring Framework移植过来的。java的Spring包含了许多功能和特性,在当前的Spring.net都有提供。Spring.net最初发布的版 本包含了一个很有特色的IoC容器。


        Castle是一组应用开发的工具,内含一个简单的IoC容器。


        StructureMap是.NET环境下的一个轻量级依赖注入工具,StructureMap也是一个灵活的、可扩展的通用“插件”机制的.NE


十三、Bug追踪


        BugNet是一款C#编写的基于Web的开源Bug跟踪系统。


        BTsys是一款轻量级的开源桌面Bug跟踪系统,是C#和ADO.NET实现。一个Bug记录和跟踪的解决方案,支持文件附件和注释历史。


        BugTracker.NET是使用ASP.NET 和 C#开发的基于web的开源Bug跟踪系统。需要SQL Server 或 MSDE支持。它安装简单,容易使用,功能强大。


        BugBye是一款ASP.NET和C#开发的基于web的Bug跟踪系统。


十四、日志工具


        log4net是一个可以帮助程序员把日志信息输出到各种不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输 出,提供了比.net自己提供的debug类和trace类的功能更多。log4net是从java下有卓越表现的log4j移植过来的。它是 apache基金资助的项目的一部分。


        NLog是C#编写的开源日志类库,它的设计思想是使其简单而灵活。NLog让你处理诊断的日志消息,用相关信息扩充消息,依照你的选择格式化日志消息和 把日志消息输出到一个或多个目的地。


        LogThis是为.NET应用程序提供的一款C#开源日志框架,它可以嵌入到应用程序之中。


        AppLog是一个简单的应用日志工具。它使用C#开发,且使用ByteFX MySQL 数据访问库.。


        C#开发的可扩展日志工具,有高级消息队列支持,可以异步使用。


        CSharp Logger是apache继log4net项目后设计的又一个日志工具。它用来向Windows的事件日志写入debug、info、warn和 error四个等级的信息。


十五、网络客户端


        .NET FTP Client是C#编写的开源类库。


        .NET Telnet是微软.NET Framework下的C#开发的开源telnet类库。它的灵感来至Java Telnet Application。


        metro这个项目是C#编写的类库,它提供了一套丰富的类使开发IP version 4, TCP, UDP and ICMP等工作更容易。它包含了有很有用的工具如包嗅探器,网络分析工具例如路由跟踪,ping等。


        LJ.NET是LiveJournal站点的客户端。它为LJ在线日志服务提供了简单而强大的用户接口。


NET VNC Viewer 是一款完全用C#开发的开源VNC观察器。它兼容Smartphones, Pocket PC和Windows的电脑(.NET CF or .NET Framework)。它比起其它观察器的优点是可以在Pocket PC上全屏显示而且可以旋转屏幕。


        GVDownloader允许你从google videos, metacafe, putfile, youtube, break.com 和更多的地方快速下载内含的视频和多媒体。它的包含一个强劲IE插件和位于你系统托盘的独立程序。


        DotNetOpenMail能够使你在微软.net框架开发的asp.net, WinForm应用程序发送Email。它是C#编写的开源组件,它不需要使用System.Web.Mail类库就可以容易的创建带附件HTML和 Plain-text的Email。程序员不需要知道很多相关的细节就可以使用不同的字符集或不同的MINE编码来创建 multipart/alternative,multipart/related和multipart/mixed的MIME消息。


        DotMSN是一款独立的开源类库,它不需要和官方的MSN Messenger交互,因此不必安装MSN Messenger就可以使用DotMSN和MSN Messenger服务通信.DotMSN是C#编写的,所以.NET环境支持的语言都能够使用.DotMSN类库使用简单而且实现方便。它灵活,坚固, 轻量级利于整合到任何应用系统.使用DotMSN的应用系统能实现从创建消息机器人到自定义客户端等各种不同的功能.如果你的应用程序需要和 Messenger服务通信,DotMSN是一个不错的工具.


        SharpSSH使用C#实现了SSH2协议,它支持SSH, SCP 和 SFTP.


        OpenPOP.NET一组和POP Servers通信的.NET类库。


        IceChat是为连接多样的IRC Servers设计的Internet Relay Chat Client。


        lphant是为edonkey/emule开发的开源客户端程序。


        .NET FTP Client C#开发的类库。


        OpenSmtp.net 是 C# 开发的开源SMTP组件。它不依赖.NET Framework 的System.Web.Mail 包中的类。允许开发人员使用不同于MS SMTP的SMTP 服务器且提供了web service而可以通过HTTP发送email。


网络服务器


ODC(#)H是一款C#编写的开源hub software,它功能强大,消耗的资源少且支持插件功能。


Dawn of Light (DOL)是第一个开源的Dark Age of Camelot (DAOC)游戏服务器,你可以创建自己的服务器且自己设计游戏内容。DOL使用.Net Framework框架的C#编写,使用XML和MySQL存储数据,支持Windows和Mono平台。


NeatUpload可以让ASP.NET开发人员把磁盘上的文件通过流的方式上传并且可以监视上传进度。它是开源的且在 Mono''s XSP/mod_mono和微软的ASP.NET下运行得一样好。包含2个自定义控件:*用户可以通过INPUTFILE选择一个要上传的文件。


ProgressBar可以用进度条方式或弹出窗方式显示上传进度。当JavaScript可用时ProgressBar是用类似AJAX 的无刷新方式展现,但也允许JavaScript不可用的用户见到上传进度。


NMail ,C#开发的开源程序,提供SMTP 客户端和服务器, POP3 和 IMAP4 服务器。


ftp://ftp.net/是使用C#编写的开源多线程FTP程序。


CSharp Email Server C# Email Server是 Java Email Server (JES) 的C#版本。


PDF类库


PDFsharp是一款可以让.NET框架支持的任何语言很容易的创建PDF文件的类库。


ASP.NET FO PDF 是一款C#编写类似于ASP.NET服务器控件的控件。它接受DataTable 和一些其它参数来创建XSL FO,并使用NFOP (Apache FOP Port in J#) PDF Formatter来绘制一个类似PDF Report 的DataGrid 。今后将会增加更多的标签来可以生成XSL FO 。


Report.NET 开源类库包含了生成精确PDF文档的类。它是.NET平台下的C#编写的,可以帮助你创建简单的灵活的PDF文件。你可以从任何ADO.NET的 DataSet取得数据来创建PDF文档。ASP.NET可以用Report.NET来创建动态的PDF响应页面。


SharpPDF是可以用来简单的创建PDF文件的C#类库。它创建的文件百分白兼容PDF格式。


iTextSharp是一款开源的PDF操作类库,使用它可以快速的创建PDF文件。http://hardrock.cnblogs.com/ 是一个关于 iTextSharp的中文Blog。


持久层框架


NHibernate是一个面向.NET环境的针对关系型数据库的对象持久化类库。 NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。 NHibernate从数据库底层来持久化你的.Net对象到关系型数据库。NHibernate为你处理这些,你不用自己写SQL去数据库存取对象。你 的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理 数据的时间. NHibernate可以帮助你消除或者包装那些针对特定数据库的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。因此对于那些在 基于.NET的中间层的应用中,它们实现面向对象的业务模型和商业逻辑的应用,NHibernate是最有用的。


FileHelpers Library是一款C#编写的开源 .NET 类库。它使用简单,很容易就可以从固定长度文件或界定记录(CSV)读/写数据。它也支持从不同的数据存储格式(Excel, Access, SqlServer)导入/导出数据。


Websharp是国人开源的一款开源持久层框架,它的目标是设计一个基于.Net的通用的应用软件系统的框架,以简化基于.Net平台的 企业应用软件的开发。目前,Websharp关注于企业应用软件的以下几个方面:1、数据库访问 2、 O/R 映射 3、 AOP 4、 分布式访问


ObjectBroker是.NET平台下的一款开源O/R映射框架。它支持对象缓存,1:1, 1:n 和 m:n的关联映射等特性。


Gentle.NET是一款开源的与关系数据库(RDBMS)无关的对象持久层框架,可以自动生成SQL和对象结构。它拥有一个SQL工厂 用来创建自定义查询、DataView构建助手和卓越的性能和完善的文档。


Ubik是C# 2.0下的ORM持久层框架,当前是WinForms应用程序开发提供的.它支持OPath的子集而可以进行面向对象查询,且包含一个网络事件系统.


NDal是一个数据提取层(DAL)框架,它可以运行在.NET和Mono环境下。


Persist.NET是C#编写的一款完整的持久层框架。


ObjectBroker是.NET平台下的数据库对象/关系映射(O/R Mapping)框架。


iBATIS.NET帮助你的应用系统创建更好的持久层框架。


Advanced Data Provider是为ADO.NET提供的动态数据提供者。可以让应用程序透明的访问不同的ADO.NET 数据提供者。


OJB.NET是一款.NET平台下的对象/关系映射(O/R Mapping)工具。


门户系统


OmniPortal基于一种web-portal-kernel(Web门户核心)的思想而构建的开源基础框架,它解决了安全控制、主题 和本地化等。你可以基于 OmniPortal 来更容易的创建任意的Web应用系统(例如 ERP, CMS, CRM)。它支持Mono 和.Net 。对于Web开发人员来说,OmniPortal为他们提供了一款优秀的二次开发基础类库。


SharpNuke.NET是一款C#开发的基于 ASP.NET 的开源 Portal/CMS。最初是从流行的VB.NET开发的web portal系统DotNetNuke移植过来的的。以后的版本将会兼容 Windows和 Linux Mono。


Personal .NET Portal是一个基于Web的个人门户系统。它试图提供一种简单的方式建立个人网站,页面使用标签和模板创建。


My Community Portal提供了一个统一的Internet门户,作为论坛,群组,聊天,你自己的Email,搜索引擎,网络目录,个人主页,投票还有更多的功能入 口。


剖析工具(Profilers)


Prof-It是一款独特易用的C#程序剖析工具。当保持对一个最小量的源代码的探测时,它为每一条语句测量执行频率。


NProf不仅仅是成熟的剖析程序,也是一套可以用来创建其它功能齐全的剖析程序的完整API,以及用可视化的工具扩展的默认GUI。


NProfiler,.NET平台下的一个应用程序剖析工具。


项目管理


SharpForge支持协作多个软件项目的开发和管理,它为你的团队提供类似 SourceForge 和 CodePlex的功能。SharpForge是C#开发的.NET 2.0开源项目。


User Story.NET是一个Extreme Programming 项目。


RSS和RDF工具


Rss Bandit是C#开发的开源RSS阅读器,它内建多国语系,支持Atom 1.0以及其他各种的RSS feed格式。它画面漂亮,拥有分页浏览功能,软件细部设置弹性度高。它的操作画面直观简单易懂,有一个很好的Command模式和ListViewEx 来使用,可让使用者很快的上手。


iPodder.NET是一款C#编写的开源媒体收集器,它能自动帮你从互联网上下载音乐,能帮你轻松地从成千上万的音乐中选择你喜欢的。 用它设置好订阅RSS feeds后,只要节目一有更新,它就自动下载了,你不必大量的浪费时间自己手工下载。它还整合了iTunes,创建播放列表和iPod同步功能,你可以 用Apple iTunes或Media Player播放,也可以把音乐导入到你的iPod或其他MP3播放器中。


FeedExpress主要是让你订阅一些RSS/RDF资源,知名的如FeedExpress里的Subscriptions。它和 Outlook Express让你订阅一些新闻组是一样的。


RSS.NET是一款操作RSS feeds的开源.NET类库。它为解析和编写RSS feeds提供了一个可重用的对象模型。它完全兼容RSS 0.90, 0.91, 0.92, 和 2.0.1等版本。


GtkSharpRSS是C#开发的开源RSS和RDF客户端,它用于 Mono, Gtk#, 和 RSS.NET。它也可以通过内嵌于Mozilla的窗口来显示内容。


Atom.NET是一款完全使用C#开发的开源类库,它的目标是提供便捷的方法来操作Arom Feeds。它提供一个对象模型来写入和解析Atom Feeds。它只兼容0.3Atom规范,可以运行于微软.NET 1.x,Mono 0.29 或更高版本。


NRss是为微软.NET框架和Mono下提供的开源类库,它读取RSS Feeds元素然后以树型结构来展现对象关系。


Aggie是一个新闻收集器,它是桌面应用程序,可以下载最新的新闻并通过web页面的形式呈现。


mail2rss是.NET下的 web service,它在你请求时检查你的电子信箱并返回包含电子信箱里的消息的 RSS feed。它是完全用C#开发的开源项目,没用使用任何第三方控件。


规则引擎


NxBRE是.NET平台下的一款开源轻量级的业务规则引擎(aka Rule Based Engine),它由正向串行的推理引擎(forward-chaining inference engine)和XML驱动流控制引擎(XML-driven flow control engine)组成.它支持 RuleML 0.9 Naf Datalog 和 Visio 2003 建模。


SRE (Simple Rule Engine)是.NET下的一款轻量级的开源正向串行的推理规则引擎(forward chaining inference rule engine)。它容易理解,可以解决复杂的问题。


搜索引擎


NLucene是Lucene的.NET版本。


DotLucene,Lucene.Net开源项目转向商业化后,DotLucene以Lucene.Net作为基础继续进行开发。


版本控制(CVS)


Porc是为CVS和项目管理工具提供了完整的图形化界面,它在CVS的基础上增加了一些有趣的功能。它是.NET平台下用C#编写的。


Sharpcvslib是C#语言编写的CVS客户端API。当前它为公共CVS命令提供了核心函数。


NetCvsLib是为.NET平台下C#开发的一个CVS客户端。它作为一个单独的程序集而实现,因而可以很容易的集成到其它项目中去。


SQL客户端


SqlBuddy是C#编写的一款用于Microsoft SQL Server和MSDE的开源工具,使用它可以很容易的编写SQL脚本。SqlBuddy提供的功能和查询分析器的目的有些微不同,它倾向于帮助使用者编 写SQL。


QueryCommander是一款开源的Sql editor,模拟微软的查询分析器,Visual Studio的环境类型。QueryCommander的特点包括类似IntelliSense功能,自动注释,xml文档模型,xml2data等。


SQL Buddy是一款有特色的免费MSDE / Sql Server IDE,它是用.NET框架的C#编写。


Database Commander是Windows操作系统下的一款用户界面友好的数据库管理工具。


模板引擎


NVelocity 是一个以 .NET 为基础的模板引擎。它允许任何人通过简单而强大的模板语言来定义对象。


测试工具


NUnit一款单元测试框架,它可以应用于遵循.NET框架标准的所有语言下。NUnit最初是从JUnit移植过来的。NUnit完全使 用C#编写且设计时考虑了多数.NET语言的特性,例如自定义属性和其它反射特性。


NMock是一款.NET平台下的基于动态代理的Mock模拟对象类库,用于C#开发。Mock对象使测试更简单,它测试单个组件或单个类 时不需要其它所有组件真正实现。也就是说我们可以仅仅只是测试一个类,比起测试一个完整的对象关系树更容易查清楚Bug。Mock对象一般用于以测试为驱 动的开发当中。


TestDriven.NET是一款和Visual Studio .NET无缝结合的测试插件。它可以和NUnit, MbUnit 和 Team System紧密结合。


Rhino.Mocks源于EasyMock.Net,它试图提供一种更简单的方法去创建和使用mock objects且使你得到更好的重构支持。它结合了EasyMock.Net和NMock的方式。


Dot NetUnit实现了XUnit 测试框架,是.NET平台下的单元测试组件。


EasyMock.NET是由Java实现的EasyMock到.net平台的一个移植版本的一组类库。它提供了一个简单的方法用来模拟接 口和远程对象。


dotunit是JUnit移植到微软.net平台的测试框架。它可以实现自动化测试。


NUnitForms是NUnit的扩展。它为Windows Forms应用程序提供单元测试和压力测试,可以容易的用它为你的Windows Forms类进行自动化测试。


Web框架


NStruts 是java下大名鼎鼎的struts开源MVC框架的ASP.NET版本,是jakarta struts框架的一部分。


Maverick.NET是从Maverick移植来的.NET版本,是一款开源的 Web MVC框架.它专注于MVC逻辑,它支持丰富的模板和转换技术。


MaverickLite是ASP.Net下的一款简单的开源表现层框架。它在建立在Maverick.Net framework基础上。它使用front controller的方式来处理请求。


Ingenious MVC ,基于.NET 2.0的构MVC结构的应用程序,它包含即开即用(out-of-the-box)的特性支持ASP.NET和Windows Forms应用程序.它也可以在大多数方法中扩展和定制.


Websharp是.NET平台下的一款轻量级应用框架。


Email客户端


GmailerXP是为Google的Gmail服务提供了全套的工具开源程序。在线所能做的GmailerXP都允许用户做,它也整合了 你任何时候在Gmail需要的其它一些程序的特点(GML, Gmailto,等)。


RemoteCalendars是C#开发的为Outlook 2003/2007提供的一款开源 COM-.NET 插件。安装完这款插件后,Outlook的用都可以用Outlook 2003/2007订阅、重新读取和删除远程iCalendar(RFC 2445)。


SharpWebMail是一款C#编写的ASP.NET下的EMail客户端。它通过POP3服务器接收邮件,通过SMTP服务器发送邮 件。它的配置很简单(只需要在web.config 里面做几个设置)。


Web测试


NUnitAsp是一款自动测试 ASP.NET页面的开源工具. 它是从NUnit扩展来的。


Wiki引擎


Perspective是一款C#开源Wiki引擎,它使用户可以很容易的合作进行编辑,链接和共享Web页面,它里面有安全和分级的管理 环境。Perspective居于奇妙的Wiki思想,包含了其它一些有前途且效果好的特性。


DevHawk Wiki是一款.NET平台下由C#实现的开源Wiki引擎。


ProntoWiki是使用VWD (Visual Web Developer)编写的C#开源wiki引擎,ASP.NET 2.0 和 SQLExpress 2005作为后台。Wiki引擎速度快且容易使用,提供了和 rich text editor 一样的文本标记( text markup )功能。它可以自动通过web接口接收图片和文件作为附件。另外,ProntoWiki的特点还有页面可以在贴出或更新之前预览,基于角色的用户认证,使 用 web parts 自定义外观和布局,历史跟踪,和功能查询。


FlexWiki是一款使用.NET技术(C#和ASP.NET)编写实现的开源多人协作的写作工具。


Thufir提供了字处理和文档链接功能。它类似Wiki-Wiki ,且它具有“所见即所得”的界面。它还可以通过和Word交互来利用Word的拼写检查功能。


XML解析


ODF Add-in for Microsoft Word是一款开源的XML转换器,它提供的工具为在 Open XML Formats 和 Open Document Format(ODF)之间转换提供了桥梁。作为第一款这类组件,ODF Add-in for Microsoft Word 2007使你可以在Word里打开和保存ODF文档。


NDigester是Jakarta Commons-Digester 工具的.NET实现版本。提供了完整的对XML文档的处理控制。


SAX.NET是用来操作XML的简单的API。它是从最初在java上被广泛使用的API移植来的。


多媒体工具


FreeImage是为开发人员提供的开源类库项目,它支持多种流行的图片格式(PNG, JPEG, TIFF, BMP等).FreeImage简单,易用,快速,多线程安全,兼容所以32位的windows并且是跨平台的(Linux和Mac OS X).


TVGuide是一款显示通过简单而清晰的接口下载的TV列表的Windows程序。


DirectShow.NET Library 这个类库的目的是使你可以从.NET应用程序内部调用Microsoft''''s DirectShow的功能。它支持Visual Basic .NET 和 C#,理论上应该是可以支持任何.NET语言。


iTunes Agent是和iTunes一起使用的C#开源MP3播放器。它可以使得在播放MP3时,播放列表与MP3自动播放器同步。


MeGUI是一款基于ISO MPEG-4的全面的GUI解决方案。它可以支持使用MPEG-4 ASP (XviD & libavcodec MPEG-4)标准的mencoder,使用MPEG-4 AVC (x264) 标准的x264.exe 或 mencoder,使用(HE)AAC audio标准的BeSweet、Nero AAC encoder和使用MP4 muxing标准的mp4box。


OpenImageManager是一款C#开发的新的开源图片管理器。它基于非常流行的图片查看器ACDSee(TM)的思想设计,它的 功能有缩略图生成,HTML相册生成器,支持10种语言等等。


abrViewer.NET是C#编写的可以批量浏览和输出Adobe Photoshop的笔刷(.abr files)的开源工具。


MeWiG是使用.NET框架开发的Windows下的开源MEncoder(MPlayer的一个组成部分)。你能够转换成几乎任何视频 资源,无需要命令行操作。


VTK.NET是.NET包装的Visualization Toolkit。你可以使用它来编写C#、C++、Visual Basic 或 J#的Windows Forms应用程序。它包含在设计时可拖拽的Windows Forms控件。


SubtitleCreator使你可以为你的DVD创建对白字幕。它拥有先进的同步特性,DVD预览,和一个简单的所见即所得 (WYSIWYG)的编辑器。当然你也能够修改现有DVD的对白字幕的定位和颜色。


Paint.NET是在Windows下使用C#编写的一款出色的开源图像编辑器。


MediaPortal试图帮你把电脑变成一个高级的Multi-Media Center / HTPC。它允许你听你喜欢的音乐&收音机,看你的video和DVD,观看,确定和记录实况电视等其它功能。MediaPortal是开源的系 统,你可以完全免费的获得它。任何人都可以帮组开发MediaPortal 或者根据自己的需要把Media Portal 进行调整。


C#游戏


Exult是可以在现在的操作系统上面运行Ultima7的游戏引擎,它提供了一个地图编辑器和其它的一些工具让你制作属于你自己的模型和 游戏.


Ch2r是第一款为光晕2(Halo 2)提供的开源模型编辑器。


这是一款从在Palm平台上流行的Space Trader游戏移植的Windows版本。


EMU7800是C#编写的一款Atari 2600/7800模拟器。


BooGame是面相对象的 CLS-compliant,开源2D游戏引擎框架。它提供了高级的硬件加速video,audio,keyboard,mouse,内嵌脚本和许多图片 格式。它使用C#开发的,目标是支持.NET 1.1, 2.0 和 Mono 平台。


RealmForge这款开源的.NET 3D游戏引擎前身是Visual3D.NET,它是一套使用C#、 .NET 2.0和XNA进行可视化设计和开发3D游戏、模拟软件和交互式环境的框架和工具集。


Pocket Sudoku是 Pocket PC (Windows Mobile)上的数独(Sudoku)游戏。它可以有五种不同等级的难度来创建数独(Sudoku)迷题,解答正确任何迷题,都会用铅笔标记。


CsGL在.Net框架下为OpenGL 1.1 - 1.4和许多扩展的支持提供支持.


文档工具


NDoc 可以将 C#.NET 编译生成的程序集和对应的 /doc XML 文档,自动转换成如 .NET Framework SDK 类库文档或者 MSDN Library 在线 .NET 类库文档形式的代码文档,让您快速拥有专业级的类库API 文档。


脚本语言


Sharp Vector Graphics (SVG#)是.Net框架下C#开发的文档对象模型。它帮助你在.Net平台上进行SVG开发。


IronPython是.NET平台上的Python的CodeName。它拥有一个完全动态的交互式解释器,可以支持所有的.NET类型 库,并且集成了.NET Framework的诸多优点,甚至可以用Python的类来扩展.NET类。IronPython遵从ECMA的CLI标准(ECMA-335),可以 运行在Microsoft .NET Framework和MONO上。


地理信息系统(GIS)


SharpMap是一款易于使用的地图渲染器,它可以为Web和Windows应用程序渲染GIS数据。SharpMap是使用C#编写, 基于.NET 2.0框架上开发的开源项目。


monoGIS将成为Mono平台下的开源完整GIS。已经发布了internet mapserver,OGC WMS实现和一些工具像空间格式转换。


NASA World Wind 是C#开发的个人电脑上的开源的3D图形虚拟地球系统。它结合了美国国家航空航天局(NASA)从卫星拍摄的图像,这些图像应用于Blue Marble, Landsat 7, SRTM, MODIS 以及其它更多的地方。


其它C#开源项目


DockPanel Suite是一款开源的.Net Windows Forms开发环境下的停靠控件(docking)类库。它模仿Visual Studio .Net的效果开发的。


wx.NET是基于.NET通用语言基础结构 (CLI)的开源项目。它致力于开发一个基于.NET的GUI库,它按照wxWidgets的类层次用C#编写,可以在多种CLI下执行,包 括.NET,Mono,和DotGNU Portable.NET。


MMC .NET类库是为Windows的MMC+Snapin开发提供支持而包装的一套开源类库。


DPAToolkit(Design Pattern Automation Toolkit)是应用设计模式设计应用程序的开源工具包,它有便捷的代码生成,反向工程功能。拖拽(Drag and Drop)方式便捷的创建UML类图。支持为代码生成,反向工程编写自定义插件。


mjbWorld 是一款开源的3D编辑器,它允许用户通过图形界面的选择和拖拽方式来编辑图形。它基于和应用X3D与VRML标准。该软件目的用于利用建立开放免费程序建 立3D世界。同时它也可以用于其他免费开放软件程序之间进行数据交换。mjbWorld有Java, C# 和C++ /Qt等版本。


MonoCalendar是.NET平台下的开源日历程序,它的目的是为Mac平台之外的其它平台提供一款类似iCal的日历程序。


Data Tier Generator是一款微软 .NET平台下的开源项目,它为访问SQL Server 2000而生成存储过程的SQL Server 2000脚本和C#类。这些存储过程包含了Insert, Update, Delete, Select, 根据PK的Select, 根据FK的Select的SQL脚本。


Finisar.SQLite是.NET框架下的一款为存取SQLite-Databases提供的ADO.NET Data Provider。


Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个 支持线性代数的解析器,分析复杂微分,解方程等等功能。


Ascii Generator dotNET (ascgen2)是一款把图片转换成高质量的ASCII字符组合(ASCII art - text)。第一个版本支持变形和粗体字体,和实时调节输出。


GPSProxy是.NET Compact Framework下的开源程序。它通过COM口在Pocket PC之间拷贝GPS数据,可以把GPS数据格式从NMEA 0183转换成Garmin GPS。它是基于.NET Fra的Windows版本。


FOP C# Port这是Apache居于java的 XSL-FO 格式转换器的C#版本。它采用并扩展了XSL-FO标准使FOPs在可以嵌入.NET CLR管理代码应用。

了解更多