Asp.Net Ioc架構入門之一 Unity

來源:互聯網
上載者:User

標籤:並且   最新   類庫   系統重構   reg   global   屬性   mvc5   html   

一、概述

  IOC:英文全稱:Inversion of Control,中文名稱:控制反轉,它還有個名字叫依賴注入(Dependency Injection)。
  作用:將各層的對象以松耦合的方式組織在一起,解耦,各層對象的調用完全面向介面。當系統重構的時候,代碼的改寫量將大大減少。
  依賴注入: 當一個類的執行個體需要另一個類的執行個體協助時,在傳統的程式設計過程中,通常有調用者來建立被調用者的執行個體。然而採用依賴注入的方式,建立被調用者的工作不再由調用者來完成,因此叫控制反轉,建立被調用者的執行個體的工作由IOC容器來完成,然後注入調用者,因此也稱為依賴注入。

   Unity是微軟Patterns & Practices團隊所開發的一個輕量級的,並且可擴充的依賴注入(Dependency Injection)容器;

  它支援常用的三種依賴注入方式:構造器注入(Constructor Injection)、屬性注入(Property Injection),以及方法調用注入(Method Call Injection)。

  現在Unity最新的版本的4.0版,可以在微軟的開來源站點點 https://github.com/unitycontainer/unity 下載最新的發布版本。

  通過使用Unity,我們能輕鬆構建松耦合結構的程式,從而讓整個程式架構變得清晰和易於維護。

二、簡單樣本

1.樣本1

  建立一個mvc5項目 Web.Mvc,然後在建立一個Business類庫,將類庫添加引用到Web.Mvc項目,在Web.Mvc項目通過nuget添加unity.mvc5

類庫代碼

a、Business類庫定義一個介面IUserService

namespace Business{    /// <summary>    /// 顯示資訊    /// </summary>    public interface IUserService    {        string Display(string mes);    }}

b、Business類庫實現介面

namespace Business{    public class UserService : IUserService    {        /// <summary>        /// 顯示資訊        /// </summary>        /// <param name="mes"></param>        public string Display(string mes)        {            return "I say:" + mes;        }    }}

c、註冊依賴使用依賴注入生效

在Web.Mvc項目的Global.asax進行註冊 

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Optimization;using System.Web.Routing;using Business;using Microsoft.Practices.Unity;using Unity.Mvc5;namespace Web.Mvc{    public class MvcApplication : System.Web.HttpApplication    {        protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);            //注入 Ioc            var container = this.BuildUnityContainer();            DependencyResolver.SetResolver(new UnityDependencyResolver(container));        }        IUnityContainer BuildUnityContainer()        {            var container = new UnityContainer();            container.RegisterType<IUserService, UserService>();            return container;        }    }}

d、使用

namespace Web.Mvc.Controllers{    public class HomeController : Controller    {        private IUserService userService;        public HomeController(IUserService userService)        {            this.userService = userService;        }        public ActionResult Index()        {            ViewBag.Msg = userService.Display("hahaha");            return View();        }   }}

e、在Index.cshtml找個地方寫入@ViewBag.Msg 就可以,如

<h1>ASP.NET - @ViewBag.Msg</h1>

最後運行項目,實現效果

ASP.NET - I say:hahaha

 

 

 

參考網址:

http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html

https://www.lanhusoft.com/Article/108.html

Asp.Net Ioc架構入門之一 Unity

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.