我正在尝试构建一个随着时间的推移随着时间的推移而添加功能的企业系统。
我计划使用带有Angular的ASP.Net Core微服务架构来实现UI。我无法找到一个示例,说明如何在不更改任何现有角度代码的情况下引入新模块。
我能够使用像MEF这样的技术在传统的winforms应用程序中执行此操作,并将dll放入shell监视和加载的文件夹中。
看起来没有使用Angular框架的例子。所以我很好奇它是否有可能实现如下所示的架构?
Module
是asp.net核心服务,它提供shell可以呈现的角度文件,Service
是应用程序本身使用的逻辑服务。
我确实看到this post,这与我想做的很接近,但我不确定这是否是正在讨论的正确解决方案。
任何指示赞赏。
答案 0 :(得分:0)
我尝试使用ABP,Angular和ASP.NET Core实现插件架构:https://github.com/chanjunweimy/abp_plugin_with_ui
基本上,我使用不同的角度应用程序开发角度插件,然后我动态地将它们加在一起。
有关我如何实现它的更多信息:
我有2个angular-cli应用程序,1个是主角度cli应用程序,另一个是插件角度cli应用程序。我们在Angular-cli插件架构方法中遇到的问题是我们如何集成它们。
现在,我所做的是,我在两个应用程序上运行ng-build,并将它们放入" wwwroot"文件夹,然后托管在ASP.NET核心2.0服务器中。
abp_plugin_with_ui是一个存储库,用于开发包含后端和Angular cli的插件。对于后端,我使用了aspnetboilerplate框架,前端是使用多个angular-cli应用程序开发的。
要将主应用程序与插件应用程序集成,我们必须运行" ng-build"在两个应用程序上(注意我们也必须更改为插件应用程序的href),然后我们将插件角度cli应用程序的构建内容移动到主应用程序" wwwroot"夹。完成所有这些后,我们就可以运行" dotnet run"提供ASP.NET Core 2.0 Web应用程序来托管由" ng build"生成的静态文件。在这种方法中,插件Angular UI应用程序独立于主Angular UI应用程序:它们使用IFrame连接。
最近,我意识到我们可以动态创建组件,这意味着可能最好下载" NgModule"并动态创建该模块。此选项更好,因为插件UI将直接集成到主应用程序UI中。我还在尝试这种方法。
@bruno建议的另一个选择是在SOA中开发UI。这意味着,我们可以选择不将UI分离为插件,而是将它们作为独立服务分离为模块。您需要拥有一个所谓的IT / Ops客户端"这可以帮助您管理在UI中显示的视图,主UI只是一个框架/模板,将显示什么" IT / Ops客户端"想表现出来。使用这种方式,我们可以注册这些服务,并选择要使用的服务。这是微服务架构,可能会关闭你想要的东西。微服务专家Udi Dahan在博客上写了一篇关于此的帖子(链接:http://udidahan.com/2014/07/30/service-oriented-composition-with-video/)