BodeAbp服务端只提供api,绝大部分api通过abp的动态WebApi机制提供,原理可以参考这篇文章:http://www.cnblogs.com/1zhk/p/5418694.html
与业务相关的api写在模块内部,这样服务端几乎都不需要有Controller了,目前整个项目只有“登录”和“文件上传”有Controller代码,最大化的减少业务模块与系统的耦合,也更方便业务模块的加载/卸载。
 
服务端目录结构:
BodeAbp服务端介绍
BodeAbp服务端介绍

BodeAbp.Frame:abp框架

BodeAbp.Modules:业务模块

BodeAbp.Plugins:插件

BodeAbp.Samples:示例

业务模块目录结构:
BodeAbp服务端介绍
BodeAbp服务端介绍
BodeAbp.Product:功能模块程序集
Localization:本地化资源文件夹
Providers:模块权限、菜单、设置项文件夹
Attributes:子功能文件夹(这里是商品属性)
Domain:领域层,存放聚合根、领域服务、值对象等。
Dtos:存放数据传输对象
ModelConfigs:存放Model配置类
SeedActions:存放种子数据(创建数据库或迁移数据库时添加到即数据库的数据)
...AppServices:应用程序服务,业务实现,是向外提供webapi的基础
 
Module中代码:
BodeAbp服务端介绍
using System.Reflection;
using Abp.EntityFramework.Default;
using Abp.Localization.Dictionaries;
using Abp.Localization.Dictionaries.Xml;
using Abp.Modules;
using BodeAbp.Product.Providers;

namespace BodeAbp.Product
{
    /// <summary>
    /// 产品模块
    /// </summary>
    public class BodeAbpProductModule : AbpModule
    {
        /// <summary>
        /// 版本号
        /// </summary>
        public const string CurrentVersion = "0.1.0";

        /// <summary>
        /// 初始化前执行
        /// </summary>
        public override void PreInitialize()
        {
            Configuration.Localization.Sources.Add(
                new DictionaryBasedLocalizationSource(
                    BodeAbpProductConsts.LocalizationSourceName,
                    new XmlEmbeddedFileLocalizationDictionaryProvider(
                        Assembly.GetExecutingAssembly(),
                        "BodeAbp.Product.Localization.Source"
                        )
                    )
                );

            Configuration.Settings.Providers.Add<BodeAbpProductSettingProvider>();
            Configuration.Navigation.Providers.Add<BodeAbpProductNavigationProvider>();
            Configuration.Authorization.Providers.Add<BodeAbpProductAuthorizationProvider>();

            DefaultDbContextInitializer.Instance.MapperAssemblies.Add(Assembly.GetExecutingAssembly());
        }

        /// <summary>
        /// 初始化执行
        /// </summary>
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
        }

        /// <summary>
        /// 初始化后执行
        /// </summary>
        public override void PostInitialize()
        {
            base.PostInitialize();
        }
    }
}
View Code

相关文章:

  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2021-07-07
猜你喜欢
  • 2022-12-23
  • 2022-01-11
  • 2021-08-21
  • 2021-12-25
  • 2021-12-16
  • 2021-11-08
相关资源
相似解决方案