Exterior: I saw Richard GRIMES and many blogs on the 9CBS and Bo Hall a few days ago, and Microsoft's C # product manager, Microsoft China's post on .NET future development, boiling Yang is really lively, actually "again. Net pure sexuality Myth (Chinese) "This article has a good explanation of the main point of view. Microsoft does not necessarily need to use .NET to develop specific products (although he has already done a lot now) to prove that he is better than Borland does not need to develop an ERP in Delphi to prove that its own product can be the same as the exhibition. , Yes, there are many successful J2EE companies application cases, but .NET depends on relatively relatively relatively, and this is what we need to work hard, and our chance! Since the transfer to the .NET platform, the company has been made to the company. Net respect and trust are increasing, and the Microsoft's .NET's strategic investment has directionally determined, some people say Microsoft It is a matter of viewing for something, it will go to the whole family, although it is not original, but it can always live, and you will win blue.
I accidentally saw the article "Mono Only Is Mono, Not .Net Never (Chinese)", it is very uneasy, it seems to be smashed with my .NET application cross-platform. The main point of view in the text is roughly summarized as follows: 1, Microsoft is a big bad guy; 2, Microsoft is not willing .Net application cross-platform; 3, Mono is always a poor follower.
I also published different opinions on the above views: 1. As a business company, the maximum benefit is their nature. Let's take a look at the international software manufacturer, and it seems that noble is much better than anyone. Frankly, if you can make such a company, it is really a fortunate. 2, .NET and J2EE positioning is indeed different ("Re-theory .NET Pure Myth (Chinese)" One of the comparison of CLR / JVM in the CLR / JVM section), but the nature of the problem is not Microsoft We will not cross the platform, no matter what his will, from .NET as a standard day, the choice of power is falling in our hands! Mono is another implementation of the .NET standard, just let us have a choice, and this option is the best way we implement .NET application cross-platform. Yes, why do we develop our cross-platform applications based on .NET? Because it is good, it is one of the best corporate frames I think. 3, look at Mono announced the development and release mileage, you will not think that it is just following it, it also provides a development set based on Linux local characteristics. For ordinary enterprise applications, it is provided to us to let us realize the dream of "freedom", what we have to do is achieved. A wide range, we will follow the beginning, the difference is that you follow Sun, he followed Borland, I follow Microsoft / Novell (Mono) ...
Since system.enterprise, system.drawing, system.Windows.Forms et al, the classes are primarily based on the encapsulation of a hosted code of native API or COM, which means that Mono is very difficult to reach such a job. But this does not mean that this is an impossible thing, the greatness of the standard is here, it is fair to everyone. Although it is not implemented at version 1.0, as explained in the Mono website, they may be implemented in successive versions, and there will be other companies, and organize some modules that come in and implement them, a "autocratic monopoly" company The creation of the criteria have flourished in the open source community, which is what interesting is it! Yes, Mono is relatively Microsoft, it is like a first thing that is just participating in this game, we should encourage and admire it for its current achievements! In fact, Microsoft is only submitted a subset of the CLI. Some implementations in .NET Framework are not fully complied with the standard. Mono also has a lot of its own extensions, such as GTK #, etc. If you want your .NET application to be smooth In these two platforms, it is necessary to clearly understand these subtle differences, and the most cautious practice is not to use those specific to platform-related extensions. This is actually normal, so it may have some own extensions than the different application server suppliers complying with the J2EE standard. If your J2EE app uses the extension characteristics of a specific server product, then your J2EE application Bottlenecks may be encountered in porting to other servers. Microsoft is a .NET standard american but is also an excellent product supplier that implements .NET standard, its product is achieved and complete, so that everyone can easily forget .Net is actually a standard. As the designer of the application product, I don't care when I use System.Web.mail.smtpmail to send an email, the bottom layer is called CDO COM service or other API in Mono, I can complete system.web.mail. The features defined in the SMTPMail interface can be, because I want to guarantee that this feature can run smoothly in these two platforms in my application. As for other things, it is not my duties.
The .NET Framework library itself is not a "pure .NET" because it uses each opportunity to make full use of the basic platform primitive. Therefore, Mono's greatness is that it must be converted or abstract to the underlying service call, and I always have this young open source project.
In order not to run too far, I think .NET application requires the technical items that need cross-platform attention to the following:
Carefully plan and design the data access layer Use the interface design principles to reduce the coupling degree between system modules, such as using the plug-in mechanism to implement the data access layer to support the runtime transfer of multi-database products. Carefully use specific versions or features with platform-related features If you must use classes under the System.Enterprise namespace, you can provide data access function normally after the data access layer is out of the module. Of course, it will also lose the function of transaction support against the database accordingly. Do not use the platform call service (P / Invoke) to call the Windows API or COM / COM components. For future considerations about .NET Framework 2.0 more and more news, introduce these new components, class libraries are also more and more, I can't help but want to add these new features to their own applications. If you are trying to let your app service continue to cross the platform, please carefully assess the impact of your system across platform transplant before implementing those impulses. In the middle of the enterprise application, the existing technology can basically meet our requirements, and it is not like the new features of the cool, because it never appears, because it does not appear, and it is unknown to make a background calculation. Multi-level architecture design This old topic is not talking about, mainly to separate interface performance layers and business logic layers, which is to ensure that the performance layer can be as simple as possible in cross-platform transplantation. In fact, I found a big workload of post-maintenance is the interface changes made in response to the personalization needs of customers, so that the simplicity and independence of this part will reduce this nightmare. The above row is listed so many restrictions, but don't worry too much. For an ordinary enterprise application, it will not break through those limitations. Think about it can take your .NET Web Services and your intermediate layer with the help of Mono ( ADO.NET) Components run in Linux, the background is connected to the UNIX Oracle database, that is how cool it is. Anyway, you finally be easy to say to your customers, yes, our app is fully running on Linux, and we never picky database products. As for problems such as application cost, running efficiency, then throw a salesman to deal with it, we don't care about the topics full of disputes.
Others: Now, it is more and more designed to be a choice. In the middle of different programs, the choice is also a process of constantly finding the reason to persuade yourself, why do you design. Because we can always find several different programs or models, we have weigh these patterns, the program has become a process of continuously resolving, and the program itself is not right or wrong, except for more thinking I think the design of the .NET Framework is a very good way, this is fast than those in the stack of design patterns, ok, of course, if you agree. Net framework is a good design frame. You can also refer to its implementation methods on the implementation details. You can download a tool (REFLEctor) that reflects .NET code, you can easily see the .NET Framework C # / VB with it .NET Framework. .NET / IL source code. Of course, download MONO's source code is also good!
There are some messy articles, forgive me. :-(