#AspNetBoilerplate, #Template, #Architecture, #Framework, #AspNetMvc, #AspNetCore
ASP .NET Boilerplate
یکی از سخت ترین کارها در توسعه ی نرم افزار، آغاز و پایه ریزی یک اپلیکیشن جدید است. پیاده سازی معماری، اضافه نمودن ابزارها و تنظیماتِ مربوطه، پایه ریزی لایه هایِ مختلف و ... همه و همه کارهایی است که برای ایجاد هر اپلیکیشن جدید "تکرار" می کنیم.
بسیاری از شرکت های بزرگ، برای جلوگیری از این تکرار، معمولا با صرفِ زمان و هزینه ی نسبتا زیاد، فریم ورک اختصاصی خود را یکبار می نویسند و به کَرات از آن استفاده می کنند. اما شرکت ها و یا تیم های کوچک که نمی توانند متقبل این هزینه شوند، با کپی کردن بخش های مختلف از اپلیکیشن های موجود، سعی در پایه ریزی و آغاز اپلیکیشن جدید خود می کنند.
خوشبختانه طبق معمول، فریم ورک های از پیش آماده ی بسیار خوبی برای این کار وجود دارد که برخی حتی چند گام فراتر رفته و تمپلیت آغازی برای شروع اپلیکیشن شما را نیز ایجاد می کنند. در این صورت، تنها کاری که باید انجام دهید تعریف entity ها و رعایت قراردادهاست تا به صورت خودکار تمامی لایه ها در دسترس قرار گیرد و تنها دغدغه ی شما کار با UI باشد.
مخصوصا اینکه اگر بدانید این فریم ورک، از آخرین تکنولوژی ها (ASP .NET Core)، بِست پِرَکتیس ها، پرکاربردترن روش های توسعه (Domain Driven Design) ، تزریق وابستگی، معروف ترین ORM ها (EF و NHibernate) ، قابلیت های اعتبارسنجی، ثبت وقایع کاربران، مدیریت خطاها و ... به صورت تو کار بهره میبرد و همچنین امکان انتخاب بین Single-Page (با انگولار) و یا Multi-Page هم دارید.
از دیگر مزایای بسیار مهم این فریم ورک، داشتن راهنما و داکیومنت بسیار غنی برای درک بخش های مختلف و نحوه ی کار با آن است.
لینک زیر سایت اختصاصی این فریم ورک است:
http://www.aspnetboilerplate.com/
مطالب بیشتر برای شروع به کار را نیز می توانید از طریق این لینک مطالعه کنید:
http://www.codeproject.com/Articles/768664/Introduction-to-ASP-NET-Boilerplate
@IranAspMvc
ASP .NET Boilerplate
یکی از سخت ترین کارها در توسعه ی نرم افزار، آغاز و پایه ریزی یک اپلیکیشن جدید است. پیاده سازی معماری، اضافه نمودن ابزارها و تنظیماتِ مربوطه، پایه ریزی لایه هایِ مختلف و ... همه و همه کارهایی است که برای ایجاد هر اپلیکیشن جدید "تکرار" می کنیم.
بسیاری از شرکت های بزرگ، برای جلوگیری از این تکرار، معمولا با صرفِ زمان و هزینه ی نسبتا زیاد، فریم ورک اختصاصی خود را یکبار می نویسند و به کَرات از آن استفاده می کنند. اما شرکت ها و یا تیم های کوچک که نمی توانند متقبل این هزینه شوند، با کپی کردن بخش های مختلف از اپلیکیشن های موجود، سعی در پایه ریزی و آغاز اپلیکیشن جدید خود می کنند.
خوشبختانه طبق معمول، فریم ورک های از پیش آماده ی بسیار خوبی برای این کار وجود دارد که برخی حتی چند گام فراتر رفته و تمپلیت آغازی برای شروع اپلیکیشن شما را نیز ایجاد می کنند. در این صورت، تنها کاری که باید انجام دهید تعریف entity ها و رعایت قراردادهاست تا به صورت خودکار تمامی لایه ها در دسترس قرار گیرد و تنها دغدغه ی شما کار با UI باشد.
مخصوصا اینکه اگر بدانید این فریم ورک، از آخرین تکنولوژی ها (ASP .NET Core)، بِست پِرَکتیس ها، پرکاربردترن روش های توسعه (Domain Driven Design) ، تزریق وابستگی، معروف ترین ORM ها (EF و NHibernate) ، قابلیت های اعتبارسنجی، ثبت وقایع کاربران، مدیریت خطاها و ... به صورت تو کار بهره میبرد و همچنین امکان انتخاب بین Single-Page (با انگولار) و یا Multi-Page هم دارید.
از دیگر مزایای بسیار مهم این فریم ورک، داشتن راهنما و داکیومنت بسیار غنی برای درک بخش های مختلف و نحوه ی کار با آن است.
لینک زیر سایت اختصاصی این فریم ورک است:
http://www.aspnetboilerplate.com/
مطالب بیشتر برای شروع به کار را نیز می توانید از طریق این لینک مطالعه کنید:
http://www.codeproject.com/Articles/768664/Introduction-to-ASP-NET-Boilerplate
@IranAspMvc
CodeProject
Introduction to ASP.NET Boilerplate
ASP.NET Boilerplate is a starting point for new modern web applications using best practices and most popular tools.
#Audit , #ActionFilter , #AspNetMvc , #AOP , #Interceptor , #IoC
امروزه در بسیاری از سیستم های نرم افزاری و وب سایت ها، مخصوصا سیستم هایی که اطلاعات حساسی را نگهداری می کنند، ثبت فعالیت ها و وقایعِ کاربران از اهمیت بالایی برخوردار است. اینکه چه کاربرانی و در چه زمان هایی وارد سیستم شده اند، به چه مکان هایی از سیستم رفته اند، چه عملیاتی را در سیستم انجام داده اند و .... . البته ثبت همه ی این موارد در تمام سیستم ها لازم نیست و بسته به میزانِ حساسیتِ سیستم، حجم این لاگ ها می تواند متغیر باشد.
روش های مختلفی برای پیاده سازیِ ثبت وقایع کاربران در سیستم وجود دارد، اما شاید اولین موردی که برای پیاده سازی به چشم بیاید، تکراری بودنِ این عملیات در بخش های مختلفِ سیستم است. اگر با برنامه نویسی AOP یا Aspect oriented programming آشنایی داشته باشید، می دانید که برای جلوگیری از پراکندگی و نوشتن کدهای تکراری، بهتر است که به صورت یک ماژول واحد با این قسمت برخورد شود، و به عبارت دیگر، کدهای این بخش در یک aspect مستقل ارائه و استفاده شوند. پیاده سازی آن نیز عموما از طریق تزریق وابستگی ها و Interceptor ها صورت می پذیرد، خبر خوب اینکه اگر از ASP .NET MVC استفاده می کنید، خوشبختانه این قابلیت به صورت توکار وجود دارد و "اکشن فیلترها" همان نقش Interceptor های AOP رو بازی می کنند، چون میدانیم کار نهاییِ این فیلترها نیز تزریق کدهایی است که باید پیش و پس از اجرای یک اکشن متد، اجرا شوند.
بنابراین تنها کاری که برای این منظور باید انجام شود، تعریف یک اکشن فیلترِ سفارشی و مزین کردن اکشن ها و یا کنترلر هایی است که میخواهیم وقایع آن ها ثبت شود. اطلاعاتی که میتوانیم به ازای هر اکشن ثبت کنیم نیز شامل نام کاربری، نام کنترلر و اکشن ملاقات شده، مدت زمان اجرای هر اکشن، آدرس آی پی و ... می باشد.
مقاله های زیر به صورت مفصل به پیاده سازی این موارد می پردازید. سورس کد آن نیز برای دانلود موجود است.
Part1: http://rion.io/2013/03/03/implementing-audit-trails-using-asp-net-mvc-actionfilters/
Part2: http://rion.io/2013/04/15/creating-advanced-audit-trails-using-actionfilters-in-asp-net-mvc/
این لینک نیز سورس کدِ اکشن فیلتر سفارشی Audit (ذکر شده در مقاله ی فوق) است که با جزئیات کامل آن میتوانید مشاهده و استفاده نمایید.
https://github.com/rionmonster/Advanced-Auditing/blob/7e46ece14e0241ec2ca34ec5fa42d71bb48e3b2a/Advanced%20Auditing/Models/AuditingModels.cs
@IranAspMvc
امروزه در بسیاری از سیستم های نرم افزاری و وب سایت ها، مخصوصا سیستم هایی که اطلاعات حساسی را نگهداری می کنند، ثبت فعالیت ها و وقایعِ کاربران از اهمیت بالایی برخوردار است. اینکه چه کاربرانی و در چه زمان هایی وارد سیستم شده اند، به چه مکان هایی از سیستم رفته اند، چه عملیاتی را در سیستم انجام داده اند و .... . البته ثبت همه ی این موارد در تمام سیستم ها لازم نیست و بسته به میزانِ حساسیتِ سیستم، حجم این لاگ ها می تواند متغیر باشد.
روش های مختلفی برای پیاده سازیِ ثبت وقایع کاربران در سیستم وجود دارد، اما شاید اولین موردی که برای پیاده سازی به چشم بیاید، تکراری بودنِ این عملیات در بخش های مختلفِ سیستم است. اگر با برنامه نویسی AOP یا Aspect oriented programming آشنایی داشته باشید، می دانید که برای جلوگیری از پراکندگی و نوشتن کدهای تکراری، بهتر است که به صورت یک ماژول واحد با این قسمت برخورد شود، و به عبارت دیگر، کدهای این بخش در یک aspect مستقل ارائه و استفاده شوند. پیاده سازی آن نیز عموما از طریق تزریق وابستگی ها و Interceptor ها صورت می پذیرد، خبر خوب اینکه اگر از ASP .NET MVC استفاده می کنید، خوشبختانه این قابلیت به صورت توکار وجود دارد و "اکشن فیلترها" همان نقش Interceptor های AOP رو بازی می کنند، چون میدانیم کار نهاییِ این فیلترها نیز تزریق کدهایی است که باید پیش و پس از اجرای یک اکشن متد، اجرا شوند.
بنابراین تنها کاری که برای این منظور باید انجام شود، تعریف یک اکشن فیلترِ سفارشی و مزین کردن اکشن ها و یا کنترلر هایی است که میخواهیم وقایع آن ها ثبت شود. اطلاعاتی که میتوانیم به ازای هر اکشن ثبت کنیم نیز شامل نام کاربری، نام کنترلر و اکشن ملاقات شده، مدت زمان اجرای هر اکشن، آدرس آی پی و ... می باشد.
مقاله های زیر به صورت مفصل به پیاده سازی این موارد می پردازید. سورس کد آن نیز برای دانلود موجود است.
Part1: http://rion.io/2013/03/03/implementing-audit-trails-using-asp-net-mvc-actionfilters/
Part2: http://rion.io/2013/04/15/creating-advanced-audit-trails-using-actionfilters-in-asp-net-mvc/
این لینک نیز سورس کدِ اکشن فیلتر سفارشی Audit (ذکر شده در مقاله ی فوق) است که با جزئیات کامل آن میتوانید مشاهده و استفاده نمایید.
https://github.com/rionmonster/Advanced-Auditing/blob/7e46ece14e0241ec2ca34ec5fa42d71bb48e3b2a/Advanced%20Auditing/Models/AuditingModels.cs
@IranAspMvc
Rion.IO
Implementing Audit Trails using ASP.NET MVC ActionFilters
Accountability is always important, especially when dealing with systems that contain sensitive data. It can often be helpful to have an audit trail that will allow you to go back and retrace the steps that a user took, what they saw, where they went and…
#AspNetMvc , #AspNetCore , #NetCore , #EFCore
ا✅ .NET Core 1.1 Preview 1 منتشر شد.
دانلود .NET Core 1.1 برای پلتفرم های مختلف:
https://github.com/dotnet/core/blob/master/release-notes/preview-download.md
همچنین ASP .NET Core 1.1 Preview 1 و Entity Framework Core 1.1 Preview 1 نیز منتشر شدند:
https://blogs.msdn.microsoft.com/webdev/2016/10/25/announcing-asp-net-core-1-1-preview-1/
https://blogs.msdn.microsoft.com/dotnet/2016/10/25/announcing-entity-framework-core-1-1-preview-1/
⭐️ قابل ذکر است که این نسخه، "Go Live" و پایدار نیست و هنوز برای استفاده در محصول واقعی توصیه نمی شود.
@IranAspMvc
ا✅ .NET Core 1.1 Preview 1 منتشر شد.
دانلود .NET Core 1.1 برای پلتفرم های مختلف:
https://github.com/dotnet/core/blob/master/release-notes/preview-download.md
همچنین ASP .NET Core 1.1 Preview 1 و Entity Framework Core 1.1 Preview 1 نیز منتشر شدند:
https://blogs.msdn.microsoft.com/webdev/2016/10/25/announcing-asp-net-core-1-1-preview-1/
https://blogs.msdn.microsoft.com/dotnet/2016/10/25/announcing-entity-framework-core-1-1-preview-1/
⭐️ قابل ذکر است که این نسخه، "Go Live" و پایدار نیست و هنوز برای استفاده در محصول واقعی توصیه نمی شود.
@IranAspMvc
GitHub
dotnet/core
core - Home repository for .NET Core
#WebApi #AspNetMvc #Proxy #Javascript #CSharp
امروزه سادگی و راحتی استفاده از ASP. NET Web API برای ساخت سرویس های RESTful در بستر دات نت فریم ورک و نیز تطابق کامل آن با الگوها و اصول ASP .NET MVC، سبب محبوبیت و فراگیر شدن آن در بسیاری از پروژه های نرم افزاری شده است. همین امر کافی است تا کتابخانه و پروژه های سورس باز زیادی نیز برای سهولت استفاده از این وب سرویس، تولید و در دسترس قرار گیرند.
یکی از کتابخانه های خوب و مفید، کتابخانه ی ProxyApi است، که همانطور که از نام آن پیداست کار آن تولیدِ خودکارِ پراکسی هایِ جاوااسکریپتی برای اکشن های WebApi و نیز MVC است، تا درسمت کلاینت و در کدهای جاواسکریپت، بدون ذکر Url و داشتن اطلاعات اضافی از نوع متد(get، post و …) آن api را صدا زده و از امکانات آن استفاده نمود. این ویژگی به خصوص برای unit testing و سوویچ بین دیتاسورس های مختلف نیز مفید است:
https://github.com/stevegreatrex/ProxyApi
اطلاعات بیشتر:
https://goo.gl/QuUGry
از دیگر کتابخانه های خوب که علاوه بر پراکسی جاوااسکریپتی، پراکسی C# آن را نیز برای استفاده ی کلاینت ها فراهم میکند، کتابخانه ی WebApiProxy است، که دارای امکاناتی چون code snippet آماده برای سرعت در کدنویسی و نیز قابلیت intellisense برای مشاهده ی اطلاعات مورد نیاز از api مربوطه و ... می باشد:
https://github.com/RestCode/WebApiProxy
بسته های نیوگت هر دو کتابخانه نیز جهت نصب و استفاده ی آسان، موجود هستند.
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA
امروزه سادگی و راحتی استفاده از ASP. NET Web API برای ساخت سرویس های RESTful در بستر دات نت فریم ورک و نیز تطابق کامل آن با الگوها و اصول ASP .NET MVC، سبب محبوبیت و فراگیر شدن آن در بسیاری از پروژه های نرم افزاری شده است. همین امر کافی است تا کتابخانه و پروژه های سورس باز زیادی نیز برای سهولت استفاده از این وب سرویس، تولید و در دسترس قرار گیرند.
یکی از کتابخانه های خوب و مفید، کتابخانه ی ProxyApi است، که همانطور که از نام آن پیداست کار آن تولیدِ خودکارِ پراکسی هایِ جاوااسکریپتی برای اکشن های WebApi و نیز MVC است، تا درسمت کلاینت و در کدهای جاواسکریپت، بدون ذکر Url و داشتن اطلاعات اضافی از نوع متد(get، post و …) آن api را صدا زده و از امکانات آن استفاده نمود. این ویژگی به خصوص برای unit testing و سوویچ بین دیتاسورس های مختلف نیز مفید است:
https://github.com/stevegreatrex/ProxyApi
اطلاعات بیشتر:
https://goo.gl/QuUGry
از دیگر کتابخانه های خوب که علاوه بر پراکسی جاوااسکریپتی، پراکسی C# آن را نیز برای استفاده ی کلاینت ها فراهم میکند، کتابخانه ی WebApiProxy است، که دارای امکاناتی چون code snippet آماده برای سرعت در کدنویسی و نیز قابلیت intellisense برای مشاهده ی اطلاعات مورد نیاز از api مربوطه و ... می باشد:
https://github.com/RestCode/WebApiProxy
بسته های نیوگت هر دو کتابخانه نیز جهت نصب و استفاده ی آسان، موجود هستند.
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA
GitHub
stevegreatrex/ProxyApi
A project to auto-generate JavaScript proxies for MVC and WebApi controllers - stevegreatrex/ProxyApi
#AspNetBoilerplate #AspNetCore
در پست های گذشته در مورد فریم ورکِ متن باز و قدرتمند ASP .NET Boilerplate با قابلیت ایجادِ تمپلیت آغازی، به عنوان نقطه شروع پروژه های نرم افزاری صحبت کردیم:
https://t.me/IranAspMvc/234
خبر خوب اینکه در نسخه ی جدید پروژه های ASP .NET Boilerplate و نیز ASP .NET Zero، قابلیت پشتیبانی کامل از .NET Core قرار داده شده است.
فریم ورک ASP .NET Boilerplate v2.0.0 از هر دوی .netstandard 1.6 و نیز .netframework 4.6 پشتیبانی میکند و این به معنی کراس پلتفرم بودن این فریم ورک خواهد بود!
مشکلات موجود در یکپارچگی با Entity Framework Core رفع شده است و پکیج جدیدی برای یکپارچگی با Hangfire.AspNetCore به آن اضافه شده است.
سایر ویژگی های نسخه ی جدیدِ این فریمورک محبوب و قدرتمند را در لینک زیر میتوانید مشاهده کنید:
http://volosoft.com/net-core-support-for-asp-net-boilerplate-and-asp-net-zero/
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA
در پست های گذشته در مورد فریم ورکِ متن باز و قدرتمند ASP .NET Boilerplate با قابلیت ایجادِ تمپلیت آغازی، به عنوان نقطه شروع پروژه های نرم افزاری صحبت کردیم:
https://t.me/IranAspMvc/234
خبر خوب اینکه در نسخه ی جدید پروژه های ASP .NET Boilerplate و نیز ASP .NET Zero، قابلیت پشتیبانی کامل از .NET Core قرار داده شده است.
فریم ورک ASP .NET Boilerplate v2.0.0 از هر دوی .netstandard 1.6 و نیز .netframework 4.6 پشتیبانی میکند و این به معنی کراس پلتفرم بودن این فریم ورک خواهد بود!
مشکلات موجود در یکپارچگی با Entity Framework Core رفع شده است و پکیج جدیدی برای یکپارچگی با Hangfire.AspNetCore به آن اضافه شده است.
سایر ویژگی های نسخه ی جدیدِ این فریمورک محبوب و قدرتمند را در لینک زیر میتوانید مشاهده کنید:
http://volosoft.com/net-core-support-for-asp-net-boilerplate-and-asp-net-zero/
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA
Telegram
Asp.Net Mvc
#AspNetBoilerplate, #Template, #Architecture, #Framework, #AspNetMvc, #AspNetCore
ASP .NET Boilerplate
یکی از سخت ترین کارها در توسعه ی نرم افزار، آغاز و پایه ریزی یک اپلیکیشن جدید است. پیاده سازی معماری، اضافه نمودن ابزارها و تنظیماتِ مربوطه، پایه ریزی…
ASP .NET Boilerplate
یکی از سخت ترین کارها در توسعه ی نرم افزار، آغاز و پایه ریزی یک اپلیکیشن جدید است. پیاده سازی معماری، اضافه نمودن ابزارها و تنظیماتِ مربوطه، پایه ریزی…
#Angular #Angular_CLI #AspNet #AspNetMVC
یکپارچه سازی Angular 4 CLI با پروژه های ASP.Net MVC 5 در ویژوال استودیو حرفه ای
پس از بازنویسی نگارش اولیه ی انگیولار، بهبودهای بسیار گسترده ای از جمله افزایش سرعت بارگذاری و اجرای کدها و نیز ساختار بهتر و ساده تر در آن به جود آمد که سبب شد توسعه دهندگان بیشتری به استفاده از این فریم ورک قدرتمند ترغیب شوند. اما این پایان ماجرا نبود و تیم انگیولار با معرفی برنامه ی خط فرمانی Angular CLI ، چند قدم فراتر رفته و کار ایجاد و مدیریت برنامه، کامپایل ماژول ها و کدهای تایپ اسکریپت و فرآیند بیلد و استقرار آن را به این برنامه محول کرد و سبب شد توسعه ی سریعتر و تجربه ی لذت بخش تری را برای توسعه دهندگان انگیولار فراهم آورد.
تنها نکته ی چالش برانگیزِ استفاده از این ابزار قدرتمند برای توسعه دهندگان دات نت این است که به دلیل وابستگی آن به webpack و اینکه به گونه ای طراحی شده که در زمان توسعه به صورت مستقل عمل کند، استفاده از آن در یک پروژه ی ASP.Net MVC و در ویژوال استودیو حرفه ای به شکل معمول و آسانِ خود میسر نیست و نیازمند برپایی تدارکات و تنظیماتی می باشد. البته اگر از پروژه های جدید ASP.NET Core و نیز محیط توسعه ی Visual Studio Code استفاده میکنید، با توجه به وجود NET Core CLI. که چیزی شبیه به خط فرمان Angular-CLI است، سازگاری بیشتری خواهید داشت. اما اگر به دلایل مختلف هنوز مجبور به استفاده از پروژه های قدیمی ASP.Net MVC 5 هم هستید، جای نگرانی نیست و لینک زیر گام به گام مراحلی که باید جهت یکپارچه سازی Angular CLI با پروژه ی ASP.Net MVC 5 خود طی کنید را شرح داده است. در ضمن اگر به دنبال نمونه ی یک پروژه ی واقعی و با ساختار خوب از Angular 4 هستید، پیشنهاد میکنم حتما پروژه ی موجود در این مقاله را دریافت و مطالعه نمایید:
https://www.codeproject.com/Articles/1193423/Integrating-the-Angular-CLI-With-Visual-Studio
@IranAspMvc
یکپارچه سازی Angular 4 CLI با پروژه های ASP.Net MVC 5 در ویژوال استودیو حرفه ای
پس از بازنویسی نگارش اولیه ی انگیولار، بهبودهای بسیار گسترده ای از جمله افزایش سرعت بارگذاری و اجرای کدها و نیز ساختار بهتر و ساده تر در آن به جود آمد که سبب شد توسعه دهندگان بیشتری به استفاده از این فریم ورک قدرتمند ترغیب شوند. اما این پایان ماجرا نبود و تیم انگیولار با معرفی برنامه ی خط فرمانی Angular CLI ، چند قدم فراتر رفته و کار ایجاد و مدیریت برنامه، کامپایل ماژول ها و کدهای تایپ اسکریپت و فرآیند بیلد و استقرار آن را به این برنامه محول کرد و سبب شد توسعه ی سریعتر و تجربه ی لذت بخش تری را برای توسعه دهندگان انگیولار فراهم آورد.
تنها نکته ی چالش برانگیزِ استفاده از این ابزار قدرتمند برای توسعه دهندگان دات نت این است که به دلیل وابستگی آن به webpack و اینکه به گونه ای طراحی شده که در زمان توسعه به صورت مستقل عمل کند، استفاده از آن در یک پروژه ی ASP.Net MVC و در ویژوال استودیو حرفه ای به شکل معمول و آسانِ خود میسر نیست و نیازمند برپایی تدارکات و تنظیماتی می باشد. البته اگر از پروژه های جدید ASP.NET Core و نیز محیط توسعه ی Visual Studio Code استفاده میکنید، با توجه به وجود NET Core CLI. که چیزی شبیه به خط فرمان Angular-CLI است، سازگاری بیشتری خواهید داشت. اما اگر به دلایل مختلف هنوز مجبور به استفاده از پروژه های قدیمی ASP.Net MVC 5 هم هستید، جای نگرانی نیست و لینک زیر گام به گام مراحلی که باید جهت یکپارچه سازی Angular CLI با پروژه ی ASP.Net MVC 5 خود طی کنید را شرح داده است. در ضمن اگر به دنبال نمونه ی یک پروژه ی واقعی و با ساختار خوب از Angular 4 هستید، پیشنهاد میکنم حتما پروژه ی موجود در این مقاله را دریافت و مطالعه نمایید:
https://www.codeproject.com/Articles/1193423/Integrating-the-Angular-CLI-With-Visual-Studio
@IranAspMvc
Codeproject
Integrating the Angular 4 CLI With Visual Studio Professional & Visual Studio Code