1、技术选型

ArcObjects SDK 10.8(ArcGIS 10.8),.Net FrameWork 4.8,VS2022,WPF(WinForm)、DEV。

用的时候,打包的ArcObjects SDK dll文件,可以使用低版本的,例如10.2,这样可以保障ArcGIS 10.2以上的环境都可以运行我们的系统。

2、程序集和名称空间命名

一般情况下,我会使用AAAA.BBBB.CCCCC.dll命令,这和ArcGIS中的dll命名是一致的。AAAA代表公司、团队或者个人的简称,一般是2-4个字母;BBBB代表你这个系统名称的简称,我一般会用4-10个字符;CCCC代表模块的名称,长度不定,但能尽量短则尽量短。例如WOBM.GeoChem.Statistics。

而且逻辑模块和UI模块用不同的程序集分类。例如AAAA.BBBB.CCCC.dll,可能会跟一个AAAA.BBBB.CcccUI.dll。例如WOBM.GeoChem.StatisticsUI。

这点我们可以看下ArcObjects SDK的定义。

3、业务功能不太复杂的系统

对于业务不太复杂的功能,我一般用以下的结构。

我们会先创建Framework包,里面包含Framework和FrameworkUI两个程序集。这两个部分主要是框架,例如定义App-Command-Tool架构、定义常用的工具、定义常用的函数库、进度信息模块、日志记录模块、Toolbox执行器模块等,与具体的业务关系不大。

Cores包包含BLLs和UIs程序集,BLLs程序集包含了系统主要业务逻辑,里面可以用文件夹把模块分开。UI程序集主要包含各模块的UI定义,也是用文件夹把各模块分开。

MianApp主要集成Framework和Cores包中定义的内容。

4、业务功能复杂的系统

业务功能比较复杂的系统设计的变化主要体现在Cores包部分。以GeoChem系统为例。如下图所示。

除了MainApp外,每个包都包含两个程序集,例如Framework包包含Framework和FrameworkUI,Statistics包包含Statistics和StatisticsUI。

Framework为框架包,Core为核心逻辑包,即其他各模块公用的部分。其他的都是各模块对应的组件包。最后汇总为MainApp。

5、架构的演变

架构并不是一成不变的,在系统刚开始设计开发的时候,很难考虑的面面俱到,把所有模块都考虑到。即使都考虑到,当后续的逻辑变化或者模块增加的时候都需要对架构进行适当的调整。

还是以GeoChem系统为例。

在2018年的时候,架构如下图所示。

把一部分业务逻辑代码分离到Core模块中是怕万一系统再扩展Web应用,Core模块可以直接使用。

2020年的时候,架构图如下图所示。

不再考虑可能性极小的Web应用扩展,合并成了三个程序集,把Core中代码融合到了BLLs程序集中。各功能模块在程序集内部以文件夹组织,只是把逻辑和UI分离。

2022年的时候,架构如下图所示。

ArcObejcts SDK 020 开发框架搭建-架构设计的更多相关文章

  1. .NET开发框架(六)-架构设计之IIS负载均衡(视频)

    前面有关注我们公众号文章的朋友应该都知道,我们的分布式应用服务可以通过Ocelot网关进行负载均衡,这种方式属于应用级别的实现. 而今天我们给大家介绍的是平台级别的实现,并且我们首次使用视频方式进行讲 ...

  2. 搭建rtmp直播流服务之3:java开发ffmpeg实现rtsp转rtmp并实现ffmpeg命令的接口化管理架构设计及代码实现

    上一篇文章简单介绍了java如何调用ffmpeg的命令:http://blog.csdn.net/eguid_1/article/details/51777716 上上一篇介绍了nginx-rtmp服 ...

  3. 短视频 SDK 架构设计实践

    作者简介 孔维乐,七牛云客户端团队 Android 平台高级开发工程师,专注音视频,图形图像领域.OpenGL 专家,先后参与直播推流及连麦 SDK 的开发,主导短视频 SDK 的架构设计与实现, 对 ...

  4. VICA 架构设计(1)

    本文记录最近完成的一个通用实时通信客户端的架构.   背景 我们公司是做税务相关的软件,有针对大客户 MIS 系统,也有针对中小客户的 SaaS 平台.这些系统虽然都是 B/S 的,但是也需要使用 A ...

  5. NET ERP系统架构设计

    解析大型.NET ERP系统架构设计 Framework+ Application 设计模式 我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应 ...

  6. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  7. VICA 架构设计

    本文记录最近完成的一个通用实时通信客户端的架构. 背景 我们公司是做税务相关的软件,有针对大客户 MIS 系统,也有针对中小客户的 SaaS 平台.这些系统虽然都是 B/S 的,但是也需要使用 Act ...

  8. 【架构设计】Android:配置式金字塔架构

    最近做一个项目,在项目搭建之前,花了些许时间去思考一下如何搭建一个合适的架构.一开始的构思是希望能合理的把应用的各部分进行分离,使其像金字塔一样从上往下,下层为上层提供功能. 在平常项目中,总是有很多 ...

  9. Vue 项目架构设计与工程化实践

    来源 文中会讲述我从0~1搭建一个前后端分离的vue项目详细过程 Feature: 一套很实用的架构设计 通过 cli 工具生成新项目 通过 cli 工具初始化配置文件 编译源码与自动上传CDN Mo ...

  10. Android架构设计之插件化、组件化

    如今移动app市场已经是百花齐放,其中有不乏有很多大型公司.巨型公司都是通过app创业发展起来的:app类型更加丰富,有电子商务.有视频.有社交.有工具等等,基本上涵盖了各行各业每个角落,为了更加具有 ...

随机推荐

  1. DevOps - DevOps基础概念梳理

    目录 DevOps DevOps的好处与价值 可能的几个关注点 DevOps能力环 DevOps与持续集成.持续交付 一个完整的过程 典型的CICD流水线过程 DevOps黄金思维圈 初见 一些图示 ...

  2. leetcode每日一题:判断一个括号字符串是否有效

    题目 一个括号字符串是只由 '(' 和 ')' 组成的 非空 字符串.如果一个字符串满足下面 任意 一个条件,那么它就是有效的: 字符串为 (). 它可以表示为 AB(A 与 B 连接),其中A 和 ...

  3. FireDAC的数据库的FDConnect

    通常,我们设置一个ini文件,按照FDConnection的ini格式要求配置好.然后直接调用通知连接数据库是否OK. FireDAC可以通过FDManager管理ini文件简单实现.即由FDConn ...

  4. DotNetGuide 突破了 8K + Star,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库!

    前言 转眼之间维护DotNetGuide(全面的C#/.NET/.NET Core学习.工作.面试指南知识库)已经持续超过了4年多的时间,Commit提交数也超过1400+,在前几天在 GitHub ...

  5. 基于注解的 AOP 配置

    第一步:在 spring 配置文件中开启 spring 对注解 AOP 的支持 <!-- 开启 spring 对注解 AOP 的支持 --> <aop:aspectj-autopro ...

  6. Git命令的全家福手册

    一.全局命令

  7. C#关键字:in、out、ref、in T、out T、[In]、[Out]这些你都知道多少?

    in.out 和 ref 关键字 首先我们来说in.out 和 ref ,在 C# 中,in.out 和 ref 是用于方法参数的引用传递.在引用传递过程中,形参和实参都是指向相同的引用地址. 名称 ...

  8. Java虚拟机代码是如何一步一步变复杂且难以理解的?

    有相关统计数据显示,Java开发者有1000万+,这么多的人每天都在使用Java虚拟机进行开发,不过真正看过虚拟机代码的人应该非常非常少吧,可能有些人研究过,不过由于Java虚拟机是一个高度复杂的系统 ...

  9. 全局搜索——Lucene.net 项目

    1.GitHub - LonghronShen/Lucene.Net.Analysis.PanGu at netcore 2.Net Core使用Lucene.Net和盘古分词器 实现全文检索 - t ...

  10. CTF_RSA解密学习

    CTF_RSA解密学习 00X00 .先看了一边李永乐老师的视频 https://www.bilibili.com/video/av26639065/ 00X01.对称.非对称算法了解 对称算法,加解 ...