.net开发中,无论ajax还是webform,webpage, 总免不了要和request这个静态全局,可以远程通信的对象打交道。
而对于软件来讲,按照Matin Fowler的的面向对象,可利用软件的设计之道之说,面向对象的软件,OO最大的好处莫过于实现了良好的封装和复用。
通过封装和复用,我们就可以实现自己理想中的软件,我总结并经常说的其中一句话“整套软件一定要所有的代码只写一遍,而且,从不写第二遍”,这句话表明了我自己在oo上的追求,而我也不断将自己的写法向更优雅更易复用的方向迈进。
而对于Oo,我还总结了第二个方法,是关于软件的输入点的,也就是,“整套软件应该只有一个输入点,即配置的最小化”。而我们在写软件的时候,看过OOD方面书籍大部分的人都知道单一职责,基于抽象与接口,而这些方法,也只是我们考虑问题的基本,“不可能一次做好所有的事情,但你从来都有时间重做”,从这点来看,重构提练方法就体现了个人的思维的周全。
其实软件开发,我从来都觉得在这一方面耍些小聪明是必要的!一定要想方设法来偷懒-这点从我上面提到的第一点上就可以看出,重复返工谁也不会喜欢,而只写一次,与其说懒,不如说此时已经达到了复用的阶段。
但写了不少代码,发现真正的重构,很少是事后已经完全写好之后才做出的,往往是边写边观察,在写一个类的时候不断重构提取其中的方法。然后每个方法最终小的只剩下基本上三行就搞定了,而越小越明了的方法往往更加利于个人往此类之外提取和重构。
最后说下我在AJAX方面发现的一个比较简便的方法,这个是重点,我个人认为,这已经将HTML AJAX开发的精简达到了极致-看现在的各种JS构架,无论是MVC的 angular js或是其他的一些对dom做一些个性定制的js 框架,我个人认为它们也许在使用上更加地优雅和利于使用,但是它们总是出现了更多的js的封装,并不是说Js的封装不好,我个人也喜欢一些封装的js的组件,比较常用的table,pager等等,但是在开发和传输数据上,我倒并不赞同他们的方法,我还是觉得最简化的方法永远都是使用html原有特性的方式。
我目前使用的开发方法是 使用html的form进行封装一个表单,而表单中的各项,按ruby on rails的设计思想和大家熟知的理念“约定大于配置”这个黄金定律,而往往一些比较好的已经被大部分人接受的约定往往能发按意想不到的作用。
所以在ajax方面,按照解耦的思想,前端和后端是完全分离的,也就是一个前端,只需要后端提供数据,而数据来源大可以换一种架构或编程语言来实现,这些都无所谓。 而 大家都知道现在的编程语言都有元数据这种包含数据类型与操作描述的东西,那么用反射,我们就可以使约定成为实实在在的类型。
ajax方面,我们就只需要将自己想要的东西写在form中,添加name,然后序列化后 传输到后端,而后端,我们就以此name 约定为自己的实体model的property来反射实现实体的自动赋值,这样也就达到了knock out request的目的,据我所知,现在流行的oo web语言等包括 Php jsp c#都有各自的反射机制,所以机理也是一样的,这样就实现了只有一个输入点。也就是配置了Name,全局再不要配置,接下来就是完全的oo了,可以restful,可以各种方式操作对象了。
Ps:web ajax开发中,若要使用http handler也可以,只是 方法过多,往往会出现很多个handler,而反射 method invoke方法 和入口后 使用工厂来创建的方法又往往要求过多,你不得不按约束来弄一堆,而且这种方式总感觉不是那么优美,最后选择了webservice,虽然.net2.0下没安ajax扩展会出现找不到scriptservice,但也只需要将最后返回的xml中取string tag中的内容即可,而json从来都是一个js对象,目前已经成为web中传输的一种标准。
总结吧:从request中直接反射来取model,因为数据无非就在于request 的form和query string两个集合中,通过一次约定name,这样就实现了只有一次输入,完全的Oo入口,最小化了配置入口的思想。
补充:我个人认为,反射取值的时候,倾向直接按索引key来取,而把request null的异常扔掉,这样可以提高一些性能上的优点,因为 按表索引 和全文搜索的区别用在这里,取特定值的时候尤其是在已经加了索引的键值上,自然是直接取键值快过循环对比再取。此处的类型转换,是将类型转换为Model的property type,catch时 将这个异常忽略我想会比较好一些。
.net开发,html ajax开发架构之我见 bs ajax最简化法 Knock out Request,totally oo的更多相关文章
-
ajax(ajax开发)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...
-
界面开发工具集Telerik UI for ASP.NET AJAX发布R2 2019
Telerik UI for ASP.NET AJAX拥有构建ASP.NET AJAX和SharePoint应用程序的80+控件,将为任何浏览器和设备构建Web Forms应用程序的时间缩短一半.Te ...
-
MVC5 网站开发之五 展示层架构
展示层由Ninesky.Web项目实现,负责网站内容的显示,项目包含Member和Control两个区域. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项 ...
-
Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...
-
Ajax开发中服务端Response的Content-Type
转自http://www.cnblogs.com/hyl8218/archive/2010/03/10/1681484.html ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法 ...
-
实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构
系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求 实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目 实战使 ...
-
Web的Ajax应用开发模式(二)——Ajax开发模式分析
寄语: 前天在查看一些公司的招聘要求时,看到有公司要求测试人员了解Ajax,故写此博文旨在帮助测试人员提高自身技术知识水平,愿与广大测试同胞共同进步.(欢迎纠错!!!) Web应用的传统开发模式总结: ...
-
iOS开发之组件化架构漫谈
前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...
-
转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
随机推荐
-
nes 红白机模拟器 第3篇 游戏手柄测试 51 STM32
手柄使用的是 CD4021 ,datasheet 上说支持 3V - 15V . 因为手柄是 5V 供电,2440 开发板上是GPIO 3.3V 电平,STM32 GPIO 也是 3.3V (也兼容5 ...
-
UNIX基础知识之出错处理
当UNIX函数出错时,常常会返回一个负值,而且整型变量errno通常被设置为含有附加信息的一个值.例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1.在open出错时,有大约15种 ...
-
【InstallShield】 为什么卸载后有的文件没有删掉
1.Component的属性Permanent设置为Yes. 2.Component的ID为空. 3.Component被其他应用程序或者Feature使用. 4.设置了一个Condition,在安装 ...
-
C# Struct的内存布局
转载:http://www.csharpwin.com/csharpspace/10454r4891.shtml 问题:请说出以下struct的实例大小以及内存布局 struct Struct1 { ...
-
javascript 学习总结(九)面向对象编程
1.面向对象的工厂方法 function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; ...
-
WCF 学习笔记之双工实现
WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...
-
[ SharePoint ADFS 开发部署系列 (一)]
前言 本文完全原创,转载请说明出处,希望对大家有用. 随着企业信息化建设逐渐成熟,基于微软体系的企业内部系统架构在众多企业中得到应用,随之而来的用户统一身份认证(SSO)问题成为企业IT部门急需解决的 ...
-
今天想写一下关于SpringMVC的视图解释器
昨天我写了一下SpringMVC最爱金丹的项目的配置流程,这样搭建完项目之后呢我发现我每个请求都得加个.do什么的后缀,这让我开发得很不爽,于是呢今天就想配置一下这个试图解释器,这样做的目的有两个:第 ...
-
[故障公告]阿里云“华东1地域部分负载均衡https访问异常“引起部分站点无法访问
今天上午 9:40 - 11:06 左右,由于阿里云“华东1地域部分负载均衡https访问异常”,造成我们的部分站点(尤其是博客后台)无法正常访问,给您带来了很大的麻烦,请您谅解. 现已恢复正常,如果 ...
-
day25 初始面向对象
类 有具体规范,无具体值对象 有具体的值 dict 类d = {"":""} 对象 自定义一个类格式: class 类名: # 可以跟()或者不跟 属性 = ' ...