读书
随风
4年.net开发经验3年Delphi/MIS开发1.5年Javascript/Web程序1.5年C/产品数据管理
展开
-
应用框架的设计与实现——.NET平台(1)
第1章 应用框架介绍术语“框架”对不同的人,含义不同。政治家用这个词描述某些政策和解决问题的某些措施。建筑师用这个词描述建筑物的骨架或结构。软件架构师用这个词描述有助于软件应用开发的一组可重用的设计和代码。 应用框架为开发者提供了结构和模板,开发者以此为基线(baseline)来构建他们的应用系统。这样一个框架通常会包含抽象类(abstract classes)、具体类(concrete c原创 2006-08-10 09:03:00 · 1190 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(9 消息队列服务代码分析)
正文内容已丢失,非常抱歉。这本书看完后我会再补充这一部分。摘要部分:类设计如下:MessageQueueManagment 消息队列管理类,负责与MessageQueue类交互,减少了用户直接使用此类的麻烦IMessageQueueManagment 消息队列管理类的公用方法接口IMessageQueue 消息队列的共同接口MSMQ 微软的MSMQ消息队列服务访问类MQServic IBM的消息队原创 2007-02-11 21:23:00 · 1726 阅读 · 2 评论 -
应用框架的设计与实现——.NET平台(10 授权服务.Attribute)
授权服务.Authorization Service.net 框架为我们提供了 System.Security.Permissions.SecurityAttribute 特性类,该类支持通过为类中的方法标注特性标签的方式,来实施按角色划分级别的安全授权方案。为了使业务组件的访问权限声明从业务组件本身分离出来,模块设计使用了.net特性(.net attribute)和.net声明性安全权限(.n原创 2007-02-16 00:00:00 · 1261 阅读 · 2 评论 -
应用框架的设计与实现——.NET平台(7.事件通知服务.源码分析)
EventClient.csusing System;using System.Reflection;using System.Collections;using System.Threading;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels.Http;using System.Runtime.Re原创 2007-01-08 23:17:00 · 950 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(8.1 Windows服务.线程)
启动一个线程最通常的做法如下:ThreadStart ts1 = new ThreadStart(bo.DoWork);Thread t = new Thread(ts1);t.Start();.net中有一种隐式使用线程的方式,这种方式在上一章已经提到过了。通过线程池可以隐式地创建线程,这些线程是受CLR控制的,我们不能直接控制。CalculationHandler sl原创 2007-01-13 09:51:00 · 734 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(10 授权服务.PrincipalPermissionAttribute)
PrincipalPermissionAttribute (主体权限属性)是.net框架中定义的特性,它的使用方式如下:[PrincipalPermission(SecurityAction.Demand,Role=@"BUILTIN/Administrators")]Public static void SecureMethod(){ Console.WriteLine("Access t原创 2007-02-22 12:56:00 · 1392 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(8.2 Windows服务)
使用 Windows服务 :1.建立一个新项目,选择Windows服务作为模板。生成的代码中会包含一个继承自 ServiceBase 的类。2.我们需要覆盖 ServiceBase 的 OnStart 方法,该方法必须快速返回,否则会返回一个“系统无法及时启动服务”的超时错误。protected override void OnStart(string[] args){ ThreadStar原创 2007-01-14 11:36:00 · 793 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(8.3 调用非托管代码的方法)
为实现线程用户的切换,我们需要依靠 advapi32.dll 中的 LogonUser 方法。advapi32.dll 是非托管代码程序,我们怎么调用它哪?使用非托管代码的前提是需要有 UnmanagedCode 权限,该权限是默认授予的。然后确定要用哪个非托管的DLL,然后在托管代码中声明一个与非托管代码中方法相匹配的方法:[DllImport(@"advapi32.dll")]publ原创 2007-01-15 20:32:00 · 731 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(8.3 源码分析)
本章的目的是实现一个 Windows服务 的通用框架程序,使用该框架,windows服务开发者不需了解开发 windows服务的细节,只需实现IService接口,将编译生成的dll文件名、服务类全路径名写在配置文件内,就可以实现windows服务功能的加载和启动。1.IServicepublic interface IService...{ void Start(); //原创 2007-01-16 23:12:00 · 991 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(9 消息队列产品安装)
安装MSMQ:Win2003下,打开控制面板-添加/删除程序-添加/删除WIndows组件勾选windows服务,点击"详细信息"按钮,小窗口中勾选MSMQ项,然后下一步直接安装。Win2000下,打开控制面板-添加/删除程序-添加/删除WIndows组件勾选MSMQ项,然后下一步插入wind2000安装光盘安装。IBM的MQSeries比较难以得到,IBM的网站特别慢,不知道ibm的中文网站是不原创 2007-01-18 22:02:00 · 1062 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(9 MSMQ / MQSeries 访问)
消息队列的应用场景当有多个用户同时访问一个服务时,如果用户数量超出服务的承受能力,会造成阻塞、用户请求无反应或者用户请求丢失。在这种情况下只有使用一个中间服务,让中间服务来缓存用户的请求,才能保证服务的正常运行而不至于丧失服务能力。很多情况下我们都可以使用消息队列来充当缓存服务。消息队列的好处:1.通过部署多个服务器来处理队列中的消息,可以达到负载平衡;2.通过让多个服务器来处理队列中的消息,可以原创 2007-01-25 19:00:00 · 1410 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(10 授权服务.CodeAccessSecurityAttribute)
CodeAccessSecurityAttribute 是 PrincipalPermissionAttribute 的父类,并且也是编译器和CLR都认识的一个框架类。CodeAccessPermission 继承自 IPermission。做权限验证工作的是 IPermission 接口的实现类,在CLR验证权限的时候会调用 IPermission 的 Demand() 方法。IPermissi原创 2007-03-18 22:30:00 · 2265 阅读 · 0 评论 -
软件项目管理.软件管理过程框架(生命周期阶段,过程中的制品)
生命周期阶段 高层生命周期阶段划分 工程阶段 设计和综合活动 可预测性小、规模小的群组驾驭 再划分 初始阶段 细化阶段 生产阶段 构造、测试、实施活动 可预测性大、规模也较大的群组驾驭 再划分 构造阶段 移交阶段过程中的制品 制品集 管理制品集 项目人原创 2007-06-29 18:40:00 · 1811 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(10 授权服务.源码分析)
设计目标:SAF.Authorization的目标之一是把权限设置从应用代码中分离出来,从而在无须修改和重新编译应用代码的情况下,就可以改变类和方法的访问权限信息。实现方式:1.在方法和类上使用SAFSecurity特性,并以一个不重复的字符串作为名称;[SAFSecurity(SecurityAction.Demand, Name="NameSpace.Class1.Method1")]2.在配原创 2007-04-05 22:48:00 · 1425 阅读 · 1 评论 -
软件项目管理.软件管理的复兴
这本书好早就有了,但是没有看过;现在看了才知道为什么大家这么推崇俺不是做管理的,本书只是粗略一读,顺便列出目录软件项目管理软件管理的复兴 传统的软件管理 实践 拖延的集成与后期的设计变更范围 后期的风险解决方案 需求驱动的功能分解 项目相关人员之间的敌对关系 致力于文档原创 2007-05-31 19:06:00 · 896 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(7.事件通知服务.委托.异步编程)
7.2.1 委托取得消息接收者列表 delesobj.GetInvocationList()调用每个委托目标 deleobj.DynamicInvoke()Delegate[] delegates = allTargets.GetInvocationList();object[] params = ...{4,3};foreach (Delegate dg in delegates).原创 2006-12-31 23:18:00 · 983 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(6.获取外部配置信息)
使用 IConfigurationAgent 接口可以实现从外部资源获得配置数据。配置文件的 Framework 节:configSections> section name="Framework" type="SAF.Configuration.ConfigurationHandler,SAF.Configuration" />configSections>Framework ty原创 2006-12-30 21:32:00 · 956 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台4.2代码测试
.NET远程对象:激活方式『服务器激活、客户端激活』类似于:聊天室客服、电话客服服务器激活『单体、单一调用』单体方式:服务器端的一个远程对象为所有的请求服务;单一调用:服务器为每次请求生成一个新对象来提供服务,只为一次调用服务,为一个方法调用服务;如果客户端持有远程对象代理就可以对同一远程对象多次调用。================================================原创 2006-12-07 19:50:00 · 643 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4.2 Remoting 客户端激活)
在不修改代码的情况下,只修改配置文件可以将激活方式由服务器端的修改为客户端的。按照书上说的修改方式:将服务端配置文件wellknown标签修改为activated标签,同时删除mode属性;将客户端配置文件wellknown标签修改为activated标签,同时删除url属性;测试运行报出bug。这很正常,因为客户端不知道从哪里获取服务,代码里没有写,配置文件里也没有写;搜索相关内容,有一种写法是原创 2006-12-08 23:50:00 · 783 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台4.2代码测试问题解决
remoting程序关键点:服务器端在程序启动时执行代码:RemotingConfiguration.Configure("ServerPrj.exe.config");将程序中远程服务对象写在配置文件ServerPrj.exe.config中;客户端在程序启动时执行代码:RemotingConfiguration.Configure("Clientproj.exe.config");将程序中需要原创 2006-12-07 23:06:00 · 650 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(3)
框架开发的技术和方法1.通用点(技术) 通用点代表业务应用中反复出现的通用主题的位置。 只要差异不大,你依然可以把这个主题作为通用点;只是,需要通过参数化或配置设置项的方法,来处理这些小的变化。 将通用点主题移到框架组件中的实际工作并不困难,困难的是在分析阶段,如何从尚未开发的业务应用中识别出那些通用点。 每个业务应用都有其独特性;多个应用之间,既存在大量通用点,又会因每个应用的本质不同,原创 2006-08-20 17:53:00 · 1096 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(2)
应用框架解析 框架由两层组成:应用层和框架层。框架层可以被划分为:特定领域层和跨领域层。(应用层就是业务表现层,框架层是公用模块部分,特定领域是指业务实现部分,跨领域是指不涉及业务的基础框架) 之下还有编码框架和系统平台。 框架开发的主要阶段:分析、设计、实现和稳定。 分析确定范围(scope)和目标(objective)。主要功能?业务应用是什么类型的?支持哪些用例?原创 2006-08-16 08:49:00 · 920 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4.2 Remoting 无配置文件)
服务端代码:using System;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Tcp ;namespace server{ /// /// HS 的摘要说明。 /// public class H原创 2006-12-12 21:38:00 · 624 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4.3 SAF代码分析)
类工厂设计的三个优化阶段。1.普通实现方式。远程对象服务模块:RemotingConfiguration.Configure("Server.config");配置文件Server.config客户端实现:Main()函数执行RemotingConfiguration.Configure("Client.config");直接构造类对象配置文件Client.config2.优化实现方式。远程对象服原创 2006-12-16 23:51:00 · 1114 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4.3 SAF代码分析.源码1)
普通的实现方式和作者的实现方式:1.普通实现方式。业务代码:Business.csusing System;namespace Business...{ public class biz1 : MarshalByRefObject ...{ public string hi() ...{ return "hello world!原创 2006-12-21 21:41:00 · 1164 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(6 自定配置文件节读取类)
自定格式的配置文件 App.config xml version="1.0" encoding="utf-8" ?>configuration> configSections> section name="Modules" type="trial.Configuration.ModulesConfiguration, ModulesConfiguration" /原创 2006-12-21 23:13:00 · 930 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4.3 SAF代码分析.源码2)
按照图4-7 两种类工厂方案的对比>想象的实现方式, 测试未通过。将类工厂从MarshalByRefObject继承,将GetFactory()的静态声明去掉,将类工厂部署在服务器端;在客户端使用单例保存类工厂的代理对象,使用此代理对象时发生错误。Business.csusing System;namespace Business ...{ // bizFactory pub原创 2006-12-21 22:17:00 · 1193 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(4)
B2B(business-to-business)应用框架Simplified Application Framework,简称作SAFSAF由两组框架组件组成:第一组是通用的跨领域组件,第二组是特定领域组件。(是不是系统组件和领域组件?)第一组包含了诸如类工厂(class factory)服务、缓存(caching)服务、事件通知(event notification)服务等通用组件。第二组,B原创 2006-08-26 17:06:00 · 1368 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(6 源码分析)
作者实现方式的特点:所有自定配置节的读取依靠由接口【IConfigurationSectionHandler】继承来的类SAF.Configuration.ConfigurationHandler;具体配置节的读取类是什么推迟到配置节内再指定(App.Configconfiguration> configSections> section name="Framework原创 2006-12-22 22:42:00 · 991 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(5 缓存服务.源码分析)
缓存服务的功能:缓存服务可提高对象的重用性,减少读取数据库、计算等操作步骤;为此付出的代价是对象使用前的判断和对象存储内存空间的开销。 作者对缓存服务的设计特点:基于XmlDocument 对象,对象存储的名称信息可包含模块名、用户名、自定名,存储名有自描述性,易于理解;对象的获取和删除可基于某个组某个模块全部获取全部删除。缓存服务对象 Cache: /**//// ///原创 2006-12-23 14:24:00 · 1086 阅读 · 0 评论 -
应用框架的设计与实现——.NET平台(6.3.1访问集中式配置.WebService)
建立一个Web服务真的很简单。使用vs.net建立一个 WebService 项目,添加一个新类(继承自System.Web.Services.WebService),为新类加入一个 public 方法(为方法加上 [WebMethod] 属性),添加一个.asmx文件,文件内容书写如下,Class指向我们定义的新类,Codebehind指向保存新类的文件:这就是一个可调用的 Web 服务了。调用原创 2006-12-27 21:11:00 · 732 阅读 · 0 评论 -
base64 编码
总是记不住XmlDocument如何转成XmlReader,很糟糕,还是记下来,省的以后又浪费时间琢磨。 转为XmlReader Public xmlstring As String Dim xd As New Xml.XmlDocument xd.LoadXml(xmlstring)转载 2009-09-11 09:50:00 · 682 阅读 · 0 评论