齐齐哈尔租房信息:【Net】ABP〖框架学习之它并〗不‘那么好用’

admin 6个月前 (04-10) 科技 33 0

{前言}

 上一篇文章先容了ABP {的}[Web API,“本文在《继续》先容”ABP {的}[其他内容。

在ABP中,WEBAPI是一个值得用 {的}[器械。但其他器械,就不一定是那么好用了。

下面我们看一下ABP {的}[Controller。

建立项目

首先,我们建立一个MVC项目,AbpMvcController。

然后引用Abp.Web.Mvc。

【使用了】ABP后,必须修改WebApiApplication {的}[《继续》类,「「以是」」,原来 {的}[初始化 {的}[路由等等信息,要换个『地方写了』,下面我们看看转变。

将WebApiApplication改为《继续》Abp.Web.AbpWebApplication;Global.asax修改如下:

using Abp.Web;
using AbpMvcController;
using System;
using System.Web;
[assembly: PreApplicationStartMethod(typeof(PreStarter), "Start")]
namespace AbpMvcController
{
    public class WebApiApplication : Abp.Web.AbpWebApplication<StartServiceModule>
    {
        protected override void Application_Start(object sender, EventArgs e)
        {
            base.Application_Start(sender, e);
        } 
    }
​
    public static class PreStarter
    {
        public static void Start()
        { 
            WebApiApplication.AbpBootstrapper.PlugInSources.AddToBuildManager(); 
        }
    } 
}

【然后在】App_Start文件夹新建StartModule,StartModule《继续》 AbpModule。

然后把在Global.asa中删除路由『注』册等信息,在StartModule中,重写出来。

PS:由于建立 {的}[是MVC项目,「「以是」」我们添加响应 {的}[依赖——[DependsOn(typeof(Abp.Web.AbpWebModule),typeof(AbpWebMvcModule))]。

代码如下[:

[DependsOn(typeof(Abp.Web.AbpWebModule),typeof(AbpWebMvcModule))]
public class StartModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.Modules.AbpWeb().AntiForgery.IsEnabled = false;
        Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true; 
    }
    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes); 
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
    public override void PostInitialize()
    {
        GlobalConfiguration.Configuration.Filters.Add(new ExceptionFilter());
    }
    public override void Shutdown()
    {
    }
}

现在我们实验运行项目,效果项目乐成启动,如下图。

〖 即[〗,我们虽然修改了WebApiApplication {的}[《继续》类,“但依然可以正常接见建立项目时”,「自」动天生 {的}[Controller。

也就是说,ABP并没有改变MVC {的}[逻辑。

AbpController

ABP中提供了一个AbpController,它相当于对对MVC {的}[Controller {的}[扩展。

现在,“我们找到”HomeController,修改它 {的}[《继续》,然后运行项目。

项目正常运行。

----------------------------------------------------------------------------------------------------

【现在我们编写一个】AuthorizeAttribute,然后放到这个《继续》AbpController {的}[Controller上; 代码如下[:

[CustomAuthorize]
public class HomeController : AbpController
{
    public ActionResult Index()
    {
        ViewBag.Title = "Home Page";
​
        return View();
    }
}

(然后我们断点)CustomAuthorizeAttribute {的}[AuthorizeCore函数。

【测】试结构发现,断点可以被掷中。

〖 即[〗,MVC {的}[授权特征还可以正常使用。

----------------------------------------------------------------------------------------------------

ABP也提供了一个授权特征——AbpMvcAuthorize;很好明白,它是AuthorizeAttribute {的}[一个扩展,和上面 {的}[AbpController一样。

结语

总体上来说,ABP框架对微软 {的}[WebApi做出了很好 {的}[封装,提供了对照高级 {的}[扩展,〖 即[〗,动态建立WebApi,它切实 {的}[简化了代码。

但,对Controller,它并没有提供太高级 {的}[功效,就是一些简朴 {的}[扩展和再封装。

那么,如要使用ABP来开发MVC,就需要在{学习微软}MVC {的}[基础上,再去学习ABP {的}[方言了。

「说实话」,这样做有点累;「「以是」」,开发项目时,使用微软 {的}[MVC结构〖 即[〗可,由于网上有厚实 {的}[资源可用。

关于ABP {的}[其他功效:

ABP {的}[日志:ABP {的}[日志由于没办法扩展到没引用ABP {的}[类库里,而引用ABP又要引用一堆类库;「「以是」」,全系统使用ABP {的}[日志几乎是不可能 {的}[,〖 即[〗,『它意义不大』,照样「自」己封装日志对照好。

ABP提供 {的}[EF:ABP提供 {的}[EF因其使用和设置太过繁琐,支持 {的}[功效又不是稀奇周全;且设计理念上,只有部门DDD {的}[头脑,然后,{它还很难扩}展;「「以是」」,基本上可以甩掉了,由于基本没法和营业做最完善 {的}[连系。事实上,随便找 {的}[开源 {的}[EF再封装框架都比ABP {的}[好明白,好挪用。

ABP {的}[依赖『注』入:ABP {的}[依赖『注』入也是依赖Castle,那就是说我们完全可以直接使用Castle,这样,效果比用他封装 {的}[好;若是项目可以使用Core框架开发,那直接使用Core {的}[依赖『注』入就可以了,这个比ABP {的}[强太多了。

----------------------------------------------------------------------------------------------------

代码已经传到Github上了, 迎接人人下载[。

Github《地址》:https://github.com/kiba518/AbpMvcController

----------------------------------------------------------------------------------------------------

『注』:此文章为原创,任何形式 {的}[转载都请联系作者获得授权并『注』明出处!
〖若您以为这篇文章还不错〗,请点击下方 {的}[推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/12651512.html

 

 

,

Sunbet

www.aLizhiye.com「自」1992年和阿里纸业合作以来,在资金实力、技术体系、贴心服务实现了质 {的}[飞跃。〖阿里纸业作为〗Sunbet亚洲独家代理,为官网下所有会员开户、代理提供买分卖分等业务。

申博声明:该文看法仅代表作者自己,与本平台无关。转载请注明:齐齐哈尔租房信息:【Net】ABP〖框架学习之它并〗不‘那么好用’

网友评论

  • (*)

最新评论