项目考虑因素及解决方案(.net)
项目考虑因素及解决方法
在项目开发过程中,我们会考虑很多相同的问题,比如在设计过程中的技术选型,开发过程中的多语言、界面客户自定义问题,使用过程中的系统远程更新问题。在此,仅列出一些常见的解决方法,知识所限并非最优方法,只作为参考。
多语言支持
比较常见的方式有两种,第一种方法,使用.Net支持的多语言解决方案,在开发过程中编辑窗体资源文件,从而实现界面在不同语言之间的翻译及排版,以适合不同国家、不同地区的风格和要求,不论Web或者WinForm应用均可采用;第二种方法则可采用运行过程中加载本地或远程的字典文件动态翻译。
相对来说,第一种方法运行效率比第二种方法要快,而且可以在运行前就能定义针对不同语言的界面。
界面自定义
我们在同一系统的项目开发过程中可能会遇到不同客户对同一界面要求不一样,包括界面显示名称和界面的排版,比如同是“客户”,这个项目希望显示为“经营单位”,那个项目却要显示“供应商”,更有甚者希望将这个控件移动到其他位置或者不可见。比较常见的方法是对具体界面控件属性进行描述,然后在运行时根据这些描述重新设置控件属性,或者采用复杂的方法就是实现窗体的动态创建,相对第一种方法,难度大了很多。
负载均衡
网络负载均衡技术保证即使是在负载很重的情况下也能作出快速响应,Web系统中应用比较普遍。在实际的设计中,我们需要根据系统的瓶颈决定是否使用负载均衡,以及何处使用负载均衡技术。比较常见的是除了Web请求响应以外,还有就是分布式统中的服务层。负载均衡产品基本上可以分成两大类:基于软件的负载均衡产品和基于硬件的负载均衡产品。想节约成本,就使用Win Server版本的负载均衡功能。
代码保护
为了保护知识产权,一般的做法都会对发布的组件进行混淆或者代码加密。混淆可以增加代码阅读难度,但无法阻止代码被反射。加密可以阻止一般反射软件对组件代码的反射,连程序的结构都无法获取。
如果是小型项目,各组件间的耦合度较低,而且为了节省成本,可以考虑使用免费的混淆器,比如Dotfuscator、Xenocode PostBuild等。
如果项目比较大,而且各组件之间调用关系复杂,为了减少混淆的难度,可以使用加密软件,加密过程也很简单,比如MaxtoCode、DNGuard等。
防止组件修改
使用强命名标识组件。(sn.exe产生签名文件)
系统使用授权
通过授权,您作为组件或控件作者,可以验证开发人员是否被授予使用您的组件或控件的权限,来保护的知识产权。可以使用System.ComponentModel.LicenseProvider 实现,也可使用第三方的授权软件,设定组件的使用期限、使用次数等。当然,也可不用那么复杂,自己实现一个License机制,通过启动程序检验License的有效性来决定是否启动程序。
系统更新
解决该因素的方法有很多,既可编程实现,使用WebService、WCF等技术实现本地、跨网络、跨平台的系统更新,也可采用现成FTP工具进行更新。
面向切面编程
是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的一种技术。比如面向切面编程将诸如事务、日志管理等本来横向分布在多个对象中的关注点进行了模块化处理。基于.Net平台的AOP框架有多种,比如Spring.Net。我们可以通过Spring.Net中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。
控制反转
IoC,Inversion of Control,控制反转,其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you。组件初始化和调用都由IOC容器负责,通常用于降低对象之间的耦合。基于.Net平台的IOC框架有多种,比如Spring.Net。
对象关系映射
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象持久化到关系数据库中。基于.Net的ORM框架是ADO.Net Entity Framework、Nhibernate、IBatisNet。
Created:20080506
Modified first:20080507
Modified secondly:20080515