• 个人集成平台

      前段时间学习了一下Prism,感觉应该找个机会实践一下,而且前段时间,贱内(希望我老婆看不到这篇文章:))让我帮她做个定时提醒的小工具,做好之后感觉以前做了好多自己能用的小工具,如果能够整合到一起,该多好,所以,想起来做个个人工具集成平台,用来继承一系列我自己的以前做过的小软件。 知识背景   主要的知识背景是基于WPF的框架Prism,这个框架是微软的CodePlex中的一个Team开发的平台,现如今貌似已经发布4.0了。唉,说到这里,我以前的公司就是用的这个框架做的应用程序,现在的公司虽然比以前的公司待遇好了,不过用不着做WPF了,也基本上不使用任何框架开发,郁闷啊,呵呵,发发牢骚。在我的“个人平台”里面,没有使用整个框架,只是将框架减配加到我的基础类库里面。使用的东西包括,“Bootstrapper”,“ServiceLocator”,还有“Modularity”,而且我只是借用了他们的思想,然后进行了轻量级的实现。特别是其中的“Modularity”部分,我使用了微软推出的MEF架构进行了简单的实现,经过单元测试,效果不错。   大家如果有兴趣研究Prism的知识,可以访问下面的链接:   http://compositewpf.codeplex.com/   应用程序的外壳使用WPF的应用程序,并且采用了MVVM模式,个人感觉这种方式更有利于子系统的集成。希望大家要是进行WPF的开发一定要关注这种模式,能够带来很多好处,比如:解耦、利于单元测试、界面利于更换等等。 名词解释   模块:  实现应用程序(个人集成平台)功能的各个部分;   子系统: 能够集成到应用程序(个人集成平台)中的各个功能插件; 系统结构 图1 Personal Integration Platform系统结构图   (1). Personal.Component   作为基础模块,借助于Prism的思想,轻量级的实现了部分Prism的功能。包括Bootstrapper,ServiceLocator,以及Modularity(使用MEF架构)。   (2). Personal.Presentation   作为基础模块,对WPF的MVVM模式进行了简单的支持。   (3). IntegrationUtilities   对子系统集成的逻辑进行支持,在此模块中定义了集成的规范的数据结构,以及用于子系统集成的服务(服务的概念借助于Prism中的ServiceLocator)。   (4). PersonalIntegrationPlatform   个人集成平台,这个也就是这个应用程序最核心的部分,整个应用程序的入口,外壳程序。   (5). NotifyIconWpf   一个第三方的开源WPF控件,用过Winform的同志们都知道,NotifyIcon是个系统托盘。因为我希望的是,我的软件运行后直接运行在托盘中,而不是在桌面上占据个Form跑着,我觉得大家平时用软件,肯定没有那么多时间老是盯着一个Form在那里操作,因此,我觉得采用系统托盘的方式比较好,需要的时候打开,不需要的时候,就在系统托盘里面呆着。   (6). Sub-System   子系统,可以有任何有.net知识的人员开发并且集成到平台中,只要符合集成平台的集成规范就可以。现在已经默认集成了ShutDown子系统,后续还会集成我原来做过的一些比较有用的小程序。呵呵,大家有兴趣,也可以按照继承规范,向里面集成一些自己喜欢的子系统。 使用技术思想   谈到技术思想,主要的思想其实就是面向对象,因为那几个所谓的SOLID思想都是由面向对象的思想衍生出来的。希望大家读到我的这篇文章,不能够奢望大家有收获,但是,希望大家能够不把注意力过于集中到使用的技术,或者编程的技巧,而是集中到系统的结构以及技术思想的运用上。也就是说,不在乎怎么实现,而是在乎怎么组织。嘿嘿,这样就是我为啥给大家看这个系统的结构图,而不是代码的原因,在后面会附上这个项目的源代码,如果对大家有用的话,大家可以拿去看看。 集成方法   (1). MEF框架   MEF框架应该是微软在.net 4.0中推出的一种框架,我理解,主要就是运用IOC的思想进行解耦。最大的好处就是可扩展,这个思想其实早就有,想设计模式中的观察者模式,IOC/DI的思想,以及好莱坞原则,其实都是运用的这种松耦合,可扩展的模式设计的。所谓的松耦合,不是没有耦合,而是耦合到基础的框架,什么叫基础框架,就是谁都能耦合的框架,比如: 如果你写的是.net的应用程序,那你肯定要与.net进行耦合,所以解耦的概念是相对的,耦合才是绝对的。   这里只是想为大家引入这个概念与这种思想,这里并不对MEF进行详细说明,毕竟这种框架实现起来很简单,有兴趣的朋友可以查查MSDN。   (2). 配置文件   在配置文件中,配置扫描子系统的方式,文件夹扫描、程序集扫描或者混合扫描。   文件夹扫描——你需要在系统配置文件中制定要扫描的文件夹,MEF框架会去制定的文件夹中扫描;   程序集扫描——在配置文件中将扫描方式修改为程序集扫描,MEF框架会扫描当前AppDomain中所有的程序集;   混合扫描 ——呵呵,顾名思义,前两种方式的结合;   (3). 引用基础架构   需要引用上面系统结构图中所述的基础结构Personal.Component、Personal.Presentation以及IntegrationUtilities。记住咱们在第一点里面提到的,解耦是相对的,耦合是绝对的。 Benifits   这个平台有什么好处呢?   第一,让我练习了Prism和WPF,哈哈;   第二,提供了一个相对可扩展的系统,大家如果使用这个平台,以后只需要开发可集成的类库即可将子系统集成到平台中,节省了开发成本;   第三,由于平台使用了MVVM的模式,因此,能够轻而易举的换掉外壳程序,瞬间可以是应用程序变成你想要的样子。 Roadmap   我将会不断的更新平台,以后可能还会制作网络模块,让大家能够把自己的配置以及数据上传到服务器中,实现异地使用。后话后话,哈哈。

    2013-10-22
    20
  • WCF interoperation WebService

    WCF与WebService之间互操作,如何从WCF中导出wsdl文件,如何将wsdl文件导入为WCF Client

    2013-08-21
    7
  • MVC3操作Json

    使用MVC3实现对前台Json的数据操作,包括Post操作与Get操作,小弟也是初学,希望能够跟大家分享。

    2013-07-11
    9
  • MVCWebCompany MVC简单示例

    将这段时间自己对Asp.Net MVC、数据库以及jquery的一些学习成果分享个大家,希望对大家能有所帮助。 使用方法: 数据库方面: 1. 在你的数据库实例中新建Company数据库; 2. 首先执行附件文件夹中的DatabaseScripts中的Company脚本,此脚本会在Company数据库中新建本示例所需要的表与视图; 3. 执行PageBreak脚本,这段脚本会在Company数据库中新建PageBreak存储过程,用于分页(这段脚本是从网上下载的基于Max的分页存储过程,但是排序方面有一些小bug,我已经修改); 4. 执行InsertData脚本,此脚本会向数据库中插入数据; Asp.Net方面: 5. 本示例代码基于Asp.Net MVC3,使用Razor架构; 6. 使用了MSDN官方的MVC分页方案,但是略作了一些调整,业务逻辑层的调整; 7. 使用了JQUERY的UI库做了日期查询; 8. 更新页面使用MVC中的Ajax异步刷新; 9. 如果要运行本示例,需要在完成数据库的修改操作后,修改Asp.Net中的Web.config文件,修改连接字符串; 希望本示例能够帮助像我一样学习Asp.Net MVC的朋友们。

    2013-06-24
    9
  • EntityFramework示例

    Entity framework的示例,并提供了说明文档,提供配置的步骤

    2013-05-09
    9
  • 纪念日软件

    纪念日软件,请阅读其中的sn.txt文件

    2013-05-09
    33
  • DynamicMetaDictionary_V0.2

    使用IDynamicDataProvider接口实现DynamicDictionary,解决RunnerBindingException异常,并解决在重操作符请跨线循环赋值的问题。

    2013-05-06
    1
  • DynamicMetaDictionay(动态字典)

    使用IDynamicMetaObjectProvider接口实现DynamicDictionary,解决RuntimeBindingException异常。

    2013-05-02
    16
  • WPF中ItemsControl的异步加载

    WPF的ItemsControl的ItemsSource的异步加载,引用程序集,使用依赖项属性,可以异步加载。

    2013-04-09
    50
  • WPF关机工具

    WPF制作的关机工具,因为Win8种不好关机,因此只做了此软件,希望大家能够使用!

    2013-03-19
    10
  • 分享王者

关注 私信
上传资源赚积分or赚钱