c#项目架构搭建经验
2014-07-12 12:46
363 查看
读过.Net项目中感觉代码写的不错(备注1)有:bbsMax(可惜唧唧喳喳鸟像消失了一样),Umbraco(国外开源的cms项目),Kooboo(国内做开源cms)。本人狭隘,读的代码不多,范围也不广泛。
你是否一直渴望自己能开发出一套系统架构,让人读起来感觉到程序有条理,结构很合理。
[b]好的架构师需要具备:[/b]
1.项目经验丰富。(应该是从一堆堆项目中走出来的,丰富的经验比大篇大论的理论更深刻。)
2.知识的全面性,基础的扎实程度。(知识的全面性不要求你什么都知道,起码要能熟练掌握WCF,Silerlight,WebService,WindowService,Asp.net,WinForm,Asp.net Mvc,ORM(Entity Framework,Linq,NHibernate)DI/IOC(Autofac,Unity,Cast),Javascript(javascript能自己封装类库,很熟练jquery),Ajax(js帮助方式,AjaxPanel),OAuth(Open Identity),OData等)
3.会从不同的角度去了解问题。(但不必什么语言都懂,起码你不能只懂一种技术,当你去读不同语言实现的架构时会给你带来不一样的感觉,处理事情的方式。比如:Django,或者Ruby On Rails,可以让你能了解到MVC架构的真谛,在读Java的struts的感觉又是不同的感觉)
4.熟练应用的设计模式。(行为模型,结构模式,创建型模式)
5.对程序有浓厚的兴趣。(如果你只把程序当作换取收入的一种技能,估计很难成为资深级别;业余时间【晚上8:00到10:00你在忙什麽,你将在你的未来收获什么。】(备注2),你是否能达到每天这样做,从毕业一直到离开这个行业,业务时间一直把程序作为你的爱好,它是否在业余时间能成为能让你充实的东西)
6.理科是否优秀。(不管你信不信,如果你理科不好,计算机技术你成为高手会很漫长)
[b]怎么搭建c#项目架构像计算机一样运行的计算机[/b]
[b] 1.Boot.cs,它应该在工程中出现在什么位置,它能做什么事情。[/b]
配置信息管理类的初始化(加载)。。。
系统信息管理类的初始化(加载)。。。
业务订阅实现的初始化(加载)。。。
系统适配管理类初始化(加载)。。。
模版引擎初始化(加载)。。。
theme管理类初始化(加载)。。。
plugin管理类初始化(加载)。。。
widget管理类初始化(加载)。。。
数据操作实现类初始化(加载)。。。
等等
实现示例:
皮肤管理示例:
View Code
[b] 5.数据操作类,能怎么处理让DataAccess层更规范。[/b]
6.Plugin怎么管理。
7.Widgets怎么管理。
8.你是否还在死守Dao,Business,Web,Entity(Model)这样的分层结构,这种从Foosun.Net(cms),PetShop流传出来的结构,是否毒害了你对程序的结构的创想。
9.Template Engin,你是否尝试去处理实现过,请抛弃NVelocity带给你的毒害。是能否从Discuzz!NT中获得点灵感。或者Asp.net mvc模版运行原理你是否清晰,实现原理是否能找到核心代码实现处。
10. 伪静态,原理,实现。是否尝试过用。
11. 静态HTML生成系统你是否尝试用,自己是否尝试过写。
12. 接口类,抽象类,实现类,管理类,代理类,创建型类,行为型类,装饰型类,实体型类,枚举类等,你是否在程序创建类时对他们命名,文件存放位置,结构划分有过深思熟虑。
备注1:
什么代码算上好:
1,代码书写规范;
2,代码结构合理;
3,代码变量,函数,类,命名空间,项目名称规范;
4,代码注释完整;
5,对静态接口类,抽象类等使用的地道。
6,设计模式,用的典型,经典。
7,代码执行效率高,算法优。
8,数据访问处理恰当,sql行文规范,缓存分配合理,内存占用合理。
备注2(希望大家不要误解):
1.胡适先生毕业典礼讲话:“一个人的业余时间用来做什么,就决定了他的将来”;
2.爱因斯坦说:“一个人活到六七十岁,大概有13年做工作,有17年是业余时间,此外是吃饭睡觉的时间。一个人能不能成才,关键在于利用你的17年,能够利用业余时间的人就能成才,否则就不能成才。”
本人学术短浅,还是希望更牛的朋友们给点架构方面的建议,意见。
看到这个哥们的文章中截图不错:
http://www.cnblogs.com/mienreal/tag/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/
积累好文章:/article/5144751.html(经验丰富的架构,产品人发的文章)
你是否一直渴望自己能开发出一套系统架构,让人读起来感觉到程序有条理,结构很合理。
[b]好的架构师需要具备:[/b]
1.项目经验丰富。(应该是从一堆堆项目中走出来的,丰富的经验比大篇大论的理论更深刻。)
2.知识的全面性,基础的扎实程度。(知识的全面性不要求你什么都知道,起码要能熟练掌握WCF,Silerlight,WebService,WindowService,Asp.net,WinForm,Asp.net Mvc,ORM(Entity Framework,Linq,NHibernate)DI/IOC(Autofac,Unity,Cast),Javascript(javascript能自己封装类库,很熟练jquery),Ajax(js帮助方式,AjaxPanel),OAuth(Open Identity),OData等)
3.会从不同的角度去了解问题。(但不必什么语言都懂,起码你不能只懂一种技术,当你去读不同语言实现的架构时会给你带来不一样的感觉,处理事情的方式。比如:Django,或者Ruby On Rails,可以让你能了解到MVC架构的真谛,在读Java的struts的感觉又是不同的感觉)
4.熟练应用的设计模式。(行为模型,结构模式,创建型模式)
5.对程序有浓厚的兴趣。(如果你只把程序当作换取收入的一种技能,估计很难成为资深级别;业余时间【晚上8:00到10:00你在忙什麽,你将在你的未来收获什么。】(备注2),你是否能达到每天这样做,从毕业一直到离开这个行业,业务时间一直把程序作为你的爱好,它是否在业余时间能成为能让你充实的东西)
6.理科是否优秀。(不管你信不信,如果你理科不好,计算机技术你成为高手会很漫长)
[b]怎么搭建c#项目架构像计算机一样运行的计算机[/b]
[b] 1.Boot.cs,它应该在工程中出现在什么位置,它能做什么事情。[/b]
配置信息管理类的初始化(加载)。。。
系统信息管理类的初始化(加载)。。。
业务订阅实现的初始化(加载)。。。
系统适配管理类初始化(加载)。。。
模版引擎初始化(加载)。。。
theme管理类初始化(加载)。。。
plugin管理类初始化(加载)。。。
widget管理类初始化(加载)。。。
数据操作实现类初始化(加载)。。。
等等
实现示例:
protected void Application_BeginRequest(object sender, EventArgs e) { if (false == hasInit) { lock (locker) { if (false == hasInit) { // 第一次HttpApplicaiton初始实例化时,启动Boot类中全局静态型变量信息 // AllEnums初始化:包含Enum属性,字段,注解信息,避免每次使用enum上下文信息时都动态创建; // AllSettings初始化:避免全局唯一配置管理类多次初始化,保证应用程序池中保留一份对象实例 // 配置信息管理类的初始化(加载)。。。 // 系统信息管理类的初始化(加载)。。。 // 业务订阅实现的初始化(加载)。。。 // 系统适配管理类初始化(加载)。。。 // 模版引擎初始化(加载)。。。 // theme管理类初始化(加载)。。。 // plugin管理类初始化(加载)。。。 // widget管理类初始化(加载)。。。 // 数据操作实现类初始化(加载)。。 Boot.Init(); } } } // 每次http请求开始时,都需要初始化http上下文包装类 AppContext.Init(); 。。。。。。 } /// <summary> /// 启动时 /// </summary> public class Boot { /// <summary> /// 初始化。。。 /// </summary> public static void Init() { // 全局系统变量加载 Globals.Init(); // 全局唯一配置信息加载 SettingsManager.Init(); // 全局Enums上下文加载 AllEnums.Init(); // 全局配置信息 AllSettings.Init(); // 初始化Theme代理实现类 ThemeProxies.Proxies.Clear(); ThemeProxies.Proxies.Add(new DefaultThemeProxy()); 。。。。。。 } }
皮肤管理示例:
public class EnumUtil { public static EnumInfoCollection GetEnumItems(Type enumType) { EnumInfoCollection infos = new EnumInfoCollection(); FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); foreach (FieldInfo info2 in fields) { EnumInfo item = new EnumInfo { Name = info2.Name }; DescriptionAttribute[] customAttributes = (DescriptionAttribute[])info2.GetCustomAttributes(typeof(DescriptionAttribute), true); if ((customAttributes != null) && (customAttributes.Length > 0)) { item.Description = customAttributes[0].Description; } DefaultValueAttribute[] attributeArray2 = (DefaultValueAttribute[])info2.GetCustomAttributes(typeof(DefaultValueAttribute), true); if ((attributeArray2 != null) && (attributeArray2.Length > 0)) { item.DefaultValue = attributeArray2[0].Value as string; } object obj2 = enumType.InvokeMember(info2.Name, BindingFlags.GetField, null, null, null); switch (Enum.GetUnderlyingType(enumType).FullName) { case "System.Int32": item.Value = (int)obj2; break; case "System.Int16": item.Value = (short)obj2; break; case "System.Byte": item.Value = (byte)obj2; break; case "System.UInt16": item.Value = Convert.ToInt32((ushort)obj2); break; case "System.UInt32": item.Value = (int)obj2; break; case "System.UInt64": item.Value = (int)obj2; break; } infos.Add(item); } return infos; } public static bool TryParse<T>(string memberName, out T t) where T : struct { t = default(T); return (!memberName.IsNullOrEmpty() && Enum.TryParse<T>(memberName, true, out t)); } }
View Code
[b] 5.数据操作类,能怎么处理让DataAccess层更规范。[/b]
6.Plugin怎么管理。
7.Widgets怎么管理。
8.你是否还在死守Dao,Business,Web,Entity(Model)这样的分层结构,这种从Foosun.Net(cms),PetShop流传出来的结构,是否毒害了你对程序的结构的创想。
9.Template Engin,你是否尝试去处理实现过,请抛弃NVelocity带给你的毒害。是能否从Discuzz!NT中获得点灵感。或者Asp.net mvc模版运行原理你是否清晰,实现原理是否能找到核心代码实现处。
10. 伪静态,原理,实现。是否尝试过用。
11. 静态HTML生成系统你是否尝试用,自己是否尝试过写。
12. 接口类,抽象类,实现类,管理类,代理类,创建型类,行为型类,装饰型类,实体型类,枚举类等,你是否在程序创建类时对他们命名,文件存放位置,结构划分有过深思熟虑。
备注1:
什么代码算上好:
1,代码书写规范;
2,代码结构合理;
3,代码变量,函数,类,命名空间,项目名称规范;
4,代码注释完整;
5,对静态接口类,抽象类等使用的地道。
6,设计模式,用的典型,经典。
7,代码执行效率高,算法优。
8,数据访问处理恰当,sql行文规范,缓存分配合理,内存占用合理。
备注2(希望大家不要误解):
1.胡适先生毕业典礼讲话:“一个人的业余时间用来做什么,就决定了他的将来”;
2.爱因斯坦说:“一个人活到六七十岁,大概有13年做工作,有17年是业余时间,此外是吃饭睡觉的时间。一个人能不能成才,关键在于利用你的17年,能够利用业余时间的人就能成才,否则就不能成才。”
本人学术短浅,还是希望更牛的朋友们给点架构方面的建议,意见。
看到这个哥们的文章中截图不错:
http://www.cnblogs.com/mienreal/tag/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/
积累好文章:/article/5144751.html(经验丰富的架构,产品人发的文章)
相关文章推荐
- C#项目积累经验二
- 【分享C#项目开发经验】
- C#代码反编译 得到项目可运行源码 经验分享(附:批量修改文件名工具)
- C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结
- Lambda表达式 c# 经验谈:巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)
- 项目经验和架构选择的思考
- VS2010 + C# + OpenCV 开发环境的搭建 项目配置
- C# 窗口项目中文件架构分析(二)
- C# 窗口项目中文件架构分析(一)
- C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
- NHibernate+Oracle10g搭建一个项目架构全程解析(一)
- NHibernate+Oracle10G搭建项目架构示范代码下载(http://d.download.csdn.net/down/1813293/jiangtongcn)
- NHibernate+Oracle10g搭建一个项目架构全程解析(五)
- 给IT软件公司做2天C#.NET技术架构培训的亲身体会经验分享【缓解工作生活压力、娱乐大家】
- C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结
- C#用Com组件解析Excel文件 然后删除Excel 并且彻底关闭Excel进程(公司实战项目经验)
- NHibernate+Oracle10g搭建一个项目架构全程解析(四)
- C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结
- C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
- C#代码反编译 得到项目可运行源码 经验分享(附:批量修改文件名工具)