【ACCESS精品源码栏目提醒】:网学会员鉴于大家对ACCESS精品源码十分关注,论文会员在此为大家搜集整理了“信息化基础建设_开发框架 - 其它资料”一文,供大家参考学习
开发框架1. ORM, LLBLGenNHibernate2. 接口与实现分离,界面与逻辑分离,分五个项目, BusinessLogicInterfaceManagerValidationEntryForm3. SQL 与 ORM4. 通讯集成 Remoting/WCF5. Control/Component:NumberiEditorTextEditorGridComboBoxListBoxListViewTree6. 异常7. 元数据ORM使用 ORM 可以减少大量的数据读写和绑定代码,做大型的项目,必须用 ORM再配合 CodeSmith 代码生成器,可以完成数据读写 90的代码。
界面与逻辑分离做一个 MIS 的库存项目,有四个项目BusinessLogic 业务逻辑,业务实体Interface 接口Manager 实现接口SystemAdministration/Inventory 界面这样达到的效果,1. 数据表新增加字段,界面部分不需要任何改动;2. 可以灵活的切换界面到 WPF/ASP.NET/Sliverlight3. 插件式 AddonPlugIn 式的开发,新增加功能,不需要改动原有的项目文件SQL 与 ORMORM 是跨平台的,要兼容所有的主流数据库,必需创建一种语法,以达到读写各种类型的数据库。
熟悉这个映射表,可以很快的入门,写出读写数据代码。
虽然这个步骤不是必须的(因为 CodeSmith 代码生成器会成 。
90的代码) 再配合 SQL 解析工具,输入 SQL 语句,实用程序SQLTranslate.exe可以自动翻译 SQL 为 ORM 的写法。
如果担忧 ORM 性能不好,可以直接使用 ADO.NET这个写法需要工具的配合,才能快速开发.这个代码生成器也是组合的方式,例如表名是 backupset Entity 实体 BackupSet ADO.NETGetSaveInsertUpdateGetList BackupSetDAL Interface 接口 IBackupSet Service 逻辑调用 BackupSetServiceASP.NET 应用代码生成器界面如下,配和 ADO.NET 或是 EnterpriseLibrary具有很强的威力。
最新版本的 ASP.NET 应用代码生成器,直接写成 CodeSmith 的模板。
这样,在改动生成的代码时,不需要任何编译动作。
CodeSmith 现有版本只支持.NET2.0不支持.NET3.5 和.NET4.0 虽然 CodeSmith6.0Alpha 已经释出,但是非常的不 stable.也没有 Studio 可以使用。
SQLProfiler 跟踪查询直接运行SQLProfile运行自己开发的SQLProfiler启动程序中增加配置节开启监听程序源代码如下或者运行如下的跟踪程序改进的智能提示支持当鼠标悬停在实体名上时,可以显示实体对应的表名当鼠标悬停在字段上时,可以显示字段对应的表名在 SQL 查询管理器中,当鼠标悬停在表名上时,可以显示表的注释创建表的描述创建字段的描述导入表中现有的字段描述,以达到最小的劳动量智能提示的设计演化过程1. 把提示内容放到
Access 数据库中,这样,拷贝到项目开发目录中即可。
遇到 ProviderMicrosoft.Jet.OLEDB.4.0 没有 64bit 的版本,编译时必须设置 x86 的平台格式,而不是 AnyCPU. 增加 ProviderMicrosoft.ACE.OLEDB.12.0,但是,在每台开发人员机器上安装这个组件,不太实现。
2. 使用 SQLExpress 这种方式的问题,还是需要配置 SQL,可尝试用 dbo4 之类的对象数据库,一个文件拷贝到指定 目录就可以(可行doable)3. SQLServer 内置实现方式,如下图 打开 SQLProfiler 秘密就在存储过程 sp_addextendedproperty最后,干脆做一个工具,专门用于更新字段的描述,这样会方便很多。
Remoting/WCF 通讯技术功能目标1. 应用程序服务器 Remoting/WCFServer2. ReportServer3. WorkflowServer4. 并发用户控制,跟踪日志输出Traceoutput,组件授权验证License 许可控制用 RSA 签名 xml 文件,生成不可修改的 xml 文件,以保护软件授权许可与硬件CPUHarddisk信息绑定,在生成 license 文件时,先要求用户运行一段实用程序,生成一个 hardware 的 sinature的文件,licensegenerator 依据这个文件生成许可文件。
与软件绑定, 比如演示版不允许数据库超过 2G 的容量大小SQLExpress 规定数据库大小不能超过 4G; 只能在规定的时间内运行,通常是一个月,过期后软件无法启动;不允许在虚拟机Virtual Machine中运行,因为虚拟机的原因,整个系统可以无限制的被 Ghost 还原;ReportExtension经典的 SQL 查询语句的写法是这样可以制作出客户报表现在我们换成这样的查询数据库的写法2 种方式,SQLProcedure 和.NETAssembly可维护性肯定后者强于前者,性能的损失也有.后者也只有程序员可以维护报表,客户不可能懂.NET.但是,面对日益复杂的业务逻辑,多数据库需求的客户(有的客户指定要用 Oracle)用.NETAssembly 应该是一种趋势。
数据库管理一个框架数据库,驱动多个业务数据库。
一个业务数据库可以看成一套帐,可以独立进行版本管理, 功能控制;也可以针对不同的客户需要,定制customization。
如下的注册公司的界面,Driver Assembly 和 Driver Type 即是注册客户定制的程序集,以达到同一个产品,维护多个客户,不同行业的客户的使用。
性能Reflection的损失是不可避免的,同时也带来相当可观的灵活性。
Microsoft 的产品也经常 Reflection为什么我们不可以,为一点斤斤计较的 Performance认证 authentication,授权 authorization 模式(AD/Forms/Windows)因为我们已经设计出了 ApplicationServer所以这个地方可以为所欲为,尽情的发挥。
看 K3 的登陆方式ActivityDirectory 的方式,是推荐的企业局域网构建方法,AD 带来的 PC 间相互信任的关系,好处简直让人不可忘却。
Forms 方式,可以对用户名和密码进行加密,可以记住用户名和密码,定期要求用户修改密码ReportingServices 的默认登陆方式是 Windows我们需要把它重写成 Forms很遗憾,即使是 MicrosoftSQLServer2008R2仍然需要手动修改配置文件,以改成 Forms 认证。
计划中,要制造一个小工具,来修改 ReportingServices 的认证方式,手动的配置有些复杂,容易出错。
再来看集成到 ERP 中的 ReportManager 的登陆方式再来看一下授权,三种权限:功能权限,字段权限,数据权限功能权限 基于角色的认证授权 对各子系统的功能模块的执行权限先设定用户组别权限再到用户注册时,设定用户所属的组别可实现 ERP 系统中 60的权限需求。
字段权限也实现,如上图,Demo 用户不可以访问所有的报表,但是可以读取所有的客户和供应商信息。
字段权限对某些特殊的字段进行控制,如仓库人员不可以看到采购员输入的物料单价,A 销售员,不可以看到 B 销售员的客户的联系方式,数据权限,是对具体数据的操作权限。
比如,当采购金额达到 10 万时,财务经理 FinanceManager 不可以直接修改;于是做出一个数据权限编辑器如图中显示的条件,采购单总金额大于 1000000费用大于 5000而且供应商为 Maskey.这个条件是可以动态增加和删除,在运行时,由表达式引擎负责解析表达式,传回表达式执行的结果。
异常处理在业务系统中,异常可实现 N 层撤消回滚的能力。
为了不暴露具体的产品实现细节,异常的显示方式,设计如下的异常对话框。
实现方式是注册当前应用程序域的 UnhandledException 事件,将异常显示在自定义对话框中。
AppDomain.CurrentDomain.UnhandledExceptionnewUnhandledExceptionEventHandlerCurrentDomain_UnhandledException观察一下 Microsoft 的产品对异常出错的提示,MicrosoftReportBuilderMicrosoftSQLServerSQLServer 出错窗体的左下方,有三个按钮,Help,CopymessagetextShowtechnicaldetailsShowtechnicaldetails 会打开一个 stacktrace 的窗体,用于诊断出错的细节信息。
异常的传送实现,有二个思路1. 运用 EnterpriseLibrary 的 LogApplicationBlock,将异常重定向的各种输出设置中ConsoleFileDatabase2. 使用 TCP Socket 技术,将异常发往指定的服务器,并记录用户的操作步骤。
因为已经制作出了 Application Server 所以,这个地方实现起来也很简单。
至于发送出错时,当前的操作用户名称,stack 信息,甚至可以 copyscreen, 把当前出错的屏幕图片也一同发送到服务器指定目录中。
应用框架代码,将会大量使用.NETTrace 机制,将框架的运行状态输出PublicclassSQLServerTraceListener:TraceListener publicoverridevoidWritestringmessage usingSqlConnectionconn newSqlConnectionserverlocaldatabaseTraceDatabaseIntegratedsecuritytrue usingSqlCommandcmdconn.CreateCommand cmd.CommandTextINSERTINTOLogsMessageVALUESmessage cmd.Parameters.AddnewSqlParametermessagemessage conn.Open cmd.ExecuteNonQuery conn.Close publicoverridevoidWriteLinestringmessage Writemessage 这样读写 SQL 会导致 Performance 下降,推荐的方式是 TCP Socket 技术,把异常发送到服务器Application Server大量的异常,是不需要处理的,比如,用户登录时输错密码,没有必要大量的写到服务器的数据库中。
框架代码可以识别哪些是关键代码出错,这些异常则很有必要记录到持久化介质中以供开发人员诊断。
元数据管理SchemaViewer ERP 维护人员最关心的数据表字段,到底存放了一些什么内容,数据间的关系数据间关系.NET 属性代码从图中看到,已经将 TableName 放到了 Xml 注释的 summary 中,这样,充分利用.NET 智能感知。
框架数据库,还有大量的元数据管理:ReportLookupQueryWorkflowFormLayoutUser/UserGroup
上一篇:
2012年秋季江苏省高校计算机一级B考试理论题(附答案)
下一篇:
政府形象媒体危机的处置策略研究