title: Understanding and Using "Service Layers" - .NET MVC 5
body: <p>I am currently in an internship and from what I have been learning the controller in MVC should solely be used for traffic, and only for traffic. I have also been told about something called a "service layer", which sounds like the spot where I should be doing any data/business logic for the controller. </p>
  
  <p>I have been searching around for examples and tutorials on this but I am not finding anything that dumbs it down enough for me, as I have only just learned MVC about a month ago. I am wondering if someone would be able to explain and show me how I would transfer the following <code>ActionResult Index</code> business logic into a "service layer".</p>
  
  <pre><code>public class LakerLegendsController : Controller
  {    
      string pathway1 = HostingEnvironment.MapPath(@"~/App_Data/Announcement1.txt");
      string pathway2 = HostingEnvironment.MapPath(@"~/App_Data/Announcement2.txt");
      string pathway3 = HostingEnvironment.MapPath(@"~/App_Data/Announcement3.txt");
      private MoviesEntities db = new MoviesEntities();
  
  public ActionResult Index()
  {
      // Setting some ViewBag texts from announcement files.
      string text1 = System.IO.File.ReadAllText(pathway1);
      ViewBag.TextHTML1 = text1;
  
      string text2 = System.IO.File.ReadAllText(pathway2);
      ViewBag.TextHTML2 = text2;
  
      string text3 = System.IO.File.ReadAllText(pathway3);
      ViewBag.TextHTML3 = text3;
  
  
      // Following pulls some XML information
      XDocument xmlFile = XDocument.Load(@"http://na.leagueoflegends.com/en/rss.xml");
  
  
      var LoLtitles = from service in xmlFile.Descendants("item")
              select (string)service.Element("title");
      var LoLlinks = from service in xmlFile.Descendants("item")
               select (string)service.Element("link");
      var LoLdescriptions = from service in xmlFile.Descendants("item")
               select (string)service.Element("description");
      var LoLDates = from service in xmlFile.Descendants("item")
                select (string)service.Element("pubDate");
  
      var servicing = LoLdescriptions.ToArray();
      for (int i = 0; i &lt; 4; i++)
      {
          servicing[i] = Regex.Replace(Server.HtmlDecode(servicing[i]), @"&lt;[^&gt;]*&gt;", String.Empty);
      }
  
      ViewBag.titles = LoLtitles.ToArray();
      ViewBag.links = LoLlinks.ToArray();
      ViewBag.descriptions = servicing;
      ViewBag.dates = LoLDates.ToArray();
  
      // Pulls the DB Table
      var users = db.Users.Include(u =&gt; u.championList).Include(u =&gt; u.championList1).Include(u =&gt; u.championList2).Include(u =&gt; u.eloList).Include(u =&gt; u.rankList).Include(u =&gt; u.roleList).Include(u =&gt; u.roleList1);
      return View(users.ToList());
  }
  }
  </code></pre>
  
  <p>All that this code is doing is returning a DB table, along with some extra logic which pulls an XML file and parses some of its information.</p>
  
  <p>I am wondering how I could turn this specific example into using a service layer (or whatever it is I should use for the logic). Please try to make this as simple as possible, as I am still new to MVC.</p>