In addition to this, Chrome has announced that it is going to start blocking mixed-content downloads (https://blog.chromium.org/2020/02/protecting-users-from-insecure.html). In this case, they are starting in Chrome 83 (June 2020) with blocking executable file downloads (.exe, .apk) that are over HTTP but requested from an HTTPS site.
کارمندان مایکروسافت جهت شفاف سازی تصمیم گرفتند حقوق های خود را با یکدیگر به اشتراک بگذارند.
While few data points about Microsoft engineers working in India were available, the crowdsourced data revealed they are paid far less than their Washingtonian counterparts. The typical Indian coder who filled out the spreadsheet makes less than $50,000 per year, while Americans with similar experience make $150,000 per year with up to 10 times as much
compensation in bonuses
public class BackgroundWorkerViewModel : BaseViewModel { private List<string> _myData; public BackgroundWorkerViewModel() { LoadDataCommand = new RelayCommand(OnLoadData); } public RelayCommand LoadDataCommand { get; set; } public List<string> MyData { get { return _myData; } set { _myData = value; RaisePropertyChanged(() => MyData); } } public bool IsBusy { get; set; } private void OnLoadData() { var backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += (sender, e) => { MyData = new List<string> {"Test"}; Thread.Sleep(1000); }; backgroundWorker.RunWorkerCompleted += (sender, e) => { IsBusy = false; }; backgroundWorker.RunWorkerAsync(); } }
[TestFixture] public class BackgroundWorkerViewModelTest { #region Setup/Teardown [SetUp] public void SetUp() { _backgroundWorkerViewModel = new BackgroundWorkerViewModel(); } #endregion private BackgroundWorkerViewModel _backgroundWorkerViewModel; [Test] public void TestGetData() { _backgroundWorkerViewModel.LoadDataCommand.Execute(_backgroundWorkerViewModel); Assert.NotNull(_backgroundWorkerViewModel.MyData); Assert.IsNotEmpty(_backgroundWorkerViewModel.MyData); } }
public interface IWorker { void Run(DoWorkEventHandler doWork); void Run(DoWorkEventHandler doWork, RunWorkerCompletedEventHandler onComplete); }
public class AsyncWorker : IWorker { public void Run(DoWorkEventHandler doWork) { Run(doWork, null); } public void Run(DoWorkEventHandler doWork, RunWorkerCompletedEventHandler onComplete) { var backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += doWork; if (onComplete != null) backgroundWorker.RunWorkerCompleted += onComplete; backgroundWorker.RunWorkerAsync(); } }
public class SyncWorker : IWorker { #region IWorker Members public void Run(DoWorkEventHandler doWork) { Run(doWork, null); } public void Run(DoWorkEventHandler doWork, RunWorkerCompletedEventHandler onComplete) { Exception error = null; var doWorkEventArgs = new DoWorkEventArgs(null); try { doWork(this, doWorkEventArgs); } catch (Exception ex) { error = ex; throw; } finally { onComplete(this, new RunWorkerCompletedEventArgs(doWorkEventArgs.Result, error, doWorkEventArgs.Cancel)); } } #endregion }
public class BackgroundWorkerViewModel : BaseViewModel { private readonly IWorker _worker; private List<string> _myData; public BackgroundWorkerViewModel(IWorker worker) { _worker = worker; LoadDataCommand = new RelayCommand(OnLoadData); } public RelayCommand LoadDataCommand { get; set; } public List<string> MyData { get { return _myData; } set { _myData = value; RaisePropertyChanged(() => MyData); } } public bool IsBusy { get; set; } private void OnLoadData() { IsBusy = true; // view is bound to IsBusy to show 'loading' message. _worker.Run( (sender, e) => { MyData = new List<string> {"Test"}; Thread.Sleep(1000); }, (sender, e) => { IsBusy = false; }); } }
[TestFixture] public class BackgroundWorkerViewModelTest { #region Setup/Teardown [SetUp] public void SetUp() { _backgroundWorkerViewModel = new BackgroundWorkerViewModel(new SyncWorker()); } #endregion private BackgroundWorkerViewModel _backgroundWorkerViewModel; [Test] public void TestGetData() { _backgroundWorkerViewModel.LoadDataCommand.Execute(_backgroundWorkerViewModel); Assert.NotNull(_backgroundWorkerViewModel.MyData); Assert.IsNotEmpty(_backgroundWorkerViewModel.MyData); } }
سورس باز شدن کامپوننتهای بومی WPF
We are happy to announce that we are open sourcing (#2553) native components in WPF – wpfgfx_cor3.dll
and penimc_cor3.dll
. With this, we have completed all planned open-sourcing work for WPF on .NET Core.
انتشار EF6.1.3 RTM
Query: Regression in EF 6.1.2: OUTER APPLY introduced and more compex queries for 1:1 relationships and "let" clauseTPT problem with hiding base class property in inherited classDbMigration.Sql fails when the word 'go' is contained in the textCreate compatibility flag for UnionAll and Intersect flattening supportQuery with multiple Includes does not work in 6.1.2 (working in 6.1.1)"You have an error in your SQL syntax" after upgrading from EF 6.1.1 to 6.1.2
.NET 7 minimal API from scratch | FULL COURSE | clean architecture, repository pattern, CQRS MediatR
In this course I want to provide you a project structure and code organization to get you started with real .NET 7 minimal API projects. It's a full course on this topic where I start from creating and explaining the project structure, setting up different layers using EF Core, repository pattern, CQRS and MediatR. The biggest part of the video is however around the .NET 7 minimal API, taking you from the initial setup, explaining route handlers, implementing all CRUD operations and so on. Last but not least, this course walks you through the process of refactoring the .NET 7 minimal API so that it becomes readable, maintainable and scalable. At the end, you'll have a full project structure organized according to modern architectural patterns that you can take as a template for your own projects.
Contents
1. Intro: 00:00
2. Structuring the solution: 01:00
3. Coding the domain layer: 05:25
4. Coding the data access layer: 08:22
5. Creating repositories: 11:17
6. Adding migrations and database update: 22:30
7. CQRS with MediatR: 29:07
8. Route and rout handlers: 52:06
9. Dependency injection: 55:52
10. Implementing GET by ID : 57:40
11. Implementing POST route: 01:00:26
12. Implementing GET all route: 01:03:41
13. Implement PUT and DELETE: 01:04:57
14. Testing with Postman: 01:09:01
15. Is there a problem? 01:12:41
16. Refactoring service registrations: 01:15:49
17. Refactoring route registrations: 01:20:01
18. Automatic registration of endpoints: 01:26:28
19. Introducing route groups: 01:31:43
20. Extract lambdas into instance methods: 01:34:31
21: Model validation with endpoint filters: 01:45:58
22. Global exception handling: 01:55:10
23. Conclusions: 01:59:49
Explore ASP.NET Core SDK and tooling, look at .NET Core CLI, and learn how to build an ASP.NET Core app with Razor Pages MVC. Plus, get the details on logging and diagnostics. Find lots of cross-platform goodness and get .NET ready, as you learn more about this framework for building modern cloud-based web apps. Build your first ASP.NET project, and gear up for the intermediate ASP.NET Core course.