🔥 داغ ترین خبر های دنیای دات نت🔥
ا✅ NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-4/
ا✅ ASP.NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
ا✅ Entity Framework 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/
ا✅ NET Framework 4.8 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/
ا✅ Blazor از حالت آزمایشی خارج شد
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
به زودی جزئیاتشون رو با هم بررسی خواهیم کرد✌️
@IranAspMvc
ا✅ NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-4/
ا✅ ASP.NET Core 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
ا✅ Entity Framework 3.0 Preivew 4 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-0-preview-4/
ا✅ NET Framework 4.8 منتشر شد
https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/
ا✅ Blazor از حالت آزمایشی خارج شد
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
به زودی جزئیاتشون رو با هم بررسی خواهیم کرد✌️
@IranAspMvc
✅ دوره API نویسی اصولی و حرفه ای در ASP.NET Core
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
برای دیدن سرفصل ها و دموی دوره به لینک زیر مراجعه کنید
🔹کد تخفیف 20 درصدی : dotnetzoom
🔸لینک خرید دوره
https://bit.ly/2Xo6NX2
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP Core بررسی شده اند.
همچنین سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه.
ونیز Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
برای دیدن سرفصل ها و دموی دوره به لینک زیر مراجعه کنید
🔹کد تخفیف 20 درصدی : dotnetzoom
🔸لینک خرید دوره
https://bit.ly/2Xo6NX2
خب دوستان مدت زمان 2ماه گذشته و الان جامعه آماری مناسبی واسه رای گیری در مورد دروه قبلی داریم.
حالا به نظرتون دوره API نویسی حرفه ای، خوب بود؟
لطفا فقط کسانی که دوره رو تهیه کردند رای بدن تا آمار واقعی بدست بیاد 🌹
حالا به نظرتون دوره API نویسی حرفه ای، خوب بود؟
لطفا فقط کسانی که دوره رو تهیه کردند رای بدن تا آمار واقعی بدست بیاد 🌹
Final Results
48%
👌 عالی
34%
👍 متوسط
18%
👎ضعیف
Forwarded from Software Philosophy
و بالاخره Blazor از نسخه آزمایشی خارج شد!
پروژه Blazor داستان جذابی دارد. حدود دو سال پیش Steve Sanderson یک پروژه تفریحی به نام Blazor در گیتهاب خود درست کرد و شروع به آزمایش ایده خود کرد.
اگر مدت زیادی است که در دنیای JavaScript هستید حتما نام فریمورک محبوب knockout.js را شنیدهاید. این فریمورک یکی از فریمورکهای کوچک و سبک بایندینگ است که هنوز هم در خیلی از محصولات استفاده میشود. خالق این پروژه نیز Steve Sanderson بود!
ایده Steve این بود: اجرای کدهای C# روی مرورگر با استفاده از WebAssembly و استفاده از Razor و اجرای آن روی مرورگر. بنابراین ترکیب Razor و Browser شد نام پروژه: Blazor. با زبان خیلی ساده میتوان گفت Blazor قرار است یک فریمورک مانند Angular یا React باشد ولی با زبان C#!
تنها پس از چند ماه این پروژه شخصی او توجه بسیاری را به خود جلب کرد تا حدی که مایکروسافت تصمیم گرفت این پروژه را به عنوان یک پروژه آزمایشی به ASP.NET GitHub Organization اضافه کند. در زمان نوشتن این مطلب این ریپو ۷۹۰۰ استار دارد.
امروز همزمان با ریلیز ASP.NET Core 3.0 Preview 4 این پروژه از حالت آزمایشی درآمد و رسما به داتنت کور اضافه شد. یک تصمیم مهم تغییر نام Razor Component به Server-side Blazor بود. بنابراین از این به بعد Blazor یک مدل واحد نوشتن برنامههای سمت کلاینت است با چندین مدل هاست شدن:
- Server-side Blazor: runs on the server via SignalR
- Client-side Blazor: runs client-side on WebAssembly
جالب است بدانید که شرکتهای DevExpress، Telerik و Syncfusion شروع به ساختن کامپوننتهای Blazor کردهاند و همین الان محصولاتی روی آن ساختهاند.
لینک زیر حاوی اطلاعات جزئیتری از برنامه ریلیز و امکانات این محصول است.
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/Pnh030ouEX5
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
پروژه Blazor داستان جذابی دارد. حدود دو سال پیش Steve Sanderson یک پروژه تفریحی به نام Blazor در گیتهاب خود درست کرد و شروع به آزمایش ایده خود کرد.
اگر مدت زیادی است که در دنیای JavaScript هستید حتما نام فریمورک محبوب knockout.js را شنیدهاید. این فریمورک یکی از فریمورکهای کوچک و سبک بایندینگ است که هنوز هم در خیلی از محصولات استفاده میشود. خالق این پروژه نیز Steve Sanderson بود!
ایده Steve این بود: اجرای کدهای C# روی مرورگر با استفاده از WebAssembly و استفاده از Razor و اجرای آن روی مرورگر. بنابراین ترکیب Razor و Browser شد نام پروژه: Blazor. با زبان خیلی ساده میتوان گفت Blazor قرار است یک فریمورک مانند Angular یا React باشد ولی با زبان C#!
تنها پس از چند ماه این پروژه شخصی او توجه بسیاری را به خود جلب کرد تا حدی که مایکروسافت تصمیم گرفت این پروژه را به عنوان یک پروژه آزمایشی به ASP.NET GitHub Organization اضافه کند. در زمان نوشتن این مطلب این ریپو ۷۹۰۰ استار دارد.
امروز همزمان با ریلیز ASP.NET Core 3.0 Preview 4 این پروژه از حالت آزمایشی درآمد و رسما به داتنت کور اضافه شد. یک تصمیم مهم تغییر نام Razor Component به Server-side Blazor بود. بنابراین از این به بعد Blazor یک مدل واحد نوشتن برنامههای سمت کلاینت است با چندین مدل هاست شدن:
- Server-side Blazor: runs on the server via SignalR
- Client-side Blazor: runs client-side on WebAssembly
جالب است بدانید که شرکتهای DevExpress، Telerik و Syncfusion شروع به ساختن کامپوننتهای Blazor کردهاند و همین الان محصولاتی روی آن ساختهاند.
لینک زیر حاوی اطلاعات جزئیتری از برنامه ریلیز و امکانات این محصول است.
https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/Pnh030ouEX5
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
Microsoft News
Blazor now in official preview!
With this newest Blazor release we’re pleased to announce that Blazor is now in official preview! Blazor is no longer experimental and we are committing to ship it as a supported web UI framework including support for running client-side in the browser on…
🔰 چند نکته از NET Core SDK و Visual Studio
🔸 برای استفاده از ورژن های پیش نمایش (preview) دات نت کور در Visual Studio 2019 باید گزینه "Use Previews of the .NET Core SDK" را از مسیر زیر فعال کنید
🔹 ورژن های زیر از NET Core SDK بر روی Visual Studio 2017 کار نمی کند زیرا به MSBuild ورژن 16 نیاز دارد که با VS 2017 سازگاری ندارد و با Visual Studio 2019 اوکی هست
- ورژن های 2.2.2xx مانند 2.2.203
- ورژن های 2.1.6xx مانند 2.1.603
- ورژن های 3.0.1xx مانند 3.0.100
🔸 برای استفاده از آخرین آپدیت NET Core SDK 2.2 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.2.106 استفاده کنید
🔹 برای استفاده از آخرین آپدیت NET Core SDK 2.1 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.1.506 استفاده کنید
🔸 اگر با Visual Studio Code و یا JetBrains Rider کار کنید، هیچگاه متوجه وجود مسائل بالا نخواهید شد!
دلیلش اینه که هر نسخه از ویژوال استادیو ورژن MSBuild خودش رو داره و وقتی ما دکمه F5 رو میزنیم پروژه ها رو با اون build میکنه، در صوتی که اگر با دستور dotnet build توی command line بیلد میکرد هیچ مشکلی نداشت
از طرفی هر نسخه SDK یه range از عدد ورژن های MSBuild ایی که پشتیبانی میکنه رو تو خودش داره، ویژوال استادیو هم چک میکنه ببینه اون ورژن MSBuild لازم رو داره یا نه که اگه نه خطا میده
اما IDE های دیگه مثل VS Code و Rider از خودشون MSBuild ندارن و F5 رو میزنیم، پروژه رو با دستور dotnet build توی cmd بیلد میکنه، پس مشکلی نخواهند داشت
اطلاعات بیشتر:
https://github.com/dotnet/announcements/issues/108
_______________
@IranAspMvc
🔸 برای استفاده از ورژن های پیش نمایش (preview) دات نت کور در Visual Studio 2019 باید گزینه "Use Previews of the .NET Core SDK" را از مسیر زیر فعال کنید
Tools -> Options -> Projects and Solutions -> .NET Core -> Use Previews of the .NET Core SDK.تنظیم بالا در ورژن های بعدی VS 2019 به مسیر زیر انتقال می یابد
Tools -> Options -> Environment -> Preview Features🔹 اگر از ورژن های NET Core 3 SDK استفاده کنید نسخه زبان سی شارپ مورد استفاده در پروژه به صورت پیشفرض 8 خواهد بود
🔹 ورژن های زیر از NET Core SDK بر روی Visual Studio 2017 کار نمی کند زیرا به MSBuild ورژن 16 نیاز دارد که با VS 2017 سازگاری ندارد و با Visual Studio 2019 اوکی هست
- ورژن های 2.2.2xx مانند 2.2.203
- ورژن های 2.1.6xx مانند 2.1.603
- ورژن های 3.0.1xx مانند 3.0.100
🔸 برای استفاده از آخرین آپدیت NET Core SDK 2.2 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.2.106 استفاده کنید
🔹 برای استفاده از آخرین آپدیت NET Core SDK 2.1 قابل نصب بر روی Viusal Studio 2017 باید حتما از ورژن 2.1.506 استفاده کنید
🔸 اگر با Visual Studio Code و یا JetBrains Rider کار کنید، هیچگاه متوجه وجود مسائل بالا نخواهید شد!
دلیلش اینه که هر نسخه از ویژوال استادیو ورژن MSBuild خودش رو داره و وقتی ما دکمه F5 رو میزنیم پروژه ها رو با اون build میکنه، در صوتی که اگر با دستور dotnet build توی command line بیلد میکرد هیچ مشکلی نداشت
از طرفی هر نسخه SDK یه range از عدد ورژن های MSBuild ایی که پشتیبانی میکنه رو تو خودش داره، ویژوال استادیو هم چک میکنه ببینه اون ورژن MSBuild لازم رو داره یا نه که اگه نه خطا میده
اما IDE های دیگه مثل VS Code و Rider از خودشون MSBuild ندارن و F5 رو میزنیم، پروژه رو با دستور dotnet build توی cmd بیلد میکنه، پس مشکلی نخواهند داشت
اطلاعات بیشتر:
https://github.com/dotnet/announcements/issues/108
_______________
@IranAspMvc
GitHub
.NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017 · Issue #108 · dotnet/announcements
.NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017 .NET Core SDK 2.2.2nn and 2.1.6nn do not work with Visual Studio 2017. For example, 2.2.203 and 2.1.603 cause failures in Visua...
در راستای اجرای WinForms بر روی NET Core 3.0، ماکروسافت کنترل Chart را به NET Core 3.0 منتقل کرد
آدرس ریپازیتوری گیتهاب :
https://github.com/dotnet/winforms-datavisualization
نمونه Sample ها
https://github.com/dotnet/winforms-datavisualization/tree/master/sample/ChartSamples
آدرس پکیج :
https://www.nuget.org/packages/System.Windows.Forms.DataVisualization/
نکته: دیزاینر بصری (visual) برای تنظیم Chart فوق در Visual Studio 2019 هنوز در حال توسعه بوده و تکمیل نشده است لذا باید برای تغییر تنظیمات آن به صورت دستی کد نویسی کنید یا اینکه ابتدا تنظیم آن را در یک پروژه NET Framework انجادم دهید و سپس کد آن را به پروژه NET Core ایی خود منتقل کنید
@IranAspMvc
آدرس ریپازیتوری گیتهاب :
https://github.com/dotnet/winforms-datavisualization
نمونه Sample ها
https://github.com/dotnet/winforms-datavisualization/tree/master/sample/ChartSamples
آدرس پکیج :
https://www.nuget.org/packages/System.Windows.Forms.DataVisualization/
نکته: دیزاینر بصری (visual) برای تنظیم Chart فوق در Visual Studio 2019 هنوز در حال توسعه بوده و تکمیل نشده است لذا باید برای تغییر تنظیمات آن به صورت دستی کد نویسی کنید یا اینکه ابتدا تنظیم آن را در یک پروژه NET Framework انجادم دهید و سپس کد آن را به پروژه NET Core ایی خود منتقل کنید
@IranAspMvc
✅ پروژه gRPC ؛ نسل بعدی RESTful !
قبل از اینکه ببینیم gRPC چیه بهتره بدونم اصلا RPC چیه؟ RPC که مخفف Remote Procedure Call هست یه پروتکل واسه فراخوانی یه سرویس از یه برنامه داخل یه برنامه دیگه هست. یعنی برنامه A برای اینکه یه فانکشنی داخل برنامه B روی بتونه فراخوانی کنه از این پروتکل استفاده میکنه
پروژه gRPC درواقع یک فریمورک RPC سریع و قدرتمند هست که توسط گوگل و همکاری چندتا از شرکت های بزرگ دنیا درست شده.
توسط این فریمورک، کلاینت میتونه با سرور ارتباط برقرار کنه، یه API رو فراخوانی کنه و دیتای لازم بینشون رد و بدل بشه، چیزی مشابه RESTful ولی خیلی سریع تر، بهینه تر و ایمن تر؛ به دلایل زیر:
🔸 پروتکل gRPC به صورت پیشفرض واسه سریالایز کردن اطلاعات و پیام هایی که رد و بدل میشه از ProtocolBuffer استفاده میکنه که یه مکانیزم فوق سریع و قدرتمند برای سرایلایز کردن دیتا هست (یه کتابخانه با همین نام توسط گوگل نوشته شده و wrapper دات نتیش هم اسمش protobuf-net هست)
فرمت اطلاعات توی ProtocolBuffer به صورت باینری هست و از این بابت حجم اطلاعات کاهش پیدا میکنه در نتیجه اطلاعات قبل از ارسال فشرده میشن و ترافیک کمتر و درنتیجه سرعت بیشتری رو خواهیم داشت
🔹 یکی دیگه از خوبی های gRPC اینه که Schema (ساختار) متد های قابل فراخوانی سمت سرور به همراه پارامتر های ورودی و خروجی و ساختارشون رو برای کلاینت مشخص میکنه (مثل فایل swagger.json توی پروتکل Open API و ابزار Swagger)
یعنی کلاینت دقیقا میدونه چه کلاس ها و چه متد های در سمت سرور برای فراخوانی وجود داره و هر متد هم چه پارامتر هایی میگیره، ساختارشون چیه و چه خروجی ایی میده
🔸 نکته مثبت دیگه ای که داره اینکه قابلیت Bi-directional Streaming داره، یعنی در عین حال که کلاینت داره به سرور جریانی از داده ها (Stream) رو ارسال میکنه، همون لحظه سرور هم میتونه جریانی از داده ها رو برای کلاینت ارسال کنه (ارسال و دریافت همزمان اطلاعات) و این یعنی "ارتباط کاملا دو طرفه Stream ایی"
🔹 همچنین gRPC از پروتکل HTTP2 استفاده میکنه که هم سریعتر و هم ایمن تر از ورژن های قبلی HTTP هست
🔸 این پروتکل ارتباطی کاملا مستقل از زبان برنامه نویسی سمت کلاینت و سرور عمل میکنه درنتیجه مثلا کلاینت شما میتونه با Java نوشته بشه و سرور شما با سی شارپ یا هر زبان دیگه
اطلاعات بیشتر:
https://grpc.io
https://github.com/grpc/grpc
_______________
@IranAspMvc
قبل از اینکه ببینیم gRPC چیه بهتره بدونم اصلا RPC چیه؟ RPC که مخفف Remote Procedure Call هست یه پروتکل واسه فراخوانی یه سرویس از یه برنامه داخل یه برنامه دیگه هست. یعنی برنامه A برای اینکه یه فانکشنی داخل برنامه B روی بتونه فراخوانی کنه از این پروتکل استفاده میکنه
پروژه gRPC درواقع یک فریمورک RPC سریع و قدرتمند هست که توسط گوگل و همکاری چندتا از شرکت های بزرگ دنیا درست شده.
توسط این فریمورک، کلاینت میتونه با سرور ارتباط برقرار کنه، یه API رو فراخوانی کنه و دیتای لازم بینشون رد و بدل بشه، چیزی مشابه RESTful ولی خیلی سریع تر، بهینه تر و ایمن تر؛ به دلایل زیر:
🔸 پروتکل gRPC به صورت پیشفرض واسه سریالایز کردن اطلاعات و پیام هایی که رد و بدل میشه از ProtocolBuffer استفاده میکنه که یه مکانیزم فوق سریع و قدرتمند برای سرایلایز کردن دیتا هست (یه کتابخانه با همین نام توسط گوگل نوشته شده و wrapper دات نتیش هم اسمش protobuf-net هست)
فرمت اطلاعات توی ProtocolBuffer به صورت باینری هست و از این بابت حجم اطلاعات کاهش پیدا میکنه در نتیجه اطلاعات قبل از ارسال فشرده میشن و ترافیک کمتر و درنتیجه سرعت بیشتری رو خواهیم داشت
🔹 یکی دیگه از خوبی های gRPC اینه که Schema (ساختار) متد های قابل فراخوانی سمت سرور به همراه پارامتر های ورودی و خروجی و ساختارشون رو برای کلاینت مشخص میکنه (مثل فایل swagger.json توی پروتکل Open API و ابزار Swagger)
یعنی کلاینت دقیقا میدونه چه کلاس ها و چه متد های در سمت سرور برای فراخوانی وجود داره و هر متد هم چه پارامتر هایی میگیره، ساختارشون چیه و چه خروجی ایی میده
🔸 نکته مثبت دیگه ای که داره اینکه قابلیت Bi-directional Streaming داره، یعنی در عین حال که کلاینت داره به سرور جریانی از داده ها (Stream) رو ارسال میکنه، همون لحظه سرور هم میتونه جریانی از داده ها رو برای کلاینت ارسال کنه (ارسال و دریافت همزمان اطلاعات) و این یعنی "ارتباط کاملا دو طرفه Stream ایی"
🔹 همچنین gRPC از پروتکل HTTP2 استفاده میکنه که هم سریعتر و هم ایمن تر از ورژن های قبلی HTTP هست
🔸 این پروتکل ارتباطی کاملا مستقل از زبان برنامه نویسی سمت کلاینت و سرور عمل میکنه درنتیجه مثلا کلاینت شما میتونه با Java نوشته بشه و سرور شما با سی شارپ یا هر زبان دیگه
اطلاعات بیشتر:
https://grpc.io
https://github.com/grpc/grpc
_______________
@IranAspMvc
🔰 سوال یکی از دوستان و جواب کامل مهندس کرامتی درباره تاریخچه این تکنولوژی ها 👍
«سلام اقای کرامتی سوالی برای پیش اومده که دقیقا فرق بین web api ، signalr و gRPC در چیە ؟
و من چطور کاربرد اونارو توی پروژم تشخیص بدم ؟؟؟»
@IranAspMvc
«سلام اقای کرامتی سوالی برای پیش اومده که دقیقا فرق بین web api ، signalr و gRPC در چیە ؟
و من چطور کاربرد اونارو توی پروژم تشخیص بدم ؟؟؟»
@IranAspMvc
✅ یک تغییر مهم در ASP.NET Core 3.0 Preview 4
تغییرات این ورژن بیشتر مربوط به blazor بود که میتونین توی لینک ماکروسافت بخونینش ولی یه تغییر کوچیک اما مهم هم بین شون بود
از این پس به جای متد AddMvc توی ConfigureServices کلاس Startup سه تا متد دیگه اومده که بسته به نیازمون باید ازش استفاده کنیم.
- AddControllers
- AddControllersWithViews
- AddRazorPages
البته متد AddMvc توی این نسخه حذف نمیشه ولی احتمالش هست توی ورژن های بعدی حذف بشه.
🔸 اگه فقط میخواین API بنویسین یعنی به Controller نیاز دارین ولی به View یا Page نیاز ندارید باید از متد AddControllers استفاده کنید (پروژه Web API)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔹 اگه یه سایت MVC به صورت معمولی میخواین بنویسین یعنی به هم به Controller و هم به View نیاز دارید باید از متد AddControllersWithViews استفاده کنید (پروژه MVC)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔸 اگه یه سایت MVC به صورت Razor Pages میخواین بنویسین یعنی به هم به Controller و هم به Page نیاز دارید باید از متد AddRazorPages استفاده کنید (پروژه Razor Pages)
این متد موارد زیر رو اضافه میکنه :
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
🔹 هدف این کار اینه که متد هایی متمرکز و بهینه شده (بدون موارد اضافه) برای هر کاربرد وجود داشته باشه تا با استفاده از اونها به جای AddMvc کلی سربار اضافه به پروژه تحمیل نکنیم
اطلاعات بیشتر:
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
___________
@IranAspMvc
تغییرات این ورژن بیشتر مربوط به blazor بود که میتونین توی لینک ماکروسافت بخونینش ولی یه تغییر کوچیک اما مهم هم بین شون بود
از این پس به جای متد AddMvc توی ConfigureServices کلاس Startup سه تا متد دیگه اومده که بسته به نیازمون باید ازش استفاده کنیم.
- AddControllers
- AddControllersWithViews
- AddRazorPages
البته متد AddMvc توی این نسخه حذف نمیشه ولی احتمالش هست توی ورژن های بعدی حذف بشه.
🔸 اگه فقط میخواین API بنویسین یعنی به Controller نیاز دارین ولی به View یا Page نیاز ندارید باید از متد AddControllers استفاده کنید (پروژه Web API)
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
این متد موارد زیر رو اضافه میکنه :
- Controllers
- Model Binding
- API Explorer (OpenAPI integration)
- Authorization [Authorize]
- CORS [EnableCors]
- Data Annotations validation [Required]
- Formatter Mappings (translate a file-extension to a content-type)
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- Antiforgery
- Temp Data
- Views
- Pages
- Tag Helpers
- Memory Cache
🔹 اگه یه سایت MVC به صورت معمولی میخواین بنویسین یعنی به هم به Controller و هم به View نیاز دارید باید از متد AddControllersWithViews استفاده کنید (پروژه MVC)
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
این متد موارد زیر رو اضافه میکنه :
- Controllers
- Model Binding
- API Explorer (OpenAPI integration)
- Authorization [Authorize]
- CORS [EnableCors]
- Data Annotations validation [Required]
- Formatter Mappings (translate a file-extension to a content-type)
- Antiforgery
- Temp Data
- Views
- Tag Helpers
- Memory Cache
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- Pages
🔸 اگه یه سایت MVC به صورت Razor Pages میخواین بنویسین یعنی به هم به Controller و هم به Page نیاز دارید باید از متد AddRazorPages استفاده کنید (پروژه Razor Pages)
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
این متد موارد زیر رو اضافه میکنه :
- Pages
- Controllers
- Model Binding
- Authorization [Authorize]
- Data Annotations validation [Required]
- Antiforgery
- Temp Data
- Views
- Tag Helpers
- Memory Cache
موارد زیر قبلا توی AddMvc اضافه میشد ولی توی متد بالا دیگه اضافه نمیشه :
- API Explorer (OpenAPI integration)
- CORS [EnableCors]
- Formatter Mappings (translate a file-extension to a content-type)
🔹 هدف این کار اینه که متد هایی متمرکز و بهینه شده (بدون موارد اضافه) برای هر کاربرد وجود داشته باشه تا با استفاده از اونها به جای AddMvc کلی سربار اضافه به پروژه تحمیل نکنیم
اطلاعات بیشتر:
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
___________
@IranAspMvc
🔰 اگر به Microservices علاقمندید، احتمالاً این سخنرانی براتون جالب باشه
جیمی بوگارد (خالق AutoMapper و MediatR)، از تجربه پیادهسازی فاجعهبار این معماری در شرکت Dell میگه.
کاری که ۱۸ ماه طول کشیده و سرانجام در لانچ اولیه، هر ریکوئست حدود ۱۰ دقیقه طول میکشیده!!
https://www.youtube.com/watch?v=gfh-VCTwMw8
با تشکر از حامد سعیدی
@IranAspMvc
جیمی بوگارد (خالق AutoMapper و MediatR)، از تجربه پیادهسازی فاجعهبار این معماری در شرکت Dell میگه.
کاری که ۱۸ ماه طول کشیده و سرانجام در لانچ اولیه، هر ریکوئست حدود ۱۰ دقیقه طول میکشیده!!
https://www.youtube.com/watch?v=gfh-VCTwMw8
با تشکر از حامد سعیدی
@IranAspMvc
YouTube
Avoiding Microservice Megadisasters - Jimmy Bogard
You've spent months re-architecting your monolith into the new microservices vision. Everyone gathers around to flip the switch. You navigate to the first page...and nothing happens. Refresh...still nothing. The site is so slow, it won't respond for minutes.…
Forwarded from Software Philosophy
اگر بخواهیم امروز یک stack برای ۳ سال آینده انتخاب کنیم؟
در یکی از شرکتهایی که مشاور هستم سوال جالبی مطرح شده. قرار هست که برای ۳ سال آینده برنامهریزی فنی داشته باشیم و الان یک stack انتخاب کنیم که پروژههای آینده رو با اونها انجام بدیم. و خوب احتمالا ۳ سال بعد باز هم باید این تصمیم جدی رو دوباره بگیریم!
قرار شده هر کسی که پیشنهادی داره، پیشنهادش رو در قابل یک پروپوزال ارائه بده!
من تصمیم گرفتم این مستند رو روی گیتهاب درست کنم تا هم در اختیار همه باشه و هم بتونم از نظر همه شما استفاده کنم. اگر فکر میکنید در انتخاب stack تا حدودی شبیه هم فکر میکنیم خیلی خوشحال میشم تو تکمیلش بهم کمک کنین. تو گیتهاب نظراتتون رو به صورت issue مطرح کنین تا در موردشون بحث کنیم و یا حتی تغییراتی رو که به نظرتون میاد رو به صورت pull request بفرستید واسم.
https://github.com/mehrandvd/general-stack
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/DaUO30oz4z2
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
در یکی از شرکتهایی که مشاور هستم سوال جالبی مطرح شده. قرار هست که برای ۳ سال آینده برنامهریزی فنی داشته باشیم و الان یک stack انتخاب کنیم که پروژههای آینده رو با اونها انجام بدیم. و خوب احتمالا ۳ سال بعد باز هم باید این تصمیم جدی رو دوباره بگیریم!
قرار شده هر کسی که پیشنهادی داره، پیشنهادش رو در قابل یک پروپوزال ارائه بده!
من تصمیم گرفتم این مستند رو روی گیتهاب درست کنم تا هم در اختیار همه باشه و هم بتونم از نظر همه شما استفاده کنم. اگر فکر میکنید در انتخاب stack تا حدودی شبیه هم فکر میکنیم خیلی خوشحال میشم تو تکمیلش بهم کمک کنین. تو گیتهاب نظراتتون رو به صورت issue مطرح کنین تا در موردشون بحث کنیم و یا حتی تغییراتی رو که به نظرتون میاد رو به صورت pull request بفرستید واسم.
https://github.com/mehrandvd/general-stack
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، بر روی لینک زیر کلیک کنید:
https://ow.ly/DaUO30oz4z2
#مهران_داودی (https://ow.ly/GwIl309lFEm)
کانال تلگرام:
@SoftwarePhilosophy
___
GitHub
mehrandvd/general-stack
The question is as simple as this: Which stack to use for the next 3 years! - mehrandvd/general-stack
Forwarded from Software Philosophy
Media is too big
VIEW IN TELEGRAM
این ویدئوی ۱ دقیقهای، خلاصهای از سخنرانی تدکس مهران داودی هست. نسخه اصلی این TEDx Talk حدود ۱۸ دقیقه است. برای دیدن ویدئو کامل در صفحه رسمی تدکس در یوتیوب، میتونید لینکی که تو پیام زیر هست رو ببینید.
👇👇👇👇
👇👇👇👇
Forwarded from Software Philosophy
و بالاخره... اینم از سخنرانی تدکس من: «پروژه یک من جدید!».
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
تو تدکس در مورد نرونهای آینهای صحبت کردم و اینکه چطور این قسمت عجیب از مغز میتونه کمک کنه کارهای عجیبی رو انجام بدیم. کارهایی که به نظر خیلی نشدنی میان!
یکی از چیزهایی که انتقالش خیلی سخته، انتقال درده! خیلی سخته یه یکی توضیح بدی چطور درد میکنه! یه مفهوم بیربط دیگه هم هست که به نظر همینقدر سخته: انتقال مهارتهای کار تیمی! تو این TEDx Talk توضیح دادم که چطور یه قسمت از مغزمون به نام Mirror Neurons (که خیلی هم غافلیم ازش) میتونه کمک کنه این کارهای خیلی سخت رو، به حتی بدون صحبت کردن انجام بدیم!
یه قسمت از کلیپ هست که پام با محکککم میخوره به یه صندلی که تو صحنه هست که تو فیلم خیلی واضح نیفتاده. این رو گفتم که اون وسط نگین چی شد یه هو!
لینک ویدئوی کامل در صفحه رسمی تدکس در یوتیوب: https://www.youtube.com/watch?v=DfTuWdPV6JU
در صورت باز نشدن، این ویدئو در آپارات هم آپلود شده.
YouTube
Mirroring Neurons: A "NEW ME" can change the world! | Mehran Davoudi | TEDxYouth@Tehran
We are living in the most strange country of the world. We have everything to be the best, but still we are not! Far far away, just because of one thing! We have the majority types of mines, majority types of planets and… Lack of "one thing" stops us from…
هفته دیگه 16 ام تا 19 ام کنفرانس Build ماکروسافت هست و برنامه هیجان انگیزی داریم تدارک میبینیم 🎉
پس منتظر خبرای خوب باشید✌️✌️✌️
@IranAspMvc
پس منتظر خبرای خوب باشید✌️✌️✌️
@IranAspMvc
❇️ بررسی قابلیت Endpoint Routing
🔸 مکانیزم مسیریابی به این صورته که ما Route هامون رو توی میدلور MVC توسط متد UseMvc تعریف میکنیم
و زمانی که یه Request به میدلور MVC میرسه، این میدلور بر اساس اطلاعات Url و Route های تعریف شده، اولین Route ایی که همخوانی داشته باشه رو انتخاب میکنه و مقادیر مسیر یابی (RouteValues) رو استخراج میکنه و بدین ترتیب میفهمه که کدوم Controller و Action رو باید فراخوانی کنه
🔹 توی Pipeline چون میدلور ها به صورت ترتیبی اجرا میشن تا زمانی که درخواست ما به میدلور MVC نرسه ما نمیتونیم از RouteValues استفاده کنیم
مشکل جایی پیش میاد که مثلا نیاز داریم واسه وبسایت های چند زبانه که بر اساس Url کار میکنند (مثلا fa/home/index) ما نیاز داریم قبل از رسیدن به میدلور MVC، زبان جاری (همون fa) رو توسط سیستم مسیریابی بخونیم و Culture برنامه رو تغییر بدیم ولی تا زمانی که به میدلور MVC نرسیم این کار امکان پذیر نیست
🔸 یک مثال دیگر آن استفاده از خاصیت EnableCorsAttribute (است که بر خلاف app.UseCors که مکانیزم CORS را به صورت سراسری اعمال میکند) میتوان آن را بر روی یک Action خاص اعمال کرد
از آنجایی که در مکانیزم مسیریابی قبلی، سیستم Routing بسیار وابسته به MVC است ما نمی تونیم قبل از رسیدن به میدلور MVC جلوی درخواست های غیر مجاز رو بگیریم، چرا که به Routing درسترسی نداریم و نمیدونیم کدوم Controller و Action قراره فراخوانی بشه
🔹 توی مکانیزم Endpoint Routing اما، وقتی یه درخواست میاد، همون ابتدا مشخص میشه که به کدوم Route مپ شده درنتیجه بقیه میدلور های قبل از میدلور MVC هم میتونن از سیستم Routing استفاده کرده و اطلاعات داخل Url رو درک کنن
🔸 این قابلیت در ASP Core 2.2 اوایل با نام Dispatcher معرفی شد که بعدا به Endpoint Routing تغییر نام پیدا کرد و به صورت پیشفرض توسط SetCompatibilityVersion ورژن Version_2_2 به بالا فعال میشه
🔹 برای استفاده از Endpoint Routing باید میدلور UseEndpointRouting رو اضافه کنید. کار این midlleware تشخیص Endpoint مورد نظر براساس Url درخواستی و Route های تعریف شده است و پس از آن شما میتوانید از مقادیر مسیریابی (RouteValues) استفاده کنید (حتی قبل از رسیدن به محل تعریف Route ها)
نحوه استفاده از این قابلیت در ASPNET Core 2.2 به صورت زیر است
لینک مقاله در دات نت تیپس:
https://www.dotnettips.info/post/3031
_______________
@IranAspMvc
🔸 مکانیزم مسیریابی به این صورته که ما Route هامون رو توی میدلور MVC توسط متد UseMvc تعریف میکنیم
و زمانی که یه Request به میدلور MVC میرسه، این میدلور بر اساس اطلاعات Url و Route های تعریف شده، اولین Route ایی که همخوانی داشته باشه رو انتخاب میکنه و مقادیر مسیر یابی (RouteValues) رو استخراج میکنه و بدین ترتیب میفهمه که کدوم Controller و Action رو باید فراخوانی کنه
🔹 توی Pipeline چون میدلور ها به صورت ترتیبی اجرا میشن تا زمانی که درخواست ما به میدلور MVC نرسه ما نمیتونیم از RouteValues استفاده کنیم
مشکل جایی پیش میاد که مثلا نیاز داریم واسه وبسایت های چند زبانه که بر اساس Url کار میکنند (مثلا fa/home/index) ما نیاز داریم قبل از رسیدن به میدلور MVC، زبان جاری (همون fa) رو توسط سیستم مسیریابی بخونیم و Culture برنامه رو تغییر بدیم ولی تا زمانی که به میدلور MVC نرسیم این کار امکان پذیر نیست
🔸 یک مثال دیگر آن استفاده از خاصیت EnableCorsAttribute (است که بر خلاف app.UseCors که مکانیزم CORS را به صورت سراسری اعمال میکند) میتوان آن را بر روی یک Action خاص اعمال کرد
از آنجایی که در مکانیزم مسیریابی قبلی، سیستم Routing بسیار وابسته به MVC است ما نمی تونیم قبل از رسیدن به میدلور MVC جلوی درخواست های غیر مجاز رو بگیریم، چرا که به Routing درسترسی نداریم و نمیدونیم کدوم Controller و Action قراره فراخوانی بشه
🔹 توی مکانیزم Endpoint Routing اما، وقتی یه درخواست میاد، همون ابتدا مشخص میشه که به کدوم Route مپ شده درنتیجه بقیه میدلور های قبل از میدلور MVC هم میتونن از سیستم Routing استفاده کرده و اطلاعات داخل Url رو درک کنن
🔸 این قابلیت در ASP Core 2.2 اوایل با نام Dispatcher معرفی شد که بعدا به Endpoint Routing تغییر نام پیدا کرد و به صورت پیشفرض توسط SetCompatibilityVersion ورژن Version_2_2 به بالا فعال میشه
🔹 برای استفاده از Endpoint Routing باید میدلور UseEndpointRouting رو اضافه کنید. کار این midlleware تشخیص Endpoint مورد نظر براساس Url درخواستی و Route های تعریف شده است و پس از آن شما میتوانید از مقادیر مسیریابی (RouteValues) استفاده کنید (حتی قبل از رسیدن به محل تعریف Route ها)
نحوه استفاده از این قابلیت در ASPNET Core 2.2 به صورت زیر است
// ASP.NET Core 2.2نکته : در ASPNET Core 3.0 متد UseEndpointRouting به UseRouting تغییر نام پیدا کرد و نیز تعریف Route (بهتره بگیم Endpoint ها) به شکل زیر تغییر پیدا کرده
public void Configure(IApplicationBuilder app)
{
app.UseEndpointRouting();
app.OtherMiddleware(); // Access to route values
app.UseMvc();
}
// ASP.NET Core 3.0برای غیر فعال کردن قابلیت Endpoint Routing میتوانید توسط MvcOptions.EnableEndpointRouting = false آن را غیرفعال کنید.
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.OtherMiddleware();
app.UseEndpoints(endpoints =>
{
// Mapping of endpoints goes here:
endpoints.MapControllers()
endpoints.MapRazorPages()
endpoints.MapHub<MyChatHub>()
endpoints.MapGrpcService<MyCalculatorService>()
});
}
لینک مقاله در دات نت تیپس:
https://www.dotnettips.info/post/3031
_______________
@IranAspMvc
Forwarded from اِسکیلی Skilly (مهدی کرامتی)
🔗📚 توصیه هایی برای شکل آدرس های URL در وب سایت ها:
در ادامه، توصیه های عمومی که برنامه نویس ها بهتر در طراحی ترکیب آدرس های وب شان رعایت کنند ذکر شده است:
1️⃣ سعی کنید URL ها بیانگر محتوایی باشند که کاربر پس از باز کردن URL آن را خواهد دید، نه اینکه حول محور نحوه پیاده سازی برنامه شما باشند. بعنوان مثال بهتر است به جای /Website_v2/CachedContentServer/FromCache/AnnualReport از /Articles/AnnualReport استفاده شود.
2️⃣ سعی کنید بجای استفاده از اعداد در آدرس از حروف استفاده کنید. مثلا بجای /Articles/2392 از /Articles/AnnualReportاستفاده کنید.
اگر بخاطر کاهش تعداد کوئری هایی که قرار است به دیتابیس بزنید نیاز به شناسه کتاب دارید داشتن آدرسی مانند /Articles/2392/AnnualReport بهتر است. تایپ چنین آدرسی کمی بیشتر زمان می برد، اما مخاطب شما درک بهتری از محتوای آدرس خواهد داشت. همچنین داشتن چنین آدرسی در بهبود رتبه سایت شما در موتورهای جستجو نیز تاثیر دارد. هنگام خواندن این آدرس در برنامه کافی است فقط قسمت عددی آدرس را در قالب یک پارامتر بخوانید.
3️⃣ به عنوان پسوند صفحه از پسوندهای گمراه کنند مانند .zip و .pdf و استفاده نکنید. Web Browser ها توجهی به پسوند آدرس شما ندارند و برای شان Mime Type پاسخ سایت مهم است، اما مخاطبان سایت شما انسان هستند و وقتی لینکی را می بینند که پسوند آن .pdf است توقع دارند با کلیک بر روی آن یک فایل PDF برای شان باز شود.
4️⃣ سعی کنید در ترکیب URL های تان سلسله مراتب یک صفحه را القا کنید. به عنوان مثال مخاطب سایت شما با نگاه کردن به URL ای مانند /Products/Menswear/Shirts/Red می تواند درک کند این آدرس مربوط به کالایی از گروه لباس های مردانه، پیراهن و با رنگ قرمز است.
5️⃣ سعی کنید آدرس شما حساس به حروف بزرگ و کوچک نباشد، چرا که ممکن است کسی بخواهد آدرس صفحه شما را از روی یک کاغذ پرینت شده خوانده و در Browser تایپ کند. سیستم Routing در ASP.NET Core نیز به حروف بزرگ و کوچک حساس نیست.
6️⃣ از بکار بردن علائم و ترتیب کاراکترها در URL خودداری کنید. اگر نیاز دارید در آدرس تان فاصله بیاندازید بجای فاصله از کاراکتر dash (همان -) استفاده کنید (مثال: /my-great-article). استفاده از کاراکتر Underscore (یا _) پسندیده نیست. همچنین استفاده از فاصله های URL Encoded آزار دهنده است (مثلا /my+great+article یا /my%20great%20article آدرس جالبی محسوب نمی شود).
7️⃣ آدرس های URL تان را عوض نکنید. URL هایی که کار نمی کنند به منزله یک بیزنس شکست خورده هستند. اگر بنا بر هر دلیلی نیاز به عوض کردن URL هایتان دارید با افزودن پشتیبانی URL های قدیمی تان و هدایت آن ها به آدرس جدید از افت رتبه Seo تان جلوگیری کنید.
8️⃣ سعی کنید الگوی URL ها در تمام برنامه تان شکل مشابهی داشته باشد.
🔗 جِیکوب نیِلسِن توصیه هایی مشابه موارد فوق را در صفحه اش بیان کرده است:
https://www.nngroup.com/articles/url-as-ui
🔗 آقای تیم بِرنِرز لی (خالق وب) نیز توصیه های مشابهی دارد:
https://www.w3.org/Provider/Style/URI
با تقدیم احترام
#مهدی_کرامتی
@barnamenevis_org
در ادامه، توصیه های عمومی که برنامه نویس ها بهتر در طراحی ترکیب آدرس های وب شان رعایت کنند ذکر شده است:
1️⃣ سعی کنید URL ها بیانگر محتوایی باشند که کاربر پس از باز کردن URL آن را خواهد دید، نه اینکه حول محور نحوه پیاده سازی برنامه شما باشند. بعنوان مثال بهتر است به جای /Website_v2/CachedContentServer/FromCache/AnnualReport از /Articles/AnnualReport استفاده شود.
2️⃣ سعی کنید بجای استفاده از اعداد در آدرس از حروف استفاده کنید. مثلا بجای /Articles/2392 از /Articles/AnnualReportاستفاده کنید.
اگر بخاطر کاهش تعداد کوئری هایی که قرار است به دیتابیس بزنید نیاز به شناسه کتاب دارید داشتن آدرسی مانند /Articles/2392/AnnualReport بهتر است. تایپ چنین آدرسی کمی بیشتر زمان می برد، اما مخاطب شما درک بهتری از محتوای آدرس خواهد داشت. همچنین داشتن چنین آدرسی در بهبود رتبه سایت شما در موتورهای جستجو نیز تاثیر دارد. هنگام خواندن این آدرس در برنامه کافی است فقط قسمت عددی آدرس را در قالب یک پارامتر بخوانید.
3️⃣ به عنوان پسوند صفحه از پسوندهای گمراه کنند مانند .zip و .pdf و استفاده نکنید. Web Browser ها توجهی به پسوند آدرس شما ندارند و برای شان Mime Type پاسخ سایت مهم است، اما مخاطبان سایت شما انسان هستند و وقتی لینکی را می بینند که پسوند آن .pdf است توقع دارند با کلیک بر روی آن یک فایل PDF برای شان باز شود.
4️⃣ سعی کنید در ترکیب URL های تان سلسله مراتب یک صفحه را القا کنید. به عنوان مثال مخاطب سایت شما با نگاه کردن به URL ای مانند /Products/Menswear/Shirts/Red می تواند درک کند این آدرس مربوط به کالایی از گروه لباس های مردانه، پیراهن و با رنگ قرمز است.
5️⃣ سعی کنید آدرس شما حساس به حروف بزرگ و کوچک نباشد، چرا که ممکن است کسی بخواهد آدرس صفحه شما را از روی یک کاغذ پرینت شده خوانده و در Browser تایپ کند. سیستم Routing در ASP.NET Core نیز به حروف بزرگ و کوچک حساس نیست.
6️⃣ از بکار بردن علائم و ترتیب کاراکترها در URL خودداری کنید. اگر نیاز دارید در آدرس تان فاصله بیاندازید بجای فاصله از کاراکتر dash (همان -) استفاده کنید (مثال: /my-great-article). استفاده از کاراکتر Underscore (یا _) پسندیده نیست. همچنین استفاده از فاصله های URL Encoded آزار دهنده است (مثلا /my+great+article یا /my%20great%20article آدرس جالبی محسوب نمی شود).
7️⃣ آدرس های URL تان را عوض نکنید. URL هایی که کار نمی کنند به منزله یک بیزنس شکست خورده هستند. اگر بنا بر هر دلیلی نیاز به عوض کردن URL هایتان دارید با افزودن پشتیبانی URL های قدیمی تان و هدایت آن ها به آدرس جدید از افت رتبه Seo تان جلوگیری کنید.
8️⃣ سعی کنید الگوی URL ها در تمام برنامه تان شکل مشابهی داشته باشد.
🔗 جِیکوب نیِلسِن توصیه هایی مشابه موارد فوق را در صفحه اش بیان کرده است:
https://www.nngroup.com/articles/url-as-ui
🔗 آقای تیم بِرنِرز لی (خالق وب) نیز توصیه های مشابهی دارد:
https://www.w3.org/Provider/Style/URI
با تقدیم احترام
#مهدی_کرامتی
@barnamenevis_org
Forwarded from TondTech
بهترین کامپوننتهای UI برای Angular در سال 2019
✔️ Angular Material (Official library)
✔️ Onsen UI
✔️ NG Bootstrap
✔️ NGX Bootstrap
✔️ NG-Lightning
✔️ Clarity
✔️ Vaadin Components
✔️ PrimeNG
✔️ MDBootstrap
✔️ Teradata Covalent UI Platform
✔️ Amexio
✔️ DevExtreme
✔️ Wijmo
✔️ jQwidgets
✔️ Kendo UI
منابع :
https://hackernoon.com/top-8-angular-component-libraries-you-should-know-in-2019-68fcfdc6a093
https://www.ngdevelop.tech/best-angular-ui-component-libraries/
_______________
@IranAspMvc
✔️ Angular Material (Official library)
✔️ Onsen UI
✔️ NG Bootstrap
✔️ NGX Bootstrap
✔️ NG-Lightning
✔️ Clarity
✔️ Vaadin Components
✔️ PrimeNG
✔️ MDBootstrap
✔️ Teradata Covalent UI Platform
✔️ Amexio
✔️ DevExtreme
✔️ Wijmo
✔️ jQwidgets
✔️ Kendo UI
منابع :
https://hackernoon.com/top-8-angular-component-libraries-you-should-know-in-2019-68fcfdc6a093
https://www.ngdevelop.tech/best-angular-ui-component-libraries/
_______________
@IranAspMvc
🔰 #آیا_میدانستید
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟
مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@IranAspMvc
توی کنسول مروگر میتونین با دستور console.table، آرایه ها و لیست ها تون رو به صورت جدولی نشون بدین؟
var exampleArray = [
"First item in the array",
"I'm the second item in this array",
"Obviously i'm the last item"
];
console.table(exampleArray);
مثال های بیشتر:
https://www.telerik.com/blogs/better-visualization-of-console-data-with-tables
__________
@IranAspMvc
Forwarded from Ref.Codes (Meysam Khoshbakht)
Media is too big
VIEW IN TELEGRAM
✅ کنفرانس Microsoft Build شروع شد
از لینک های زیر میتونین به صورت زنده مشاهده کنین
https://mybuild.techcommunity.microsoft.com/home#top-anchor
اگه مشکلی با فیلترینگ ندارید، یوتیوب زیرنویس بهتری ارائه میده
https://www.youtube.com/watch?v=ZbpjLchrYgw
سعی میکنیم تحلیل و بررسی اخبار جدید و مهم اش رو به زودی توی کانال منتشر کنیم
متاسفانه قسمت جدید GOT هم منتشر شده و باید قید Build رو بزنیم 😅
______________
@IranAspMvc
از لینک های زیر میتونین به صورت زنده مشاهده کنین
https://mybuild.techcommunity.microsoft.com/home#top-anchor
اگه مشکلی با فیلترینگ ندارید، یوتیوب زیرنویس بهتری ارائه میده
https://www.youtube.com/watch?v=ZbpjLchrYgw
سعی میکنیم تحلیل و بررسی اخبار جدید و مهم اش رو به زودی توی کانال منتشر کنیم
متاسفانه قسمت جدید GOT هم منتشر شده و باید قید Build رو بزنیم 😅
______________
@IranAspMvc