First, Intro
Since I was a novice programmer. NET has never let me down. Always pleasantly surprised constantly.
When my first project was to do a invoicing. Use the WinForm. I was an electromechanical engineer at that time. Programming is just an amateur whim.
. NET low-threshold, vs good programming experience and MSDN Perfect instructions let me embark on the path of the yard farming.
Looking back 10 years, is from. NET2.0 all the way, I remember the source of inspiration sent a. NET technology stack Daquan,
(http://www.cnblogs.com/unruledboy/p/NetStack.html), the control of their own, 4.5 rarely used, other techniques are more or less involved.
Second, . NET analysis of the technology stack
. NET has been released since the first edition, and has been 17 years old. Can endure, must have its strengths and highlights. I think the biggest highlight of it is productivity. The biggest specialty is doing desktop applications.
Speak Popular, that is. NET can do anything, do the desktop he is the most refined, caller him the fastest.
Do the mobile side,. NET also has a place, xamarin and unity. However, the competitors have Java and obj-c,swift,h5 with the PK. Xamarin is still a little bit young.
Doing back-office services,. NET CORE,WCF These technologies are good, but many of the servers are Linux,java preconceived and more advantageous.
Do Web pages, ASP. NET is good. But rivals are more powerful, java,php,js, and open source solutions.
In the now popular no SQL, Ai these fields,. NET has a place, but it's obviously not the mainstream.
And in the desktop this piece, have wpf,winform, and he related to have wcf,wf,ado.net,ef,linq. Combined with visual Studio,ofiice,sql Server, the competitor is not at all a grade.
So, what are the best areas for this technology stack, and I think that's the kind of program that runs on Windows systems.
Desktop applications to the database has a database, to serve a service, to control the control, to report a report (RDLC), it is simply what to have. Not to mention powerful third-party controls and rich open source components.
If someone wants to use Java or any other technology to do the desktop, I can only say that this is very wonderful. Unless you have a performance requirement to a degree of rigor.
If you want to do mobile, big data, Internet or something, continue to use. NET no problem. But the price is not outstanding. For example no SQL this piece, other language good to let it do well,. NET to invoke is. Tian Bogey horse racing, weaknesses.
Some people say that the desktop pills, Microsoft to pour, what? Microsoft's new CEO two years of stock up more than a fold, now live Well, Delphi This mother's children are now thriving, is not thinking more.
And someone else took it. NET performance to say things. Say nothing less than C + + and so on. Before the old Zhao, Xiaotie they have analyzed, according to my experience, has not found any performance problems.
Because. NET class library and C # language have a feature that gives you a variety of choices. You want to make it easy. Naturally, you can use off-the-shelf. Want to pursue the ultimate, even you can use pointers. I've also used pointers.
Not a lot of performance, and the difference in development efficiency, this price should be carefully considered.
Third, Extreme crushing. NET technology stack's potential
Since. NET highlight is productivity, in combination with my personal example.
Originally intended to design configuration software. Unit is not a software company, my responsibility is not to design configuration software. At first it was just a whim. But faced with a big problem. I see the configuration software, Wincc,intouch, are giants.
If it wasn't for the brain to burn out, you wouldn't want to do it on your own. But after I analyzed it, I found that I only had to solve two key issues. One is the configuration designer and one is the gateway.
The gateway I'm referring to is the OPC specification. Press No table. Configuring the designer this, because I have a crush on WPF's ability to represent primitives, and the 0 code design capabilities of blend. Search the WPF graphic designer online First and find this:
Thank Zhou Jingen for this clue. Found a set of WPF open source Graphic design components: Diagarm Designer.
However, after watching the Code experience the demo, and then compare the functions of WINCC, feel the workload is very large.
At this point I think it would be nice if I could incorporate the interface functionality of this component into Visual Studio. So I went on searching and found this:
https://msdn.microsoft.com/zh-cn/subscriptions/bb546938 (v=vs.90). aspx
sure enough, Microsoft didn't disappoint me. So I just need to focus on how to embed the configuration designer functionality I need into the Visual Studio artifact.
. NET the perfect support for databases, file IO, and communication protocols has saved me a lot of programming. With the libraries I've accumulated before, it's been a fast progress.
A new problem is that conventional configuration software has an important function: Configuration variables. Also, for example, the 1th motor, 2nd motor running at the same time display green, should be expressed as: Motor1.running & motor2.running.
This requires my designer to support regular arithmetic, logical operations, which support complex expressions.
Microsoft's expression tree Expressiontree provides a perfect encapsulation of expressions. I can easily use it to implement my grammar.
My hobby is to study programmatic trading. I chose WinForm, and I used only hundreds of lines of code to implement a candlestick chart that can be scaled, stretched, moved, and added to a custom indicator.
Why choose WinForm instead of WPF? Because the WPF advantage is the interface and code separation, using the blend tool to manually draw, more redundancy. But doing a candlestick chart requires reading large amounts of data, generating programs, and drawing more efficiently using the GDI + API provided by WinForm.
I used the configuration project's expression parser to improve and quickly made stock alerts. Other places are also a lot of reference, drawing on the gateway, configuration designer out of the box code and ideas.
Now the trading system, including graphical interface, custom indicators, various function support, strategy generator, backtesting, real disk operation, the total code is not much, very concise. Thank you for that. NET powerful architectural capabilities and class libraries.
Many people say Python is preferred for programmatic trading, such as Python's scripting capabilities and various charting capabilities. But my big C # strong-type programming ability, architectural ability, a variety of syntactic sugars, writing strategy is not comparable to Python. As for custom charts, don't forget to import or embed Excel.
Once you're used to. NET, you have your own library of libraries, and the long-term training of architectural ideas, abstraction capabilities. You can do most of the things you can imagine on the desktop, making the program a good helper for you.
Some people say that. NET can't big data, can't play alpha dog or anything. Come on. These things are not personal, small team play, is the country or large groups to use. Don't think much of it.
As a. NET hardcore fans, I just feel lucky. Because. NET is good for me and my industry. The cross-Strait ape voice cannot live, the canoe has been million mountains.
GitHub Address: Https://github.com/GavinYellow/SharpSCADA. My first open source project. In order to promote it, I this national day to spare some time to knock on the keyboard. You are welcome to make more valuable comments and suggestions.
. NET 10-year review