您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 企业程序库(Enterprise
DEV205企业程序库(EnterpriseLibrary)王筱东战略合作伙伴技术经理平台及开发技术部微软(中国)有限公司日程企业程序库前世今生企业程序库的7种武器合作伙伴成功案例(中软融鑫)Q&A企业开发中经常谈论的话题:几乎所有的企业应用都有一些类似的需求编写一个组件以便简化对存储过程的访问构建一个日志机制能将错误信息进行多渠道的输出构建一个基于角色的用户权限管理机制对敏感数据进行加密我们如何实现这些常用的需求?百家争鸣时代各企业内部根据自身需求编写组件类似的代码在不同的企业被一次又一次地重复企业开发的经验与最佳实践得不到共享应用程序块时代应用程序块是开源的.NET组件,是微软与合作伙伴多年实践与经验的总结可重用,可扩展,可修改通用服务e.g.日志,缓存,数据访问,配置…可重用的架构e.g.自动更新,离线应用,用户界面处理…群众的呼声各程序块间应提供一致性保障对程序块的评估及理解应更加容易减少相互间的依赖(如ExceptionManagement)容易对程序块进行配置易于扩展应用程序块重装上阵一致性采用了一致的设计模式和实施方法扩展性编写代码以插件的方式外挂到应用程序块上进行扩展易用性充分利用图形化配置工具提供了简明、完整的文档及快速启动案例集成性各程序块既能相互工作.又能独立工作企业程序库时代2005年1月发布第一版,最新版本在6月发布可重用的应用程序块库,用于解决企业级开发中所面临的常见挑战较低风险(实践是检验真理的唯一标准)降低成本(可重用性)快速实施的问题(易用性)当前有7个应用程序块组成免费下载SecurityCryptoDataAccessLoggingCachingExceptions企业程序库LegendDependencyPlug-inConfigurationConfigTool日程企业程序库前世今生企业程序库的7种武器合作伙伴成功案例(中软融鑫)Q&A霸王枪-配置程序块SecurityCryptoConfigurationDataAccessLoggingCachingExceptionsConfigTool配置程序块-百兵之祖为应用系统提供了公用的配置管理解决方案,允许应用程序方便灵活地从不同配置存储读写配置信息隔离应用程序和配置数据的物理存储位置StorageProviders:允许从不同的物理存储读写信息(如SQL/XML)Transformers:将读取的配置数据经转换器转换为结构化数据内置对XML的支持改善安全性(支持加密保存)配置文件监控器能够监测到配置文件的变化并发出事件通知配置程序块示例EditorFontDataconfigData=NewEditorFontData();configData.Name=fontDialog.Font.Name;configData.Size=fontDialog.Font.Size;configData.Style=Convert.ToInt32(fontDialog.Font.Style);//writeanobjectinfotoconfigfileConfigurationManager.WriteConfiguration(EditorSettings,configData);PublicEditorFontData(){PrivatestringfontName;PrivateDoublefontSize;PrivateIntegerfontStyle;}//ReadanobjectwithmultiplepropertiesEditorFontDataconfigData=ConfigurationManager.GetConfiguration(EditorSettings)SecurityCryptoConfigurationDataAccessLoggingCachingExceptions碧玉刀-数据访问程序块ConfigTool数据访问程序块-大开大阖对数据库访问提供了简单、高效的访问方式屏蔽了对常用ADO.NET使用的复杂度,使用单条语句即可完成对存储过程的调用为SQLServer,Oracle,DB2提供了统一的编程当移植应用程序到不同数据库类型时,减少重写代码的数量搭起了逻辑数据库与物理数据库间的桥梁,降低改变物理数据目标的难度容易对数据库访问的配置信息进行调整和验证数据访问程序块架构数据访问程序块示例PublicFunctionGetProductsInCategory(ByRefCategoryAsInteger)AsDataSet'CreatetheDatabaseobject,usingthedefaultdatabaseservice.The'defaultdatabaseserviceisdeterminedthroughconfiguration.DimdbAsDatabase=DatabaseFactory.CreateDatabase()'Invokethestoredprocedurewithonelineofcode!returndb.ExecuteDataSet(GetProductsByCategory,Category)'Note:connectionwasclosedbyExecuteDataSetmethodcallEndFunctionSecurityCryptoConfigurationDataAccessLoggingCachingExceptions长生剑-异常处理程序块ConfigTool异常处理程序块-攻如风,守似磐异常处理程序块为系统的不同层面提供了一致的例外处理策略异常由配置工具进行定义和维护–不需要通过编码控制例外处理定义“异常策略”,可指定该策略发生时的行为将异常写入日志用另外一个异常进行封装采用不同的异常替代以便隐藏敏感的异常信息创建自己的Handler,提供附加的处理行为异常处理程序块示例DataSetcustomersDataSettry{customersDataSet=RunQuery(“GetAllCustomers”);}catch(Exceptionex){stringformattedInfo=FormatException(ex);Logging.Log(formattedInfo)ThrownewDataAccessException(“DatabaseaccessfailureforqueryGetAllCustomers”,e)}WithoutExceptionHandlingAppBlock1.0DataSetcustomersDataSettry{//SomecodethatmaythrowcustomersDataSet=RunQuery(“GetAllCustomers”);}catch(Exceptionex){if(ExceptionPolicy.HandleException(ex,“DataAccessPolicy”))throw;}Exceptionpolicy:“DataAccessPolicy”Exceptiontype:System.Data.SqlClient.SqlExceptionExceptionHandler:LoggingHandlerWrapHandlerexceptionhandling.configWithExceptionHandlingAppBlockSecurityCryptoConfigurationDataAccessLoggingCachingExceptions离别钩-缓存程序块ConfigTool缓存程序块-心神合一灵活的缓存机制可以用于以下各种类型的应用架构:WindowsFormsConsoleapplicationNTService/COM+ServerASP.NETWebapplicationorWebservice支持两类缓存机制:In-memorycache–非永久缓存,但性能很好Backingstore–永久性缓存,但较慢易于使用提供了Cache处理需的所有功能(添加,查询,删除)可配置的过期策略SecurityCryptoConfigurationDataAccessLoggingCachingExceptions孔雀翎-加密程序块ConfigTool加密程序块-第一暗器简化了开发人员为敏感信息进行加解密工作加解密任何类型(Stream/Byte)的信息提高易用性(CreateHash/CompareHash)支持多种加解密算法支持所有.NET提供的加密算法通过DPAPI,对单台计算机上的信息进行无密钥加密允许集成自己开发的加解密算法Provider提高集成性算法与密钥可以通过配置工具进行配置SecurityCryptoConfigurationDataAccessLoggingCachingExceptions多情环-安全程序块ConfigTool安全程序块-人情色彩帮助开发人员在应用程序中实现通用的安全相关任务认证授权角色管理Profile管理简单的方法AuthenticateAuthorizeGetRolesSetProfile基于应用安全的最佳实践安全程序块架构SecurityCryptoConfigurationDataAccessLoggingCachingExceptions拳头-日志程序块ConfigTool日志程序块-一切尽在掌握提供简单标准一致的Logging机制能灵活指定哪类信息以何种格式输出、输出到何处实现了应用程序代码与日志策略的隔离当前提供了以下日志输出:EventLogDatabaseTextFileMSMQEmailWMI自定义输出…日志程序块示例DimlogAsLogEntry=NewLogEntrylog.Message=“Yourmessagehere…”log.Priority=1log.EventId=100log.Category=DebugLogger.Write(log)//Orifyoupreferoneline...Customercust=GetCustomer(123);//Logthecustomer–willcall//cust.ToString()forthelogentryLogger.Write(cust,Category,Priority);配置企业程序库日程企业程序库前世今生企业程序库的7种武器合作伙伴成功案例(中软融鑫)Q&A我们的应用RedSMSPlatformV3.0短信服务平台,完成短信收发SMS系统管理助手V1.0ServerManagementSystem助手,帮助用户完成如License管理等辅助功能RedSMSPlatformV3.0小试牛刀•日志程序块•配置程序块以前的做法写类来完成文本文件写入Logger.Write(stringlog))修改方法参数或在使用中不断增加重载方法以应变可能的使用情况Write(p1)、Write(p1,p2)、……考虑如何将类对象序列化自己处理XML文件的读写来读取和写入配置信息现在的做法1.学习相关知识-WebCast(1.5个小时)2.研究示例-Samples(1小时)3.完成功能-RedSMSPlatform(10分钟)实现方法Logger.Write(content)Logger.Write(LogEntrylog)Logger.Write(objectmessage,stringcategory)11种重载方式!SMS系统管理助手V1.0解决用户权限定义问题•安全程序块•配置程序块•加密程序块•数据访问程序块•日志程序块安全程序块代码量&编码时间050010001500自己编码使用Entlb编码量编码时间从企业程序库学到的利用已有的成熟代码形成企业或组织自己的组件库通用组件要应用先进的设计p&pEnterpriseLibrary我们一起努力-扩充企业程序库PartnerblocksCustomerblocksCommunit
本文标题:企业程序库(Enterprise
链接地址:https://www.777doc.com/doc-16439 .html