好多技术人员都有一个通病,不关注用户的需求,产品的可用性,只看使用的技术的新不新,潮不潮,这就是所谓的技术发烧友。

这段时间,断断续续的开发一个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上,减少了业务层代码,业务层重点放在了处理业务上。

总结:

此软件在用户操作体验,代码结构上都有待改进的地方,在上文的介绍中,你对某个东西感兴趣可以在博客园发短消息联系我,一起探讨,共同进步。

如果想获取源码,可以请我喝一杯,毕竟辛苦了好久,支持我一下。^_^  源码下载

WPF版的权限管理系统的更多相关文章

  1. wpf版权限管理

    之前做的权限管理是基于Mvc的Web项目,模型.仓储及业务层次分明,6月中旬开始使用这套之前完成的底层架构开发Wpf版本的权限管理软件(后续将成熟企管系统进行抽象业务加入到该版本中,向企管系统靠近) ...

  2. 分享一个html+js+ashx+easyui+ado.net权限管理系统

    EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...

  3. Angularjs,WebAPI 搭建一个简易权限管理系统

    Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一)   1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...

  4. html+js+ashx+easyui+ado.net权限管理系统

    分享一个html+js+ashx+easyui+ado.net权限管理系统   EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也 ...

  5. 转载——分享一个html+js+ashx+easyui+ado.net权限管理系统

    EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...

  6. .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目

    系列目录     [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...

  7. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

随机推荐

  1. ruby on rails爬坑(三):图片上传及显示

    一,问题及思路 最近在用rails + react + mysql基本框架写一个cms + client的项目,里面涉及到了图片的上传及显示,下面简单说说思路,至于这个项目的配置部署,应该会在寒假结束 ...

  2. C# 微信v3退款

    1.退款需要退款证书.C#都是用p12的证书,双击证书导入,密码是mch_id(商户号) 2.调用微信退款接口进行退款操作 string resp=string.Empty string cert = ...

  3. Tomcat7下出现The requested resource(/)is not available

    1首先确保你的localhost是否正常运行解决方案:1观察项目是否部署2重新将tomcat7导入 2确保你的项目名后跟index.jsp是否正常运行解决方案:1右键项目名,web进行查询,观察部署的 ...

  4. 用SYS_CONNECT_BY_PATH进行层级查询时的排序问题

    用SYS_CONNECT_BY_PATH进行层级查询时, 对同一级别的节点进行排序,可以加order SIBLINGS by 子句实现 WITH N2 AS( SELECT n.ID, org.&qu ...

  5. 一台MySQL服务器启动多个端口

    一台MySQL服务器启动多个端口 在测试Mysql多主一从服务器,即一个从服务器多端口同步不同主库.本文记录了开启不同端口的操作. 详细步骤: 1.首先要先把my.cnf配置文件复制一份,开几个端口要 ...

  6. java中枚举(enum)小例子。之前学过枚举但是一直没用,这里有个枚举类帮你我理解下(很肤浅)

    直接上枚举类,代码简单易懂. package com.jy.modules.cims.data.interact.tbj.loan.request; /** * * @author shengzhou ...

  7. WPF Touch操作滚动条,Window弹跳

    WPF,用ScrollViewer控件,触屏开发,当滑动到最后时会使整个窗体弹跳一下 原因是因为ScrollViewer触屏操作原生支持惯性,ScrollViewer中的内容滚动到边界是会自动触发Wi ...

  8. Django-数据模型

    修改model.py文件 from django.db import models # Create your models here. class Question(models.Model): q ...

  9. C# 委托学习笔记

    接触委托 代理 delegate很久啦.除了看API,Kotoba也给我讲了 .说到委托,拿下面这个小例子比较好.(14年6月26花花给我的练习) 实例:写一个方法A,定义个方法B(打印hello), ...

  10. 好玩儿的Game

    1. 种类: 威佐夫游戏, Bash游戏, Nim游戏, 等. 2. 理论: 胜态一定可以通过某种策略走向必败态; 而必败态采取任何策略都将走向胜态. 用图论的话来说, 因为必败态只能走向胜态, 所以 ...