1. 程式人生 > >Java和.NET(C#)的開發用到的技術對比總結

Java和.NET(C#)的開發用到的技術對比總結

平臺 分發 非關系型 宇宙 marker core block 微軟企業庫 session

前言

聲明:我指的是一般的Java和.NET(C#)的後臺開發用到的技術總結

最近一直在應聘ing,樓主的項目還是.NET(C#)項目居多,Java項目相對少,在這也吐槽下,招.NET(C#)的公司實在是少的可憐,其實非常喜歡C#語法和VS宇宙第一編輯器的,雖然.NET Core口碑不錯,但無奈於生態不如Java,所以發展的還是太慢了,介於此,秋招樓主投的還是Java技術後臺的崗位居多,但遇到招.NET(C#)的公司還是心裏一動,肯定要投一下的。

好了不水了,下面我從“大局觀”的角度來比較一下一般的Java和.NET(C#)的項目後臺用到的技術。以便在面試的時候可以系統的和面試官介(chui)紹(niu)下。

當然,由於是應對秋招,這裏所說到的技術是非常初級,簡單的。大牛級別的繞過忽略此文haha。

總結

開發

1. 視圖層技術

HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker

2. 持久層技術

Java

Hibernate,Ibatis,Mybatis,DBUtils,SimpleJDBC等

.NET(C#)

EF、Dapper、NHibernate(很多還有好多國產的,比如SqlSugar 、Chloe )

詳見:https://www.cnblogs.com/jackytang/p/9111980.html

3. web框架

Java

Spring MVC、Spring Boot 、Spring Cloud、Struts等

.NET(C#)

WebForm、ASP.NET MVC(主流)、ASP.NET Core(跨平臺)

4. 項目構建工具

Java

Maven

.NET(C#)

Nuget

5. 日誌框架

Java

JDKLog、Log4J、LogBack、SLF4J、SLF4J

詳見此文:https://www.cnblogs.com/baizhanshi/p/7911123.html

.NET(C#)

Log4Net.dll:輕量級的免費開源.NET日誌記錄框架。

Enterprise Library Log Application Black:微軟企業庫日誌記錄。

Elmah:實現最流行的ASP.NET應用異常日誌記錄框架。

NLog:是一個簡單靈活的日誌記錄類庫,性能比Log4Net高,使用和維護難度低。

6. 版本控制 Git

數據庫技術

1. SQL語句

2. 參數調優

操作系統

1. 熟練掌握一種Linux系統,原理,Shell命令

2. Windows操作系統基礎必須了解下。

服務器技術

Java

1. 熟練使用並理解一個Web應用服務器技術的原理(Tomcat)

2. 熟練使用並理解一個Web服務器技術的原理(Nginx)

.NET(C#)

1. 熟練使用並理解一個Web應用服務器技術的原理(IIS+.NET Framework(開源之前))

2. 熟練使用並理解一個Web服務器技術的原理(IIS、Kestrel)

註1:關於Web應用服務器和Web服務器技術可以讀讀這兩篇文章:

http://www.cnblogs.com/dudu/p/dotnet-application-server.html

https://www.cnblogs.com/vipyoumay/archive/2017/08/31/7455431.html

註2:在這裏我還要羅嗦幾句,.Net 開源之後和之前還是有很大區別的,不懂。NET 技術的JAVA 同學想要轉.NET 的還是直接轉.NET Core吧(haha ,有麽?)。

比如:

.NET的Web服務器:包括 IIS Express、Internet Information Services (IIS)、外部主機或自定義 Web 服務器

.NET Core的Web服務器:與ASP.NET不同,ASP.netCore使用的是自托管web服務器Kestrel,所以IIS目前對於ASP.netCore只充當轉發請求的代理而已,反向代理到ASP.netCore就需要iis之前沒有的模塊稱為:AspNetCoreModule,此模塊包含在ANCM(官網說明:ANCM)中,下載地址:.NET Core Windows Server Hosting

緩存技術

1. 熟練使用並理解一種緩存技術(Redis, Memcache,EhCache)

非關系型數據庫

2. 熟練使用並理解一種非關系型數據庫(MongoDB)

.NET(C#)專用:

Microsoft Velocity:微軟自家分布式緩存服務框架。

EnyimMemcached:訪問Memcached最優秀的.NET客戶端,集成不錯的分布式均衡算法。

中間件技術

Java

1. JMS:activeMQ和kafka

2. RPC: Dubbo

.NET Core

內在的中間件就有挺多了。

Authentication 提供身份驗證支持

CORS 配置跨域資源共享

Response Caching 提供緩存響應支持

Response Compression 提供響應壓縮支持

Routing 定義和約束請求路由

Session 提供用戶會話管理

Static Files 為靜態文件和目錄瀏覽提供服務提供支持

URL Rewriting Middleware 用於重寫 Url,並將請求重定向的支持

設計模式

1. 了解並能夠使用幾種最主要的設計模式,這個是基礎,必學

網絡

1. 熟悉http,TCP協議等網絡基礎,必學

虛擬機

Java

Java虛擬機:

1. 熟悉jvm運行原理,內存分布

2. jvm參數調優

.NET(C#)


CLR

公共語言運行時。

確切含義取決於上下文,但它通常指 .NET Framework 的運行時。 CLR 處理內存分配和管理。 CLR 也是一個虛擬機,不僅可執行應用,還可使用 JIT 編譯器快速生成和編譯代碼。 當前的 Microsoft CLR 實現僅限 Windows。

CoreCLR

.NET Core 公共語言運行時。

此 CLR 是采用與 CLR 相同的基本代碼生成的。 最初,CoreCLR 是 Silverlight 的運行時,專為在多個平臺(特別是 Windows 和 OS X)上運行而開發。CoreCLR 現屬於 .NET Core 並表示 CLR 的簡化版本。 它仍是跨平臺運行時,現包括針對許多 Linux 分發的支持。 CoreCLR 也是具有 JIT 和代碼執行功能的虛擬機。

呃,好吧,就這麽多了,希望博友們多多指點。

最後感嘆一句,秋招啊秋招,怎麽這麽難。

Java和.NET(C#)的開發用到的技術對比總結