
.Net
shanhe
这个作者很懒,什么都没留下…
展开
-
CMPP SP端 C# 实例
//附CMPPClient.cs:/*作者:TNT 时间:2003年12月文件说明:本文件实现SP端的协议开发。*/using System;using System.Security.Cryptography; using System.Net.Sockets; using System.Net;using System.Text; using System.Threading; using原创 2004-07-19 23:03:00 · 18293 阅读 · 26 评论 -
DotText源码阅读(3)-框架配置体系和反序列化
dottext框架配置体系 和反序列化 配置节是一个比较容易混淆人的专题。Dottext的系统环境配置、单独每一个人的blog配置都是通过自定义的配置节实现的,并且dottext自己实现了其中的处理程序(handler)。也就是说,利用asp.net系统的配置文件作为存储机制,加上了单独处理机制,实现了系统的灵活配置。在web.config的根元素configuratio原创 2006-05-05 00:01:00 · 5895 阅读 · 1 评论 -
dotText源码阅读(4)--DTO和数据访问
Dottext中的DTO是一个是怎么实现的呢?这些是作为3层体系的实现内容。DTO的使用很多高人都有自己的看法,争论也不少。不过,我在这里要说的是dottext为什么要用DTO,我理解作者是想通过DTO确保维护3层体系,目的是解耦合各层之间的相互依赖,为各层之间的更新升级预留足够的维护空间。Dottext.Framework.Data. IDTOProvider 定义了关于DTO的接口,这个接原创 2006-05-06 05:26:00 · 6038 阅读 · 1 评论 -
DotText源码阅读(1)-调试
如何调试系统笔者下载的版本是嘟嘟提供的CNBlogsDottext ,关于这个版的说明在:http://forums.cnblogs.com/ShowThread.aspx?PostID=485下载后展开有如下目录存在一个工程文件,是v003版本的工程。因为是asp.net的工程,所以需要配置IIS来确保全部项目夹在成功。具体察看 OtherStuff/安装说明 ,在此列出:1原创 2006-05-04 00:29:00 · 7406 阅读 · 5 评论 -
DotText源码阅读(0)
a) 源代码阅读说明 i. 本源代码源自博客园的CNBlogsDottext,其中有些属于博客园的高手们进行了增补,当然主要是汉化工作。博客园是国内较早能够阅读分析dottext,并成功修改实施的技术组织,做了大量的工作。所以本人在此基础上进行修改,并进行阅读,先感谢他们。原创 2006-05-02 01:41:00 · 13314 阅读 · 6 评论 -
WAP ASP.Net 开发笔记(一)
WAP ASP.Net 开发笔记(一)配置了IIS,,建立了一个asp.net mobile工程,又加上了关于WML MIME的映射条目,满以为可以测试了,于是启动M3Gate,但是失败了,地到的信息为:“UTF-8格式不支持”类的错误,于是检查web.config.的 requestEncoding="utf-8" responseEncoding原创 2005-09-06 23:33:00 · 2980 阅读 · 0 评论 -
NHibernate学习笔记(一)
Nhibernate学习笔记 一- Nhibernate是什么 O/R MAP 是指对象/关系映射,就是将类编程语言同数据持久层的关系框架化的技术。使用O/R MAP后,开发的重点就可以放在业务逻辑上了,这样可提高开发效率。 Hibernate是java开源项目,处理O/R MAP的。 Nhibernate是.net中得开源项目,目的也是提供O/R map解决方案. NH原创 2005-04-07 00:47:00 · 2614 阅读 · 0 评论 -
关于Cookie
关于Cookie的思考Cookie是什么?Cookie产生的背景是源于年代并不久远但是却很经典的HTTP协议在互联网上的急速发展。互联网之所以成功很大程度上取决于传输协议HTTP协议的两大特性:1、 简单。这个没什么可多说的。简单就是美,复杂的东西总是难以流行,想想古语所说阳春白雪和下里巴人就明白了。2、 无状态。无状态意味着服务器可以满足更多次的请求,这在成天嚷着要带宽的互联网发展初期是确保ww原创 2005-07-19 23:07:00 · 4454 阅读 · 0 评论 -
ASP.NET组件设计Step by Step(9)
先来分析asp.net处理一个web请求的过程。学习asp.net技术,除了翻看人家的文档(这是最基本的,知识就是知识,不懂的基本知识无法深入学习),还应当自己学会琢磨,动手实习。当我们从客户端发出一个web请求后,到达web服务器,由web服务器处理或者转给asp.net框架处理。如果不存在web服务器(采用asp.net的缺省web处理),那你可以参鄙人的《CASSINI源代码分析》htt原创 2005-02-22 23:08:00 · 1895 阅读 · 0 评论 -
ASP.NET组件设计Step by Step(8)
控制控件的样式 控件最终通常要生成HTML代码在客户端,这些HTML元素可以采用丰富的CSS样式。你当然可以直接进行CSS 设定,但是asp.net给控件开发者提供了编程方式控制样式的途径。如果对样式无特殊要求,直接继承webControl的样式功能即可,如果需要修改或者扩充继承的样式功能,则需要深入了解控件样式的背景知识WebControl的样式功能全部封装在ControlSty原创 2005-01-30 23:36:00 · 2259 阅读 · 0 评论 -
ASP.NET组件设计Step by Step(5)
控件生存周期 当一个asp.net页面被请求后,一个page实例被生成,开始自己的逻辑,最终返回HTML流给用户端。构成逻辑处理的是page中存在的服务器端控件以及控件间的交互,并且在页面结束前服务器控件们被销毁(视.net的回收策略而定)。那么这些控件在短短的页面处理过程中经历了创建、处理、销毁等到底是如何组织的?这些控件是如何同其他控件交互,如何在多个页面间保持状态的?(这应当是整个控原创 2005-01-23 22:59:00 · 4089 阅读 · 0 评论 -
dotText源码阅读(5)--URLreWrite和Handler
Dottext需要映射全部不存在的文件到blog应用程序,实际上是需要IIS对于该应用下的问不进行处理,而是交给dottext程序处理,而dottext则利用一系列的handler来进行配置,对应不同的文件类型,或者匹配特定的文件,实现整个blog的URL 重写的。 首先,是通过httpHandlers>addverb="*"path="*原创 2006-05-10 18:06:00 · 6270 阅读 · 4 评论 -
DotText源码阅读(7) --Pingback/TrackBack
博客这种服务的区别于论坛和所谓文集网站,很大程度上我认为是由于pingback/trackback的存在,使得博客这种自媒体有可以延展加入SNS的要素。所以分析博客程序,我们需要了解这种协议以及协议的实施细节。 在dottext的源代码中,在发表作品中,我们可以看到有pingback协议的支持,同时在web services的实现中,有trackback协议的实现。至于什么是pio原创 2006-05-17 01:22:00 · 9067 阅读 · 2 评论 -
DotText源码阅读(6) --模版皮肤
我们看到,dottext的个人模版是可以替换的,但显然,这么多套模版不可能每一套都写一个包含界面的程序文件。dottext的作者采用了UrlRewrite来实现模版和换肤,我们分析其原理后,可以明确如何做到为blog增添新的模版,实现站点blog的个性化。说到这个性化,可是web2.0的命根子!就以本人的blog为例来说明吧:假设我们访问http://blog.youkuaiyun.com/shanh原创 2006-05-13 13:51:00 · 5517 阅读 · 4 评论 -
分享CommunityServer(7) --CSModule
CSModule实现的事件监听体系CS里面的CSModule是个什么东东?我们知道,系统大了,必然是比较复杂,系统内部很多事件需要被各个相互联系的模块相互截取,相互了解。我们要针对CS系统做出开发,实际上我们很大程度上是针对CS内部流程执行过程中的大量事件进行面向事件的处理代码编写。譬如,我们要做到系统发生了例外,我们可以敏感接获到,并且需要在特定的“安全区域”进行处理例外;再原创 2007-10-12 23:30:00 · 2938 阅读 · 2 评论 -
分享CommunityServer(6) --JOb
作为一个应用程序,我们有时候希望代码的执行不是完全由web用户的请求驱动的,希望可以在启动web进程时候,可以定时、周期性执行某些特定工作,这类工作我们一般希望是自动调度或者系统控制下的逻辑性调度。CS实现了相关的工作,设计了一个基础任务调度的框架,可以让我们达到在此框架下执行非Web用户请求驱动的任务执行。任务的启动框架通常是在整个CS的启动时候,也就是通常我们说的glob原创 2007-10-06 13:48:00 · 3039 阅读 · 0 评论 -
分享CommunityServer(5) --UrlRewrite
大凡Context,根据单词的字面意义,我们大概都知道是关于某些进程或者线程的执行上下文,通常asp.net的请求会为每一个请求准备一个执行管道,也会准备一个执行环境上下文,这就是HttpContext。CS认为HttpContext的信息并不直接,无法满足各项功能的直接需求,为了能够更好的处理当前请求,并与高度灵活的配置其他可定制部分协同处理执行请求,为此集成HttpContext实现原创 2007-10-06 11:12:00 · 2736 阅读 · 0 评论 -
分享CommunityServer(4) --Authentication
一、CommunityServer的身份鉴别任何交互系统,都要考虑身份鉴别方式,CS作为开源的社区系统项目,必然要涉及到同其他现有或者扩展系统的兼容性,那么就必须研究CS的身份验证体系细节,也总结出如何扩展此系统。 要处理身份验证,入口应该是系统的登录部分。CS的web工程里有一个login.aspx文件,是处理登录的。该页面只有一个CS:Login控件,这是个继承自 Secur原创 2007-10-06 01:52:00 · 3106 阅读 · 0 评论 -
分享CommunityServer(3) --Provider
Provider实现 Provider 是重配置轻编程的第二个体现。我们都知道分层设计很重要,也知道在保持结构稳定的基础上,应当做到最大的灵活性,所谓具体环境的无关性。比如我们设计的时候可以通过分析,将一些功能进行抽象,并独立出来。比如,我们需要做到数据库无关,我们需要将全部数据访问设计到数据库部分进行独立设计,并通过分析提炼出相应的功能抽象,然后可以根据实际的数据库,设计相应的面向特定原创 2007-10-03 14:17:00 · 2820 阅读 · 0 评论 -
分享CommunityServer(2)--Configuration
CommunityServer如何体现“重配置、轻编程”Config实现.net同java2以后的编程一样,开始强调“重配置、轻编程”了,所以出现了.config类别的扩展名。通常,我们的配置信息不多,所以会写入到web.config上,但是CS的配置信息比较多,所以单独设定了一个 communityserver.config 文件来存储和配置系统的设定信息。解析该config文件原创 2007-10-02 16:09:00 · 2975 阅读 · 0 评论 -
分享CommunityServer(1)--背景
一、CommunityServer背景Web2.0大潮,带动了web技术摆脱了单纯的论坛、CMS的开发,转而进入社区应用开发。但是要知道,连基础协议都是http,那么也别指望有啥新应用技术一鸣惊人,大多数还是各类成熟技术的结合、融合。Myspace、Flicker等应用的脱颖而出,导致了市场要求技术开发多注重社区产品、相册、博客等典型web2.0应用的开发。在这背景下,Communi原创 2007-10-02 16:07:00 · 2910 阅读 · 0 评论 -
Google广告的显示原理
Google广告的显示原理 如果做过google的广告发布商,都知道如何发布google的adAdSense广告。但是这个放在页面上的一段代码是如何做到 AdSense的并且灵活的显示同页面相匹配的广告呢? 首先,我们把放置了Google AD 的页面称为“广告宿主页”。在广告宿主页上,存在一段由广告发布商发布的代码,通常如下:google_ad_client =原创 2007-07-23 23:45:00 · 5610 阅读 · 0 评论 -
DotNet如何访问mySQL数据库
.net的数据库天然支持MSSQLServer,但是并非其他数据库不支持,而是微软基于自身利益需要,在支持、营销上推自己的数据库产品;但是作为平台战略,他并非排斥其他数据库,而是参考java体系提出了一套数据库访问规范,让各个第三方进行开发,提供特定的驱动。MySQL是免费的数据库,在成本上具有无可替代的优势,但是目前来讲,并没有提供。微软把MySQL当作ODBC数据库,可以按照O原创 2007-02-20 23:39:00 · 3084 阅读 · 0 评论 -
也谈.net的尴尬
为什么学习研究.net的如今会产生尴尬呢?1、 后发的框架,被java占尽先机,java发展了好多年才出现,大批的技术人才走了2、 严重依赖windows平台,商业本质决定,无可改变3、 web开发体系上的缺憾,没有完整严密的web体系,IIS同.net框架的结合多么丑陋4、 不断发展的框架,但是感觉不稳定,经常是不成熟的贝塔版就已经推出来5、 没有成功的大型应用例原创 2006-05-24 01:26:00 · 4234 阅读 · 16 评论 -
ASP.NET组件设计Step by Step(7)
复杂属性和状态管理 复杂属性声明/持久:所谓复杂属性,即通常不可用CLR的基本数据类型表达的属性。譬如,FontInfo,即代表字体属性,包含Bold 、Name、Size、Color等信息(通常称为子属性)。对于复杂属性,控件在声明时候,通常采用 属性—子属性 的连字符表示复杂属性的一个子属性。 Font-Name=”Vender” Font-Size=”12pt” runa原创 2005-01-28 00:04:00 · 1851 阅读 · 0 评论 -
ASP.NET组件设计Step by Step(4)
如果我们的服务器控件需要较完备的GUI,譬如需要控制HTML元素的附加属性字体、颜色、高度等,那么应当从Control的子类WebControl继承,以得到所需的基础性能。从WebControl类派生,需要遵守通常如下的约定:1、 包含从System.Web.UI.WebControl的命名空间的引用2、 不能够重载Render方法直接向输出流提供数据,而应当重载RenderConte原创 2005-01-20 23:25:00 · 2132 阅读 · 0 评论 -
CASSINI源代码分析(3)
internal class Host : MarshalByRefObject {……}首先,我们看到Host仅能够在cassini项目中使用,因为是 internal 的类定义。另外,继承自MarshalByRefObject,允许在支持远程处理的应用程序中跨应用程序域边界访问对象。我们联想到asp.net对于应用程序的执行方式是应用程序域为划分边界的,作为Host必须能够支持跨应用程序域原创 2004-11-13 00:25:00 · 4398 阅读 · 5 评论 -
CASSINI源代码分析(1)
CASSINI源代码分析(1) 2004-11-10为什么要分析CASSINI?Cassini(卡西尼)是asp.net上的一个开源项目。主要给出一个脱离IIS实现asp.net执行环境。项目演示了如何自己创建一个web server,并且运行一个asp.net应用程序。研究 Cassini可以了解:1、.net 环境下的web server如何实现,注意原创 2004-11-10 23:03:00 · 11872 阅读 · 17 评论 -
CASSINI源代码分析(2)
我们从启动程序的部分开始分析吧。启动的入口是 Main函数,这个函数仅仅存在于CassiniWebServer ,而CassiniWebServer继承自Form类,但是我们看到,该类并没有实现代码(仅仅是提供一个入口)。在Main函数中,仅仅有两行代码:[STAThread] public static int Main(String[] args) {原创 2004-11-11 23:04:00 · 5605 阅读 · 1 评论 -
发表一个自己C#写的email 初级系统源代码
.NET TNT Email Server Tester说明 2004-11-9 一、引言TNT Email Server Tester是一个支持多域名的email 服务器的测试版本。他实现了SMTP/POP3接口,基本上实现了一个小型的email服务器。本测试器版本包含源代码,供大家参考。通过大家测试,提出修改建议和意见,我会修改,并给提出宝贵意见者一套发行版原创 2004-11-09 23:46:00 · 3554 阅读 · 2 评论 -
.Net托管世界的应用程序域和线程
.Net托管世界的应用程序域和线程关键词:托管 宿主 公用语言运行库 应用程序域 程序集 线程 Managed Host CLR(Common Language Runtime) AppDomain Assembly Thread一、 引子.Net框架提供了全新的计算平台,给出了一致性的面向对象的编程环境,解决了安全、版本控制等原来系统平台中存在的问题,通过公用语言运行库(CLR)原创 2004-11-03 00:00:00 · 5179 阅读 · 1 评论 -
ASP.NET组件设计Step by Step(2)
从继承关系上看,Asp.net 服务器控件的类别大致上分为4类:1、 用户控件类似page,基本上不需要编程,可以将某个aspx页面作为复用组件使用。 2、 LiteralControlASP.NET 将所有不需要服务器端处理的 HTML 元素和可读文本编译为该类的实例。例如,开始标记中不包含 runat="server" 属性/值对的 HTML 元素被编译为 Litera原创 2004-08-02 22:49:00 · 2328 阅读 · 0 评论 -
ASP.NET组件设计Step by Step
2004.8.1 学习创建工程库、在自己的项目中应用 1、 启动VS200X 2、 选择新建解决方案 3、 选择缺省的方案类型,选择 Web控件库。Web控件库不需要web站点,基本上是一个DLL类型库 4、 输入自己的类型库的名称,譬如ASPCTLLib之类的。这个决定了namespace和以后其他工程使用此库的引用库名。 5、 系统自动产生的代码如下: using Sys原创 2004-08-01 18:04:00 · 2178 阅读 · 0 评论 -
.net的MSMQ异步调用
1、引用System.messagiong.dll2、using System.messagiong 命名空间3、创建/建立自己需要的队列(这里监测专有队列) string queuename=".//private$//testQueue"; MessageQueue q; if(MessageQueue.Exists(queuename) ) { q=new System.M原创 2004-07-02 00:10:00 · 3271 阅读 · 3 评论 -
实现自己的ASP.NET宿主系统
实现自己的ASP.NET宿主系统杨山河 一、 宿主概念 托管是.NET的一个很基础的概念,所有的.NET应用程序代码要完全发挥作用需要进入托管的环境(CLR --Common Language Runtime),而这个环境实际上就是称作宿主(Host)为将要启动的.NET代码准备的。目前来讲windows系统上,能够担负这个重任的有3类已存程序: 1、 shell(通原创 2004-05-27 13:30:00 · 4967 阅读 · 1 评论 -
给ASP.Net表单增加验证码
给ASP.Net表单增加验证码 一、验证码对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施。因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟登录的暴力破解攻击,要么轻易获得特定账户的登录信息,要么给服务器增加了大量的负荷,影响正常的服务。解决的办法,一般就是在登录前给出一个随机的信息(验证码),显示在页面上,让用原创 2003-10-12 23:55:00 · 2026 阅读 · 0 评论 -
CASSINI源代码分析(4)
因为connection对象仅仅跟host对象相关,且处理一个套接字,所以其数据成员仅有:private Host _host; //指向宿主对象 private Socket _socket; //当前套接字我们知道host调用且仅了conn.ProcessOneRequest();方法,所以我们首先要找原创 2004-11-14 20:55:00 · 4303 阅读 · 1 评论 -
CASSINI源代码分析(5)——总结
通过初步浏览全部代码之后,我们大致上明白了:1、执行流。asp.net程序具体是如何执行的?一个asp.net的应用程序的执行首先是需要一个宿主,通过建立宿主后,就建立了执行asp.net应用代码的能力。执行一次asp.net请求,需要通过HttpRuntime.ProcessRequest(SimpleWorkerRequest)来激发执行,而SimpleWorkerRequest需要被重载原创 2004-11-15 22:47:00 · 4340 阅读 · 0 评论 -
设计模式读书笔记(-)
设计模式读书笔记(-) 2004-11-211、什么是 设计模式 ?面向对象的软件设计经验总结。目标是:使人们更加简单的、方便地复用成功的设计和体系结构。主要在更好得完成系统设计。大师说 Christopher Alexander提出:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。”上原创 2004-11-21 21:01:00 · 2717 阅读 · 1 评论 -
ASP.NET组件设计Step by Step(3)
自定义控件(custom control)入门在服务器端中执行程序逻辑的组件,是asp.net 应用程序的基本构造块。为了能够在asp.net环境执行,必须满足一定条件。 为了能够参与到网页框架执行,需要满足IComponent, IDisposable, IParserAccessor, IdataBindingsAccessor等接口。所以框架提供System.Web原创 2005-01-18 23:30:00 · 3172 阅读 · 0 评论