《2018年端口和适配器架构-DDD好帮 .pdf》由会员分享,可在线阅读,更多相关《2018年端口和适配器架构-DDD好帮 .pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、端口和适配器架构 DDD好帮手DDD方法如何获取经验简介01什么是端口和适配器架构02它可以带来什么好处03与领域驱动设计的协同增效在接下来的40分钟内,当我们在说架构时,我们在说什么什么是端口和适配器架构原来是这种“架构”单个应用代码组织不是框架“经典”的层级架构Ports and AdaptersAllow an application to equally be driven by users,programs,automated test or batch scripts,and to be developed and tested in isolation from its even
2、tual run-time devices and databases.Alistair Cockburn 2005架构特征Ports and Adapters架构也被称作六边形架构什么是端口(Port)?Port是应用(Application)的出口和入口,它与其消费方及其实现方所使用的技术无关。在许多语言中,它以接口的形式存在两种适配器(Adapter)?PrimaryorDriving Adapters:接收“用户”指令,向应用发起请求(调用Port)SecondaryorDriven Adapters(最终)响应Driving Adapter的请求,输出到外部设备或工具(实现Port)
3、它可以带来什么好处“虚拟”案例DDD邮轮 DDD Cruise是一家中国的邮轮公司,正在研发新一代的预订系统DDD邮轮MVP*多市场*全渠道*多数据源*One API中国出发 的消费者中国官网微信小程序亚洲官网Cruise 预订引擎Legacy Booking SystemLoadHTTPAWS S3LoadFileUsesSearch CruisesSystem Context Diagram(C4模型)亚洲其他 地区消费者市场宣传旅行社代售在线直销可直销数据其他数据UsesHeadless CMSLoadHTTP以Cruise Search为例,上“套路”API ControllerBus
4、iness LogicLegacy BookingCruise Source AdapterFileCruise Source AdapterPort=CruiseSourceX-DDD-CRUISE-APP-ID:7as0sfaGET/cruises/search?criteria=jsonPort=CruiseSearchDriving AdapterDriven AdapterPort=AppBasedCruiseCriteriaInjector促成简单设计单一职责Simple=Do one thing=Easy获取+解析数据获取+解析数据与Spring Cache集成合并多数据源出口端
5、口入口端口实现Rest Endpoint(Spring MVC)筛选Cruise匹配各类 筛选条件Driving AdaptersPortsDriven AdaptersBusiness Logic落地测试策略ControllerTest/ContractTestCruiseSearchTestLegacyBookingCruiseSourceTestCachingCruiseSourceTestBusiness Logic TestDriving Adapter TestDriven Adapter TestE2E促进用户故事分解 作为中文官网用户,我应该可以找到所有非B2C渠道开放的邮轮
6、以便我联系代售旅行社进行预订 作为中文官网用户,我可以按出发港口、日期等筛选邮轮,以便我可以快速找到心仪的邮轮 作为中文官网用户,我应该还可以找到对B2C渠道开放的邮轮 以便我进行在线预订LegacyBookingCruiseSourceComposite CruiseSourceCachingCruiseSourceBusiness LogicAPI ControllerCruiseSourceFileCruiseSourceCruiseSearchInMemory CruiseSearchInMemory CruiseSearch CruiseSearch API 对于80%的请求应该在