ASP.NET MVC 4 – Model + Axis2 SOAP + Unity.Mvc4 + AutoMapper 方法

ASP.NET MVC 4 – Model + Axis2 SOAP + Unity.Mvc4 + AutoMapper 方法

   ( Project : AxisSOAPLibrary ) IUserRepository.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using AxisSOAPLibrary.Entities;
 
   namespace AxisSOAPLibrary
   {
      public interface IUserRepository
      {
         IEnumerable<Entities.User> GetAll();
         … …
      }
   }
 
   ( Project : AxisSOAPLibrary ) UserRepository.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using AxisSOAPLibrary.Entities;
   using System.ServiceModel;
 
   namespace AxisSOAPLibrary
   {
      public class UserRepository : IUserRepository
      {
         public IEnumerable<Entities.User> GetAll()
         {
 
            List<Entities.User> UserList = new List<Entities.User>();
 
            BasicHttpBinding Binding = new BasicHttpBinding();
 
            EndpointAddress Endpoint = new EndpointAddress("http://192.168.1.81/axis2/services/test?wsdl");
 
            Axis2ServiceReference.testPortTypeClient SoapClient = new Axis2ServiceReference.testPortTypeClient(Binding, Endpoint);
 
            SoapClient.Open();
 
            if(SoapClient.State == System.ServiceModel.CommunicationState.Opened)
            {
 
               foreach (Axis2ServiceReference.user item in SoapClient.getUserList())
               {
                  Entities.User TempUser = new Entities.User();
                  TempUser.UserID = item.userID;
                  TempUser.UserName = item.userName;
                  TempUser.UserAge = item.userAge;
                  TempUser.UserPassword = item.userPassword;
 
                  UserList.Add(TempUser);
               }
 
            }
 
            SoapClient.Close();
 
            return UserList;
 
         }
 
         … …
 
      }
   }
 
   ( Project : AxisSOAPLibrary ) \Entities\User.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
 
   namespace AxisSOAPLibrary.Entities
   {
      public class User
      {
         public String UserID { get; set; }
         public String UserPassword { get; set; }
         public String UserName { get; set; }
         public int UserAge { get; set; }
      }
   }
 
   ( Project : MvcApplication ) Global.asax.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Web;
   using System.Web.Http;
   using System.Web.Mvc;
   using System.Web.Optimization;
   using System.Web.Routing;
 
   namespace MvcApplication
   {
      public class MvcApplication : System.Web.HttpApplication
      {
         protected void Application_Start()
         {
            AreaRegistration.RegisterAllAreas();
 
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
 
            Bootstrapper.Initialise();
 
            AutoMapperConfig.Configure();
         }
      }
   }
 
   ( Project : MvcApplication ) Bootstrapper.cs
 
   using System.Web.Mvc;
   using Microsoft.Practices.Unity;
   using Unity.Mvc4;
   using AxisSOAPLibrary;
 
   namespace MvcApplication
   {
      public static class Bootstrapper
      {
 
         public static IUnityContainer Initialise()
         {
            var container = BuildUnityContainer();
 
            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
 
            return container;
         }
 
         private static IUnityContainer BuildUnityContainer()
         {
            var container = new UnityContainer();
 
            … …
            container.RegisterType<IUserRepository, UserRepository>();
 
            RegisterTypes(container);
 
            return container;
         }
 
         public static void RegisterTypes(IUnityContainer container)
         {
         }
 
      }
   }
 
   ( Project : MvcApplication ) AutoMapperConfig.cs
 
   using System;
   using System.Collections.Generic;
   using AutoMapper;
   using AxisSOAPLibrary;
 
   namespace MvcApplication
   {
      public class AutoMapperConfig
      {
         public static void Configure()
         {
            … …
            Mapper.CreateMap<AxisSOAPLibrary.Entities.User, MvcApplication.Models.User>().ReverseMap();
            … …
 
            Mapper.AssertConfigurationIsValid();
         }
      }
   }
 
   ( Project : MvcApplication ) \Models\User.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Web;
 
   namespace MvcApplication.Models
   {
      public class User
      {
         public String UserID { get; set; }
         public String UserPassword { get; set; }
         public String UserName { get; set; }
         public int UserAge { get; set; }
      }
   }
 
   ( Project : MvcApplication ) \Controllers\UserController.cs
 
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Web;
   using System.Web.Mvc;
   using AutoMapper;
   using MvcApplication.Models;
   using AxisSOAPLibrary;
 
   namespace MvcApplication.Controllers
   {
      public class UserController : Controller
      {
         readonly IUserRepository repository;
 
         public UserController(IUserRepository repository)
         {
            this.repository = repository;
         }
 
         public ActionResult Index()
         {
            var data = Mapper.Map(repository.GetAll().ToList(), new List<MvcApplication.Models.User>());
            return View(data);
         }
 
      }
   }
 
   ( Project : MvcApplication ) \Views\User\index.cshtml
 
   @model List<MvcApplication.Models.User>
 
   @if(Model != null){
 
      foreach(MvcApplication.Models.User item in Model)
      {
         <div>  </div>
         <div>User ID : @(item.UserID)</div>
         <div>User Name : @(item.UserName)</div>
         <div>User Passwd : @(item.UserPassword)</div>
         <div>User Age : @(item.UserAge)</div>
      }
   }