Verstehen und Verwenden "Service-Layer" - .NET MVC 5
Ich bin derzeit in einem Praktikum und von dem, was ich gelernt haben, den controller im MVC-sollte ausschließlich verwendet werden, für den Verkehr, und nur für den Verkehr. Ich habe auch schon gesagt, über so etwas als "service layer", das klingt wie der Ort, wo ich tun sollte, keine Daten - /business-Logik für den controller.
Ich habe die Suche rund um für die Beispiele und tutorials an, aber ich bin nicht etwas zu finden, dass dumbs es nach unten genug für mich, da ich gerade erst gelernt, MVC vor etwa einem Monat. Ich Frage mich, ob jemand in der Lage wäre, zu erklären und mir zeigen, wie ich die übertragung der folgenden ActionResult Index
business-Logik in einer "service-Schicht".
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 < 4; i++)
{
servicing[i] = Regex.Replace(Server.HtmlDecode(servicing[i]), @"<[^>]*>", 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 => u.championList).Include(u => u.championList1).Include(u => u.championList2).Include(u => u.eloList).Include(u => u.rankList).Include(u => u.roleList).Include(u => u.roleList1);
return View(users.ToList());
}
}
Alles, was dieser code macht ist wieder eine DB-Tabelle, zusammen mit einige zusätzliche Logik, die zieht eine XML-Datei und analysiert einige seiner Informationen.
Frage ich mich, wie konnte ich wiederum in diesem speziellen Beispiel in einem service-layer (oder was auch immer es ist, ich sollte verwenden, für die Logik). Bitte versuchen Sie, diese so einfach wie möglich, ich bin noch neu auf MVC.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Service-Schicht definiert die Menge der verfügbaren Operationen in Bezug auf die Anbindung client-Schichten, D. H. kapselt die Geschäftslogik einer Anwendung. Sie sind nur separate Klassen in einer anderen Klasse Bibliothek (oder namespace) diese sind unabhängig von MVC-framework-Infrastruktur, die verwendet werden können ASP.NET Web-API oder WCF.
Hier ist ein schönes Beispiel von sehr gut bekannten Musik-Shop. Dies kann helfen, Sie bekommen durch die Service-Schicht mit DI Die Injektion eines MSDN-Controller
Zweck der service-Schicht ist für die Entkopplung und Wartbarkeit