.net 框架程序设计:

1.什么是模式?

模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。

Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。

什么是框架?

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

2.为什么要用模式?

因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

为什么要用框架?

因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。

框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。

软件为什么要分层?

为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。

3.以下所述主要是JAVA,J2EE方面的模式和框架:

常见的设计模式有什么?

首先,你要了解的是GOF的《设计模式--可复用面向对象软件的基础》一书(这个可以说是程序员必备的了),注意:GOF不是一个人,而是指四个人。它的原意是Gangs Of Four,就是“四人帮”,就是指此书的四个作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。

还有其他的很多模式,估计有100多种。

软件设计模式太多,就我的理解简单说一下最常见的MVC模式。

MVC模式是1996年由Buschmann提出的:

模型(Model):就是封装数据和所有基于对这些数据的操作。

视图(View):就是封装的是对数据显示,即用户界面。

控制器(Control):就是封装外界作用于模型的操作和对数据流向的控制等。

另外:

RUP(Rational Unified Process)软件统一过程,XP(Extreme Programming)极端编程,这些通常被叫做“过程方法”,是一种软件项目实施过程的方法论,它是针对软件项目的实施过程提出的方法策略。也是另一个角度的模式。

4.常见的JAVA框架有什么?

WAF:

全称:WEB APPLICATION FRAMEWORK

主要应用方面:EJB层,(WEB层也有,但是比较弱)。

主要应用技术:EJB等

出处:http://java.sun.com/blueprints/code/index.html

简述:这是SUN在展示J2EE平台时所用的例子PetStore(宠物商店系统)里面的框架。是SUN蓝皮书例子程序中提出的应用框架。它实现了 MVC和其他良好的设计模式。SUN的网站上有技术资料,最好下载PetStore来研究,WEBLOGIC里自带此系统,源码在bea/weblogic700/samples/server/src/petstore。这是学习了解J2EE的首选框架。

Struts:

主要应用方面:WEB层。

主要应用技术:JSP,TagLib,JavaBean,XML等

出处:http://jakarta.apache.org/struts/index.html

简述:这是APACHE的开源项目,目前应用很广泛。基于MVC模式,结构很好,基于JSP。Jbuilder8里已经集成了STRUTS1.02的制作。

简述WAF+STRUTS结合的例子:WEB层用STRUTS,EJB层用WAF:

JSP(TagLib)——>ActionForm——>Action ——> Event——>EJBAction——>EJB  ——>DAO——>Database JSP(TagLib) (forward) <——Action <——EventResponse<——

Turbine:

主要应用方面:WEB层。

主要应用技术:servlet等

出处:http://jakarta.apache.org/turbine/index.html

简述:这是APACHE的开源项目。基于SERVLET。据说速度比较快,基于service(pluggable implementation可插拔的执行组件)的方式提供各种服务。

COCOON:

主要应用方面:WEB层。

主要应用技术:XML,XSP,servlet等

出处:http://cocoon.apache.org/2.0/

简述:这是APACHE的一个开源项目。基于XML,基于XSP(通俗地说,XSP是在XML静态文档中加入Java程序段后形成的动态XML文档。)。特点是可以与多种数据源交互,包括文件系统,数据库,LDAP,XML资源库,网络数据源等。

ECHO:

主要应用方面:WEB层。

主要应用技术:servlet  

出处:http://www.nextapp.com/products/echo/

简述:nextapp公司的一个开源项目。基于SERVLET。页面可以做的很漂亮,结合echopoint,可以作出很多图形效果(里面用了jfreechart包)。使用SWING的思想来作网页,把HTML当作JAVA的类来做。但是大量使用Session,页面分帧(Frame)很多,系统资源消耗很大。

JATO:

全称:SUN ONE Application Framework

主要应用方面:WEB层。

主要应用技术:JSP,TagLib,JavaBean等

出处:http://www.sun.com/

简述:这是SUN推出的一个商业性框架,一看名字就知道是结合SUN ONE的平台推出的。我下载了JATO2.0看了一下,感觉有些简单,使用了JSP+TagLib+JavaBean。如他的DOC所说JATO是适合用在小的WEB应用里。

TCF:

全称:Thin-Client Framework

主要应用方面:JAVA GUI。

主要应用技术:JAVA application等

出处:http://www.alphaworks.ibm.com/tech/tcf

简述:这是IBM出的一个框架。基于MVC模式,基于JAVA Application。推荐一篇介绍文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml

.net 平台构成

1 底层操操作系统 windows

由于Web服务和使用Web服务的应用程序仍然运行在计算机上,而且既然是计算机都 要有外设,所以我们仍然需要一个操作系统.. Windows添加了Xml支持.. Windows XP和Windows.net (现在改名为windows Server 2003 ) 所有版本都都 为服务驱动的世界提供最好的支持.

特别地windowsXp和Windows 2003 Server 集成了Microsoft .net Passport Xml Web服务支持.Passport是一种用户认证服务..当登录使用Passport认证的Web站点和Web服务时的效率将会大提升.换句话说,用户在访问不同的互联网着站点时,将不再需要每次都输入用户名和密码.

另外Windows XP 和 Windows Server 2003 都提供了对.net框架的内置支持.

2 辅助产品:.net 企业服务器

这些产品主要是为企业的信息化和信息集成提供帮助的.

Microsoft Application Center

Microsoft BizTalk Server 2000 (现在出了个新版本)

Microsoft Commerce Server 2000

Microsoft Exchange 2000 邮件服务器

Microsoft HostIntegration Server 2000

Microsoft Internet Security and Acceleration(ISA) Server 2000

Microsoft Mobile Information Server 2002

Microsoft SQL Server 2000

这个产品刚开始跟我们的.net平台其实没什么关系.但以后可能为将一些.net特性集成到这些这些产品中, 目前新版的BizTalk 就集成了.net特性,差且通过vs.net 2003进行开发.

3 Microsoft XML Web 服务: .net My Servers

微软作为一个Web服务的底层技术提供商的同时,也推出了自己的XML Web服务

.net Alerts

.net ApplicationSettings

.net Calendar

.net Categories

等等……

4开发平台:.NET 框架

.net 框架包含两个部分: 通用语言运行时(Common Language Runtime---CLR) 和.net 框架类库(Framework Class libarary --FCL) .

.net 框架是.net平台最关键的部分.

本书讨论的就是开发面向.net 框架的应用程序和XML Web服务.

.net 框架开发平台可以允许我们创建各种各样的应用程序:XML Web服务、Web窗体,Win32 GUI程序,Win32 CUI 应用程序, Windows服务、实用程序、以及独立的组件模块。

Windows 2003 Server 内置了.NET框架

Microsft .net 框架为开发人员提供的技术比任何以前的微软发平台提供的技术都要多,比如代码重用、代码专业化、资源管理、多语言开发、安全、部署、管理等。在设计.net 框架时,微软还感到有必要改进目前Windows平台的某些缺陷。

CLR和FCL提供的部分服务:

l 一致的编程模型

现在的Windows操作系统,某些功能需要通过动态链接库DLL来访问,而某些功能又是通过COM对像来访问。 在.net 框架下,所有的应用程序服务都将以一种一致的、面向对像的编程模型提供给开发人员。

l 简化的编程方式

CLR的其中一个目的就是简化Win32和COM 环境下所需要的各种繁杂的基础构造。在CLR下,我们可以不需要 注册表、全局惟一标识符、Iunknown 、AddRef、Release、HRESULT等。

l 可靠的版本机制

.net 框架采用了一种新型的版本机制来隔离应用程序组件,可以保证一个应用程序总能加载当初生成的测试时所使用的组件。 彻底关上了“DLL hell“的大门。

l 轻便的部署管理

在.net框架下,组件将不再受注册表的任何引用。大多数.net框架应用程序的安装工作所需要的只不过是将文件拷贝到一个目录中。然后添加快捷方式都桌面、开始菜单就行了

l 广泛的平台支持

编译后的.NET框架的源代码实际上是通用中间语言(Common Intermediate Language) 只有在运行时,CLR才会将这些中间语言翻译为CPU指令。这就意味着只要一台机中包含有与ECMA兼容的CLR和FCL,我们便可以将.NET框架应用程序部署在该机上。

l 无缝的语言集成

CRL要求所有面向它的语言都要遵循一种称作通用类型系统(Common Type System,简称CTS)的规范和通用语言规范

l 简便的代码重用

l 自动化的内存管理(垃圾收集)

CLR为我们自动追踪资源的使用情况。

l 坚实的类型安全

CLR可以确保所有的代码都是类型安全的。

l 丰富的调试支持

CLR完全支持跨语言调试

l 统一的错误报告

CLR中,所有的失败的调用是通过异常来报告的。

l 全新的安全策略

传统的安全机制都是基于用户账号来控制的。

CLR中的代码访问安全为我们提供了以代码为中心的控制方式。

l 强大的互操作能力

.net框架完全支持COM ,以及传统DLL中的Win32函数。

5 集成开发环境 Visual Studio .Net

微软的Visual Stuaio .net 2003是最好的.net 框架应用程序开发工具。

总结:

这一章主要讲了.net平台的构成和.net平台的最关键部分---CLR和FCL的特点。

.net框架的13大特点:

1. 一致的编程模型

2. 简化的编程方式

3. 可靠的版本机制

4. 轻便的部署管理

5. 广泛的平台支持

6. 无缝的语言集成

7. 简便的代码重用

8. 自动化的内存管理(垃圾收集)

9. 坚实的类型安全

10. 丰富的调试支持

11. 统一的错误报告

12. 全新的安全策略

13. 强大的互操作能力

其实我个人感觉第5条目前来说还不是很有意义 ,因为至现在为止.net框架只能在windows上很好的使用,听说出了个mono但目前还不是很成熟吧? 第12条其实非常重要,基于用户帐号的安全机制对于互联网来说是不太安全的,这直接会影响到.net的普及程度,也就影响到我的饭碗 :)。

还有就是微软的那些企业服务器我只知道一部分的用途,另一部分压根不知道是干什么用的。也没有时间主动去找相关资料。前段时间参加了微软开发者日才知道BizTalk是干什么用的。那个主讲人也挺牛。资料上写的晕晕乎乎的东西,被他讲的清晰明了,一听就懂啊。

技术或语言特性或者说一些集成方案,只有了解它,才会去主动去使用它,但问题是,很多情况下不使用它也可以正常工作,只不过花费的时间和代价更高。而我在用更高的代价解决问题时,并不知道有一种更好的解决办法存在,而且就在我身边。我没有太多时间去研究层出不穷的名词背后的技术和特性。

有两个办法解决这个问题: 尽量的去了解各种新的事物,哪怕你刚开始认为它跟你的工作和兴趣风牛马不相及。另外一个就是期望那些提供商(比如微软)在宣传时更多的突出 程序员可以用那些产品解决实际应用中的哪些问题。

原文地址:http://dotnet.csdn.net/page/c290a6b8-a40c-431a-a738-b28731eff9e5

(.net)框架的程序设计相关推荐

  1. 毕业论文内容框架指导(程序设计类)

    目录 基本要求 摘要 1. 绪论 2. 相关技术与工具介绍 3. 系统需求分析 4. 系统设计 5. 系统实现 6. 测试(可选) 7. 结论 致谢 基本要求 10000字,15篇文献,3篇英文文献. ...

  2. layui如何获取父节点的父节点_layui框架中layer父子页面交互的方法分析

    本文实例讲述了layui框架中layer父子页面交互的方法.分享给大家供大家参考,具体如下: layer是一款近年来备受青睐的web弹层组件,官网地址是:http://layer.layui.com/ ...

  3. 什么是前端框架与后端框架

    什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出 ...

  4. 在c语言程序中使用数据库,数据库与C语言程序设计两者之间有什么联系?

    数据库与C语言程序设计两者之间有什么联系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库与C语言程序设计两者之间 ...

  5. 什么是框架(包括前端框架和后端框架)

    什么是框架(包括前端框架和后端框架) 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架. ...

  6. .NET FrameWork 4.0 新特性

    请注意,.NET框架4引入了一个改进的安全模式.有关该内容的更多的信息,请参阅文章<.NET框架4中的安全变化>. 具体来说,本文中将介绍.NET框架4的如下一些新功能和改进特征: 应用程 ...

  7. 人工神经网络理论、设计及应用_TensorFlow深度学习应用实践:教你如何掌握深度学习模型及应用...

    前言 通过TensorFlow图像处理,全面掌握深度学习模型及应用. 全面深入讲解反馈神经网络和卷积神经网络理论体系. 结合深度学习实际案例的实现,掌握TensorFlow程序设计方法和技巧. 着重深 ...

  8. stm32h7高速通信_【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)...

    第75章       STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V) 本章节为大家讲解标准SPI接线方式驱动模数转换器DAC8501,制作了中断和DMA两种 ...

  9. stm32h7高速通信_【STM32H7教程】第48章 STM32H7的FMC总线应用之是32路高速IO扩展

    第48章       STM32H7的FMC总线应用之是32路高速IO扩展 本章教程为大家讲解利用STM32H7的FMC总线扩展出32路高速IO,且使用简单,实际项目中也比较有实用价值. 48.1 初 ...

最新文章

  1. ubuntu装java环境_Ubuntu安装Java环境
  2. 给mysql的root %用户添加grant权限。并给创建的用户赋予权限
  3. Commons Logging 快速入门(五)
  4. Android中使用HttpClient实现HTTP通信效果
  5. 微信消息提醒与消息数字提示之BadgeView
  6. mySQL日期函数并运行_mysql日期相关的函数
  7. vue click事件_Vue.js---实现前后端分离架构中前端页面搭建(二)
  8. vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...
  9. python正则表达式03--字符串中匹配数字
  10. Git branch 用法
  11. mongodb E11000 duplicate key error collection: index: _id_ dup key
  12. MVC过滤器详解 面向切面编程(AOP)
  13. c++ regex 替换汉字_C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码
  14. 灰度直方图匹配(灰度直方图规定化)matlab代码
  15. 遥感数字图像处理——第三章——空间域处理方法
  16. 用一个div模拟textarea的实现【前端每日一题-15】
  17. Elasticsearch 版本 和SpringData ElasticSearch 版本以及SpringBoot版本选择
  18. Linux下Docker安装微信文件传输问题
  19. 红米note10和红米note9哪个值得买
  20. IBM 3250 m5重装linux,IBM/Lenovo System x3650 M5 系统全新安装教程

热门文章

  1. 咸关日影正鸿蒙,鸿蒙的诗词,鸿蒙古诗大全,鸿蒙全诗,关于鸿蒙的诗句全集...
  2. OpenWrt安装ser2net.ipk软件包
  3. 硬件描述语言要用计算机吗,非过程计算机硬件描述语言
  4. html怎么帮图片占位,css 技巧:利用 after 伪对象和 background 属性实现 img 图片标签占位图...
  5. ulr实现web资源下载
  6. 关于西安电子科技大学821电路的难点辨析(二)---电阻电路的分析方法
  7. 关于ESP8266与PC机通信
  8. 污水流量计对锅炉连续排污流量测量改造
  9. 数据结构-选择排序(Python)
  10. eps可以在html中显示嘛,eps是什么文件如何打开主要用在哪些方面