:::庄稼汉之.NET庄园:::

专注于.NET技术
posts - 4, comments - 18, trackbacks - 1, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2006年1月23日

        来上海已经快一个月了,由于这个项目特别急,所以每天都加班到很晚才能休息。上海这边的天气也特别不好,一共就看到三天有太阳出来。
        由于工作原因,最近很少写东西了,但还是经常来这里看看的。发现最近很少有人在这里活动,不知道为什么?可能是大家都很忙吧,不管怎样都希望大家能多来这里交流。不知道俱乐部最近又没有搞什么活动,还有就是管理软件小组,在这里也衷心的祝愿管理软件小组会拥有一个美好的未来!也祝福小组的每个成员,提前给大家拜个早年!

posted @ 2006-01-23 12:18 庄稼汉 阅读(100) 评论(1) 编辑

2005年12月16日

        不知不觉来大连已经三个多月,在这期间研究学习了Struts 、Webwork 、 Velocity 、Sitmesh 和Hibernate等优秀的开源JAVA开发框架或模板引擎,尤其是Struts和Hibernate,因为Struts事实上就是MVC设计模式的标准实现,被普遍的应用在各种大型的企业开发项目中;而Hibernate则可以说是众多持久层框架中的产业标准,加上其被JBoss组织收纳,更使其在企业级开发的持久化方面独立熬头。把这两个框架应用到项目中可以彻底把你从数据持久化管理和WEB开发的困境中解救出来,从而可以使你集中精力处理业务逻辑。

         近一段时间一直在学习.NET ,由于一直从事JAVA开发,学习C#就显得特别轻松。基本上利用三五天时间看一看C#与JAVA之间不同的地方以及写法上的差异就可以了。但是对ASP.NET的学习却要花费一些时间研究,ASP.NET明确的代码和页面分离、事件驱动模型、托管的数据集和优秀的IDE开发工具支持使得ASP.NET应用程序的开发工作变的轻松而愉快。当然要写出优秀的代码还是要靠经验的积累和对设计模式的理解。

        在JAVA领域里存在各种各样的开源框架,那么在.NET里是否也如此呢?到网上一搜真是吓了一跳,居然也有五六十个各种各样的开源框架。NHibernate 这个项目立刻引起了我的注意,粗略的看了一些这个项目的介绍,知道了它其实就是Hibernate框架的.NET实现。再看一看它的文档,和Hibernate的基本上差不多。决定好好的研究研究这个框架,如果谁也正在学习这个框架,那么欢迎交流经验!

        在此推荐一位网友翻译的NHibernate文档以及NHibernate的官方网站。

        http://wiki.nhibernate.org/display/NH/Home  NHibernate Wiki

        http://nhibernate.sourceforge.net/nh-docs/html/    NHibernate文档 

        NHibernate中文文档下载

posted @ 2005-12-16 22:36 庄稼汉 阅读(3434) 评论(4) 编辑

2005年12月15日

        从事FLASH应用编程已经有两三年的时间了,以前大部分都是做单机独立的应用。最近一段时间一直在研究Rich Internet Application 开发技术,个人觉得FLASH仍然是一个非常好的选择。自FLASH MX2004以后的版本一直在不断的加强对网络应用开发方面的支持,其内部具有丰富的组件库可以供我们调用。FLASH本身就可以很好的和后台应用程序通信,现在加上FLASH Remoteing技术和对XML的强大支持,使FALSH更加适合开发RIA应用,而无论你的后台使用的是什么语言。

        最近在网上闲逛时,发现了几本比较不错的介绍FLASH RIA开发的书籍《Flash MX 2004数据库应用程序开发——基于J2EE架构》《Flash MX 2004数据库应用程序开发——基于.NET架构》《Flash MX 2004数据库应用程序开发——基于ColdFusion架构》《精通Flash MX 2004结构化设计与开发》,这是一个系列教材,我有幸接触了这几种服务器端技术。由于我主要是做J2EE应用的,因此对基于J2EE架构开发特别关注。但在这里强烈推荐喜欢FLASH和.NET技术的朋友学习基于.NET架构开发这本书,相信你能从中学到很多东西:)

图书目录如下:

第1章 开发和运行环境的安装与配置
1.1 新架构的优点
1.1.1 XML:标准的数据交换格式
1.1.2 .NET:开放的、成熟的、完整的基础架构
1.1.3 Flash Player:跨平台、跨设备的富媒体客户环境
1.2 安装、配置开发与运行环境
1.2.1 安装和配置运行环境
1.2.2 安装开发和调试环境
1.3 定义一个新的.NET应用程序
第2章 使用传统网页作为中间件方法开发Flash网络应用程序
2.1 Flash影片应用程序和服务器通信技术及原理
2.1.1 浏览器怎样在服务器接收和发送数据
2.1.2 Flash影片应用程序接收和发送数据
2.2 Flash MX 2004 ActionScript用来传递和接收数据的方法
2.2.1 操作数据库
2.2.2 用来传递和接收数据的Flash MX 2004 ActionScript方法
2.3 Flash影片应用程序的安全性
2.3.1 Flash Player的安全性限定
2.3.2 Flash影片应用程序的安全性原理
2.3.3 关于URL编码——从文本文档中读取特殊字符
2.4 从ASP过渡到ASP.NET
第3章 应用Flash Remoting MX基础入门
3.1 Flash Remoting MX技术简介
3.1.1 Flash Remoting MX for Microsoft.NET
3.1.2 Flash Remoting MX技术的功能
3.2 使用Flash Remoting MX访问远程服务的3个步骤
3.2.1 为使用Flash Remoting MX引用ActionScript类
3.2.2 连接到Flash Remoting MX服务
3.2.3 远程服务方法
3.3 为使用Flash Remoting MX创建应用服务器方法
第4章 使用Flash Remoti ng MX调用数据库
4.1 应用Flash Remoting MX技术创建数据库应用程序
4.1.1 创建数据库
4.1.2 使用ADO.NET将数据绑定到服务器控件
4.1.3 创建Flash影片应用程序
4.2 怎样使用ADO.NET对象绑定服务器控件
4.2.1 关于AD0.NET
4.2.2 ADO.NET的结构和DataSet对象
4.2.3 使用.NET数据提供程序访问数据
4.2.4 执行数据库操作和修改数据
4.2.5 从DataAdapter填充DataSet
4.2.6 使用ADO.NET对象绑定Flash Remoting MX服务器控件
4.3 使用Flash影片应用程序与ASP.NET通信
4.3.1 注册自定义标签
4.3.2 在窗体网页中使用Flash Remoting MX自定义标签
4.3.3 在Flash影片应用程序中向窗体网页传递参数
第5章 在Flash影片应用程序中处理记录集结果
5.1 接收简单的字符串数据
5.2 Flash Remoting MX接收记录集数据
5.2.1 记录集数据和RecordSet对象
5.2.2 把记录集数据传递到F1ash影片应用程序
5.3 在ActionScript脚本中使用RecordSet对象处理记录集数据
5.3.1 使用FlashMX Professional 2004 UI组件和RecordSet对象
5.3.2 从RecordSet对象返回值
5.3.3 使用Recordset对象提示
5.3.4 筛选和排序记录集
5.3.5 编辑RecordSet对象数据
5.4 在ActionScript脚本中使用DataGlue对象处理记录集数据
5.4.1 使用DataGlue.bindFormatStrings()方法绑定记录集
5.4.2 使用DataGlue.BindFormatFunction()方法绑定记录集
5.4.3 DataGlue类的数据处理方式
5.5 使用RemotingcOl'lnector组件和数据绑定
5.5.1 编写脚本代码使用RemotingConnector组件
5.5.2 使用RemotingConnector组件数据绑定功能
5.5.3 RemotingConnector组件参数
第6章 配置Flash Remoting MX for Microsoft.NET运行环境
6.1 Microsoft.NET框架下应用程序的配置层级
6.1.1 配置文件格式
6.1.2 计算机配置文件
6.1.3 应用程序配置文件
6.1.4 安全配置文件
6.2 ASP.NET的分层配置结构
6.2.1 配置继承
6.2.2 配置<location>的设置
6.2.3 锁定配置设置
6.3 为Flash Remoting MX服务和AsP.NET以及ADO.NET程序配置系统
第7章 从Flash影片应用程序调用.NET程序集
7.1 .NET网络应用程序的三层架构模型
7.2 什么是.NET程序集
7.2.1 程序集的内容
7.2.2 全局程序集缓存
7.2.3 具有强名称的程序集
7.2.4 程序集的位置
7.2.5 运行库如何定位程序集
7.2.6 使用程序集编程
7.3 从Flash影片应用程序调用.NET程序集
7.3.1 创建一个.NET程序集
7.3.2 在Flash影片应用程序中调用和处理程序集
7.3.3 在Flash影片应用程序中调用和处理程序集的步骤
7.4 解析和使用FlashGateway.dll程序集
7.4.1 使用Flash类
7.4.2 使用名称空间F1ashGateway.10
7.4.3 从程序集返回ActionScript对象
第8章 从Flash影片应用程序调用web服务
8.1 在Flash影片应用程序中使用Web服务
8.1.1 使用WebServiceConnector组件直接调用Web服务
8.1.2 使用Flash Remoting MX组件语法调用Web服务
8.2 在.NET应用程序中创建和使用XML Web服务
8.2.1 什么是ASP.NET Web服务
8.2.2 使用ASP.NET访问Web服务
8.2.3 编写简单的XML Web服务
8.2.4 在客户端应用程序使用XML Web服务
8.3 使用Flash Remoting MX访问.NET Web服务
8.3.1 使用Flash Remoting MX访问.NET Web服务的两种方式
8.3.2 使用.NET Web服务访问数据库
第9章 在.NET架构下的Flash影片应用程序中应用XML(一)
9.1 在.NET应用程序中处理XML文档的方法
9.1.1 了解NET XML文档对象模型(DOM)
9.1.2 使用NET类和方法处理XML文档
9.2 使用xPath从XML文档中提取数据
9.3 AD0.NET与XML集成
9.3.1 从XML创建DataSet
9.3.2 从DataSet创建XML
9.4 在Flash影片应用程序中使用XML
9.4.1 在Flash影片应用程序中直接使用XML
9.4.2 使用XMLConnector组件应用XML数据
9.4.3 使用Flash Remoting MX返回XML数据
9.4.4 Flash Remoting MX与XMLConnector组件的对比
第10章 在.NET架构下的Flash影片应用程序中应用XML(二)
10.1 Connector组件、Resolver组件和DataSet组件
10.1.1 基本知识
10.1.2 什么是Resolver,它怎样与DataSet结合使用
10.1.3 为什么要使用Resolver组件
10.2 使用xML实施对数据库的操作
10.2.1 Update Packet数据格式
10.2.2 Result Packet数据格式
10.2.3 在服务器上更新字段
10.2.4 关于事务ID和操作ID
10.2.5 DataSet如何处理错误
10.2.6 在服务器应用程序中解析Update Packet
10.3 RDBMSResolver组件和DataSet组件的结合使用
10.3.1 创建.NET程序集解析Update Packet
10.3.2 创建Flash影片应用程序
10.4 XUpdateResolver组件和DataSet组件的结合使用
10.4.1为什么使用XUpdate
10.4.2 了解XPath
10.4.3 了解XSL和XSLT
10.4.4 从XPath和xSL到XQuery
lO.4.5 从XQuery到XUDdate语法
10.4.6 使用xupdateResolvet组件
10.5 基于XML的数据集成
10.5.1 使用数据连接
10.5.2 使用数据管理
第11章 使用NetServices和Connection对象应用Flash Remoting MX
11.1 在Flash影片应用程序中调用AsP.NET网页
11.1.1 连接到Flash Remoting MX服务
11.1.2 调用服务端方法、传递参数、处理结果
11.2 使用Flash Remoting MX访问.NET程序集
11.2.1 连接到Flash Remoting MX服务
11.2.2 调用服务端方法、传递参数、处理结果
11.3 在Flash影片应用程序中调用Web服务的步骤
11.4 使用Connection.connect方法和Connection.call方法调用远程服务方法
第12章深入Flash Remoting MX架构基本原理
12.1 应用Flash Remoting MX构建的Flash影片应用程序架构
12.1.1 理解Flash Remoting MX开发环境架构
12.1.2 使用Flash Remoting MX设计模式
12.1.3 理解Flash Remoting MX for Microsoft.NET目录结构
12.2 深入Flash Remoting MX网关和服务适配器
12.2.1 应用Flash Remoting MX for Microsoft.NET
12.2.2 关于AMF
12.2.3 Flash Remoting MX和数据类型
12.3 调用远程服务方法和处理远程服务调用结果
12.3.1 调用远程服务方法
12.3.2 定义远程服务方法
12.3.3 处理远程服务方法调用结果
12.4 处理和Flash影片应用程序之间的会话
12.4.1 在Flash Remoting MX中使用ASP.NET状态管理
12.4.2 使用Flash Remoting MX设置和获取Session变量
第13章 调试、出错与异常情况处理
13.1 错误和异常情况的不同
13.2 调试应用Flash Remoting MX的Flash影片应用程序
13.2.1 使用Debugger工具
13.2.2 使用NetDebugger和NetConnection Debugger
13.3 设置和查看Flash Remoting MX日志
13.4 在Flash影片应用程序中使用ASP.NET异常情况处理
13.4.1 使用状态处理函数处理异常和出错信息
13.4.2 出错处理策略
第14章 开发网上餐厅系统——架构的规划与设计
14.1 规划设计网络应用程序工程
14.1.1 选用开发和运行平台
14.1.2 数据库的选择
14.1.3 规划应用程序的结构
14.1.4 应用程序结构的实现
14.2 创建主引导程序
14.2.1 登录系统的设计和制作
14.2.2 创建主模块
14.3 小组协作创建内容模块
第15章 开发网上餐厅系统——项目小组协作创建功能模块
15.1创建“首页”模块
15.2 创建“客户中心”模块
15.3 创建“特色菜肴”模块
15.4 创建“预订座位”模块
15.5 创建“预订快餐”模块
15.6 创建“御店史话”模块
15.7 创建“食疗食补”模块
15.8 创建“管理中心”模块
附录
附录A Flash Remoting MX ActionScript 2.0 for.NET语法精讲
附录B 使用Flash Remoting MX ActionScript 1.0语法
附录C Flash Remoting MX for ActionScript 1.0和2.0的区别
附录D 特殊字符的URL编码对照表
附录E 参考文献以及资料来源

posted @ 2005-12-15 08:56 庄稼汉 阅读(1884) 评论(10) 编辑

2005年12月13日

        早就想写一些J2EE & .NET方面东西,正好今天上网的时候看到一篇写的非常不错的文章,特引到这里希望大家能够利用一点点时间看一下,我相信会对你有所帮助的!

        原文地址:http://perhaps.cnblogs.com/archive/2005/08/26/223362.html

        [前言] 写这篇Post源于我既做过.NET开发又做过J2EE开发的经历。在这样的转变过程中,我对单一平台开发所带来的思维局限性有了很多清晰却零散的想法。在看了振河兄的页面间传递变量的方法及使用范围的讨论之后,我更能体会到在不同的平台进行开发,思维方式会是如此之不同,原来那些零散的想法也随之不断在脑海中涌现,让我有了写下这篇Post的冲动。其实我一直都在宣扬一种观点:技术之间是相通的,精于触类旁通,善于联想是我们程序员应有的优势。我们在专注.NET技术的时候,不妨在工作间隙休息的时候看看.NET外面的世界。

        提到.NET和J2EE,一般都会想到它们之间兵戎相见,水火不容的关系,毕竟两者都在努力地去虏获程序员的青睐,占领更多的市场份额。我无意去鼓吹.NET是如何如何之强大,J2EE是如何如何的成熟,也无意去探究NHibernate,Spring.NET等等Project的起源,只想从一个程序员的角度去看待两者在互相竞争的过程当中到底相互借鉴了什么,同时探讨一下同时了解两个领域知识的必要性。好,让我们言归正传。

        还记得2003年初,我到了DELL公司实习,所承担的工作任务就是建立一个Web Application供多个有密切联系的部门使用,以提高部门间的协作程度。在选择用什么技术来做这个Web Application的时候,我放弃了比较熟悉的ASP,进而选择了ASP.NET。正是做这个Project,我跟ASP.NET乃至.NET结下了不解之缘。当时第一次接触到ASP.NET,第一个感觉就是,它比ASP好多了,再也不用像写ASP那样在HTML嵌套着一堆堆的Scriptlet,动态内容的呈现都包含在一个个方法中,如Page.OnInit()和Page.OnLoad()等等,这些方法让我看到Client端JS方法的影子。在开发ASP.NET页面的过程中,我需要做的就是在页面中引入不同的Web Control或者是HTML Control,这些Controls与HTML标签是何等的类似,除了它有ASP的prefix和那时看起来如Magic一般的runat="server"。这样的相似性让熟悉HTML和JS的我很快掌握了ASP.NET的基本应用,而我也以极高的效率完成了公司分配给我的任务,尽管我对诸如Request、Response、Session和Application这样的对象并不是十分了解。ASP.NET所带来的进步是革命性的,难怪有朋友认为ASP.NET是.NET家族中最为成功的产品了。我当时只是拿ASP.NET来跟ASP作对比,其优越性自然显露无遗,尤其是在控件设计方面的优势。事实上直到后来进入J2EE的开发领域,我依然对ASP.NET的开发方式赞赏有加。Microsoft在技术的创新上一直秉持削弱领域开发特性的原则,让开发人员能够在不同的开发领域中都可以轻松上手,游刃有余。ASP.NET的出现带来了WebForm,而在桌面程序开发中则有WinForm,两者相通的地方随处可见,这让原有的桌面程序开发人员可以平滑的过渡到Web Application开发中来;ASP.NET对于控件在设计以及使用上的支持堪称完美,也为网页设计人员进入ASP.NET开发领域扫除了不少的障碍。反观J2EE领域,做Swing开发的人员,如果要学习Web的开发,原有的知识几乎无用武之地了。在这个人气就是财富的年代,在一定层面上求同存异,让开发人员能够一通百通,无疑是一个十分明智的做法。J2EE领域也开始意识到了这一点,将Swing概念应用到Web开发的Wicket Framwork的发布着实是一个极大的进步啊。J2EE在降低Web开发的难度,吸引入门级开发人员方面需要向.NET好好请教一番了。

        好,个人经历接着说。2003年底,我进入了一家软件公司从事J2EE的开发工作。当时公司技术部门负责人在面试我的时候提到了我缺乏J2EE的开发经验的问题,我信心满满的告诉他,我做过.NET的项目,而.NET和J2EE都是专注在企业级应用上的,因此肯定会很快上手,不会有什么问题。然而后来的工作证明了平台之间的差异性是很大的,从.NET过渡到J2EE并不是一件轻松的事情。没有了熟悉的Web Control,取而代之的是简陋的Tag Library;没有了简单易用的Event-Driven的方法,呈现眼前的是doGet、doPost、doHead和service这样看似丑陋的面孔。蜕变的过程是痛苦的,但是蜕变带来了进化。开发方式的改变让我可以从一个更加深入的层面去看待Web开发,而我开始重新认识Web Application。Web开发的复杂性在很大程度上源于Http是一个无状态的连接协议,Web Server不管你是Michael,还是Jordon,只要你在浏览器上使用了相同的URL,就会得到相同的资源。在这里,你必须清楚URL到底是什么的缩写。也许你会站出来反驳我刚才所说的结论,但是这种情况在只有静态HTML网页的年代是绝对正确的。随着时代的发展,资源已经不再局限于静态的HTML网页,随之出现了所谓的动态网页。这里的动态不是指充满Flash动画的网页,而是指网页的内容会根据不同的Request而发生变化。虽然Web的内容开始个性化了,但是仍然没有脱离Client发送Request,Server返回Response这样的模式。由于Http是一个无状态的连接协议,为了能够识别用户访问同一资源的状态,在J2EE的世界里,我们就得从Request、Response和Session这样的对象入手,控制这些对象的Life Cycle。因此,我们哪怕要进行最为简单的Web应用程序,都必须对Request、Response和Session这样的对象有充分的了解。关注这些基本的对象,让我们对于应用程序的Flow有更为准确的把握,能够更好地进行模块地划分,便于开发人员进行协作。然而在.NET的世界里,对Request和Session这样的对象关注远不如对Page的关注,从振河兄的Post就可见一斑了。ASP.NET开发降低了开发难度,却在一定程度上阻碍了开发人员对Web Application的整体把握,正如春鱼兄的Feedback中提到的,过分纠缠页面之间关系,“不利于系统整体架构的良好设计”。J2EE的应用程序可以让程序员在Web Application的整体架构上有一个很好的体现,.NET还是得好好努力啊!建议.NET的程序员能够尝试着利用J2EE的技术来开发一个简单的Web Application,我相信这样的一个过程会让你对Web开发有进一步的认识。

        进入了J2EE的领域,除了开发方式变了,buzz words也跟着改变了。两个使用频率极高的词汇充斥着每天的工作,一个是MVC,另一个则是Framework。我感慨于Pattern在J2EE中使用的广泛性,感慨于应用实现了MVC模式的Framework竟然可以让庞大的团队协同开发一个Project。那时的我开始相信Pattern的广泛应用给软件开发带来的变化是巨大而深远的,也开始阅读《Core J2EE Patterns》并从中获益。而在.NET的世界里,对Pattern的重视则远不如J2EE,尽管这样的情况在改变。说到了MVC,不得不对这样一个份量很重的词汇做些陈述了。JSP的发展经历了两个阶段:JSP Model1和JSP  Model2。在Model1中是JSP和JavaBean的结合,在一定程度上实现了MVC,但是Model与Control之间的耦合仍然普遍存在;而Model2则真正实现了MVC:JSP作为Presentation层,负责数据的显示;Servlet充当着一个Request Dispatcher的角色,将Request分发至不同的处理Business的模块中,它就是一个指挥官,扛着Controller这面大旗;而VO则是一个数据的载体,是MVC三角中的Model。MVC的概念是进入J2EE开发领域必备的,从你做第一个简单的应用程序开始,从你看第一篇关于J2EE开发的文章开始,而丰富的开源MVC Framework也成为了我们学习MVC Pattern的良好教材。对J2EE有了初步的认识之后,就可以选择一些优秀的MVC Framework来研究了,例如WebWorkSpring。这对于学习系统整体架构设计方面是大有裨益的。

        也许物极必反真的是一条不变的真理,J2EE领域中对于开发Framework的追求可谓之疯狂,大家朝这里看:Wicket - Introduction。你会发现可以用来开发Web Application的Framework竟然达到了55个,并且还在日益增加。事实上J2EE开发的软肋不在于Control这个层面,而是在View。许多天才的精力都耗在重复制造轮子上,却没有想办法去完善一个或者多个Framework,这不得不让人感到痛心啊!在这一点,J2EE是不是得向.NET好好学习一下呢?在.NET的世界里,最受关注的应该是控件的开发了,一个设计良好,功能强大的控件对于提高开发效率无疑是极好的助推器。很多.NET的开发人员都将精力花在设计控件上,.NET就像一个聚宝盆一样,不断汇聚开发人员智慧结晶。在J2EE的世界里,为了减少这种资源浪费的情况,Wicket Framework的出现了。它强调组件设计和组件重用,让开发人员集中精力于组件的开发,从而增强Framework的功能已经易用性。但愿,Wicket Framework能够为J2EE世界带来少许的改变吧!
    
        说着说着,真的有点野马脱缰的感觉了。不知道说了半天,大家是否明白我真正的用意呢? 在这个技术如此Open的年代,.NET的程序员
应该去了解J2EE,反之亦然。我想,相互学习,共同进步这句再普通不过的话可以概括这罗罗嗦嗦的数千字吧。

posted @ 2005-12-13 09:23 庄稼汉 阅读(276) 评论(3) 编辑