好多技术人员都有一个通病,不关注用户的需求,产品的可用性,只看使用的技术的新不新,潮不潮,这就是所谓的技术发烧友。
这段时间,断断续续的开发一个WPF的软件,也拿出来Show一下。要不放在硬盘里就发霉了。
热点一:SOA的分布式理念
现在的开发理念,不管是企业级的ERP,还是网站式的应用,都涉及到了SOA的分布式。就拿一个比较典型的网站来说吧,做网站的童鞋们对CAS,SSO这些关键字并不陌生吧,实质就是应用了SOA的理念,把一个网站平台的认证授权单独抽取出来独立成一个系统,其它业务网站的认证授权都以这个为基础,实现了单点的登录,授权。其实在企业级的ERP中,我们也是这么干的,我们把认证授权提取成一个独立的基础平台(这个甚而平台有可能包括:公共基础数据系统,消息系统,工作流,报表)的一个子系统,其它业务系统都围绕着这个基础平台进行开发。如下图所示,把每个业务系统的权限都提取出来,放在基础平台。
因为这是一个基础开发平台,所以必须为别的应用程序留下服务接口,方便的与别的应用程序通信,实现其软件的价值。
热点二:WCF的安全机制(拦截器)
我们把通用的功能都提取出来组成了一个基础开发平台,以后的业务系统都只关心业务固然是好。不过有点乌托邦了。你想想,业务系统与基础系统怎样通信?怎和样保证通信的安全,这个问题曾经困扰了我好久。系统之间的通信,大家不约而同的可能都想到了Web Service或者WCF吧,不过怎样保证Web Service,WCF的安全呢?我还看到过有人用javascript来调用web Service(Web Service做的是CRUD的操作),这是把自己的衣服脱了赤裸裸的让别人来攻击,给我吓出了一身冷汗呀!
那我们怎样来保证Web Service 或者WCF的安全呢?最笨的方法可以为每个WCF或者Web Service定义两个参数(一个用户名,一个加密码的密码), 或者再改进一下定义一个Token的参数(这个方法我这样做过,鄙视自己一下),有的为了代码看起来更优雅一些,在请求服务时把这个Token写在Header里。然后在执行Web Service 或者 WCF的主体之前,根据传过来的参数在数据库里查询一下,判断这个请求是否有权限。不过一些中大型的系统,一般都会有上百甚至几千个Web Service,每个服务都定义一个参数,或者在Header里定义一个键值对,是不是显得代码很臃肿呢?我们针对这样的问题,我们采用WCF特别的机制拦截器。 WCF中的拦截器其实就是AOP的一个实现,当然这个实现我们也可以自己来写。
在调用每个Web Service或者WCF之前,我都加一个Token在Header里,这个动作,我们完全可以公用,就是采用AOP技术。
在公共基础平台接收到请求的时候,同样可以用AOP的技术,判断Token是否有效。具全实现看源码。
热点三:WPF
在bs结构的系统中,HTML5的UI比较有前景,在cs结构的UI中,我想WPF应该有她独特的优势,在这儿我们暂时不讨论平台的好坏,技术优劣。且看我怎样用WPF来实现一个软件的UI。
1)个性化的菜单:
2)炫耀的表单验证
3)自定义,动态生成xaml的模板
4)目前正在用mvvmlight改写原有的代码。
这些亮点都不得不让我用WPF,这是一个技术爱好者的执着追求,是我的理念。
热点四:Code First
我们什么SOA, AOP, IOC等热点技术都用上了,千万不要拉下了ORM,ORM有Ibatis, hibernate,daper等,但是从性能,可使用性上来说各有千秋,没有优劣,但是我感觉在.net平台上,只有entity framework才是真正的可用orm。entity framework有三种模式,mode first, database first, code first。我为什么在这个项目中选择code first是有原因的。因为我定义的实体,既想作为生成数据库的定义,又想作为WCF中数据传输的数据契约。往往单方面从一个技术角度来看并不难,但是技术与技术叠加,就会出现很多稀奇的问题。我上一段代码片段:
其中红色的是WCF数据契约的标识,蓝色的是Code First的数据定义。把这两种定义都集中在Model上,减少了业务层代码,业务层重点放在了处理业务上。
总结:
此软件在用户操作体验,代码结构上都有待改进的地方,在上文的介绍中,你对某个东西感兴趣可以在博客园发短消息联系我,一起探讨,共同进步。
如果想获取源码,可以请我喝一杯,毕竟辛苦了好久,支持我一下。^_^ 源码下载
获取提取码的方式:
1:如果发起有开源项目,给我一个地址认证一下,可以免费获取文件提取码。
2:付费20元人民币,可以获取提取码:支付宝 : sam_xcj@126.com
如有疑问,请咨询QQ:458666015
相关推荐
【软件开发技术报告】主要探讨了GPS全球定位系统的软件开发技术,特别是关于卫星星历的计算和GPS单点定位的数学模型。GPS是美国在20世纪70年代开发的全球卫星导航系统,具备高精度、全天候的定位能力。随着技术的...
软件技术是指开发计算机软件所需的所有技术的总称,包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、网络软件技术等。软件技术的领域非常广泛,涵盖了软件开发的各个方面。 软件危机...
软件系统设计技术方案(解决方案) 在软件系统设计技术方案中,需要考虑多种要素,以确保系统的高效、安全和灵活性。本文档将围绕博通协同办公系统的设计,提供技术方案和解决方案。 一、系统架构设计 博通协同...
### 几个必要的软件技术指标 #### 设备无关性 设备无关性是现代软件开发中的一个重要概念,旨在确保软件能够适应不同的硬件环境,无需针对每种特定设备进行定制开发。这种特性极大地提高了软件的灵活性和可扩展性...
软件测试的技术,七章,介绍软件测试在各个阶段(单元测试、集成测试、系统测试、验收测试和安装测试)的技术和方法,以及典型测试领域的特点和技术 软件测试的实践,六章,介绍软件测试 的团队和环境的建立,以及...
软件加密技术内幕软件加密技术内幕软件加密技术内幕软件加密技术内幕软件加密技术内幕
JavaWeb 软件项目技术方案概述 在本技术方案中,我们将详细介绍 JavaWeb 软件项目的技术架构设计和实现方案。这份技术方案的目的是为了提供一个可靠、可维护、高效的软件系统,满足用户的需求和期望。 1. 设计依据...
里面有4份文档,基本上涵盖软件项目技术应答部分,可以用于技术标书制作时参考。四本分别为:IT项目实施与管理方案-投标书.docx、非常全的软件设计方案.doc、天津市南开区卫生局信息管理平台系统软件采购项目-投标书...
高中信息技术模考软件是一款专为福建省高中生设计的教育软件,旨在帮助学生进行信息技术科目的模拟考试,提升他们的学习效果和应试能力。该软件涵盖了高中信息技术课程的主要知识点,包括计算机基础知识、编程语言、...
《软件项目技术方案书》是IT行业中至关重要的文档,它为软件开发过程提供全面的指导,确保项目的顺利进行。这份模板涵盖了华为等领先企业的实践,是开发者、项目经理和团队成员的重要参考资料。以下将深入探讨软件...
此书不仅适合测试从业者作为学习和参考的教材,也对那些希望提升软件质量的开发人员、项目经理及对软件测试感兴趣的读者具有很高的参考价值。通过本书,读者可以领略到软件测试的内在逻辑,掌握测试过程中的关键技巧...
前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证与测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试的技术 第5...
软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模技术软件建模...
可行性分析报告.doc 技术改革贷款合同.doc 概要设计说明.doc 测试分析报告.doc 电能质量数据分析软件软件评审检查单.doc 硬件总体设计报1.doc 硬件总体设计报告.doc 设备招标中心公告.doc...
"软件测试方法和技术.zip"这个压缩包很可能包含了一系列关于软件测试的详细资料,涵盖了多种测试方法和技术。以下是对这些关键概念的深入解释。 1. **黑盒测试**:这是一种不考虑内部结构或工作原理,仅关注软件...
### 软件架构技术文档知识点详述 #### 一、软件架构定义 **软件架构**(Software Architecture)是指导大型软件系统各个方面的设计的一种抽象模式集合。它描绘了一个系统的高级蓝图,涉及到直接构成系统的抽象组件...
10.3软件本地化测试的技术问题 10.4本地化测试的重点 2 10 第11章 软件测试自动化 11.1测试自动化的内涵 11.2 测试工具的分类和选择 11.3 测试工具的主流产品介绍 11.4 IBM-Rational产品的整体解决方案 11.5 ...
参加投标供应商需保证所提供产品符合本次招标要求及国家相关产品,符合ISO质量体系认证、售后服务技术支持,具备知识产权保障的最新质量标准的产品软件。