大牛們經常說的中間件

什么是中間件?估計很多程序猿都不太清楚中間件,那我今天就來說下中間件是什么,怎么來的。

中間件的起源

2.1 中間件發展的歷史

事情從1946年說起,世界上第一臺電子計算機埃尼阿克誕生,人類進入信息時代。1955年,約翰巴克斯發明了最早的程序語言Fortran,現代意義上的軟件就誕生了。

1964年,IBM發布OS/360操作系統,軟件與硬件分離,同時,軟件成為一個獨立的產業正式登上產業界的舞臺。中間件就是軟件產業不斷發展過程中自然產生的。

90年代,文頓·瑟夫這位互聯網之父的發明成為改變IT業的重大革命性創新。互聯網促使分布式系統和網絡應用的誕生,中間件就是伴隨網絡技術的產生、發展而興起的,可以說沒有網絡就沒有現代意義上的中間件。因為,網絡環境需要解決異構分布網絡環境下軟件系統的通信、互操作、協同、事務、安全等共性問題,提高異構分布網絡環境下軟件系統的互操作性、可移植性、適應性、可靠性等問題。

1968年IBM發布CICS交易事務控制系統,使得應用軟件與系統服務分離,這是中間件技術萌芽的標志,因為CICS還不是分布式環境的產物,因此我們往往還不將CICS作為正式的中間件系統。

一般來說,我們將1990年誕生于ATT公司的BELL實驗室的Tuxedo系統(后來被NOVELL從ATT公司隨著UNIX系統一起買走,后來又賣給了BEA公司,現在歸于ORACLE公司旗下了)作為中間件的誕生標志。Tuxedo解決了分布式交易事務控制問題,中間件開始成為網絡應用的基礎設施,中間件正式成型,這是最早的交易中間件。

1994年IBM發布消息隊列服務MQ系列產品,解決分布式系統異步、可靠、傳輸的通訊服務問題,消息中間件誕生。

1995年,JAVA之父James Gosling發明JAVA語言,JAVA提供了跨平臺的通用的網絡應用服務,成為今天中間件的核心技術。JAVA是第一個天生的網絡應用平臺,特別是J2EE發布以來,JAVA從一個編程語言,演變為網絡應用架構,成為應用服務平臺的事實標準。應用服務器中間件,成為中間件技術的集大成者,也成為事實上的中間件的核心。

2001年,微軟發布.NET,中間件演變為.NET和JAVA兩大技術陣營。但由于.NET還不是一個完全開放的技術體系,只有一個玩家,因此,雖然.NET也是一種中間件,但由于IBM/ORACLE/SUN/SAP等巨頭都無一例外成了JAVA陣營的支持者,因此,我們習慣上提到中間件時,往往不包括.NET中間件體系。

以上談的是歷史,但透過歷史事實背后,為什么會出現中間件,這其中的本質因素是什么?

2.2 中間件發展的驅動力

中間件出現的驅動力主要來自軟件研發過程碰到的種種問題。從軟件出現最早是用于科學計算,然后是計算機輔助設計、輔助制造等等工業應用。在企業管理領域大規模應用后,業務需求不斷的變化、系統不斷增加、流程更復雜、系統越來越不堪重負,出現了需求交付方面的重大挑戰,以至于人們用軟件危機來描述軟件工業所面臨的困境。

總結起來,軟件工業面臨的主要問題是四個方面:質量問題、效率問題、互操作問題、靈活應變問題。這些問題今天依然困擾著這個行業。

造成這個局面的原因是異構性和標準規范的滯后。

  • 屏蔽異構性

異構性表現在計算機的軟硬件之間的異構性,包括硬件(CPU和指令集、硬件結構、驅動程序等),操作系統(不同操作系統的API和開發環境)、數據庫(不同的存儲和訪問格式)等等。長期以來,高級語言依賴于特定的編譯器和操作系統API來編程,而他們是不兼容的,因此軟件必須依賴于開發和運行的環境。

造成異構的原因源自市場競爭、技術升級以及保護投資等因素。希望屏蔽異構平臺的差異性問題是促成中間件發展的驅動力之一。

  • 實現互操作

因為異構性,產生的結果是軟件依賴于計算環境,使得各種不同軟件之間在不同平臺之間不能移植,或者移植非常困難。而且,因為網絡協議和通信機制的不同,這些系統之間還不能有效地相互集成。

造成互操作性不好的原因,主要是標準的滯后。解決軟件之間的互操作性問題也是促成中間件發展的驅動力之一。

  • 共性凝練和復用

軟件應用領域越來越多,相同領域的應用系統之間許多基礎功能和結構是有相似性的,每次開發系統都從零開始絕對不是一種好的方法,也是對質量和效率的很大的傷害。

盡可能多地凝練共性并復用以提高軟件開發效率和質量,通過中間件通過提供簡單、一致、集成的開發和運行環境,簡化分布式系統的設計、編程和管理,這也是中間件發展的重要驅動力。

在長期的探索過程中,解決軟件的四個問題的辦法總結起來兩個方面:工程方法、平臺與技術。

工程方法就是用工業工程、系統工程的理論、方法和體系來解決軟件研發過程中的管理問題,包括團隊管理、項目管理、質量控制等等,這就是軟件工程。除了軟件工程方法之外,我們發明了更多的架構規劃、設計和實施的方法,不斷累積領域的知識與經驗等等。

更好的技術手段,包括更好的程序設計語言、更好的平臺和軟件開發技術,如面向對象、組件開發、面向服務等等。而這方面,在技術上逐漸發展的成果大部分都凝聚在今天的中間件平臺之中。

而這些更好的技術手段,從本質上是通過復用、松耦合、互操作(標準)等機制來提高軟件質量、加快軟件研發效率、使研發出來的產品能夠相互集成并靈活適應變化。
這些因素逐漸促成了中間件軟件的形成和發展。

3. 中間件的概念

講了這么多,究竟什么是中間件,也就是中間件的定義是什么?

針對這個問題,應該說還沒有一個標準的定義,或者說還沒有完全取得學術界和產業界的共識。

顧名思義,中間件就是處于中間的軟件。但這種不是從功能,或者特性來定義的概念,而是用位置來定義的名字,就容易被不同的人從不同角度賦予其不同的含義。

IDC曾經給中間件下的定義是中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。

我國學術界一般認可的定義是中間件是指網絡環境下處于操作系統、數據庫等系統軟件和應用軟件之間的一種起連接作用的分布式軟件,主要解決異構網絡環境下分布式應用軟件的互連與互操作問題,提供標準接口、協議,屏蔽實現細節,提高應用系統易移植性(北京大學梅宏)。

中科院軟件所研究員仲萃豪形象地把中間件定義為平臺+通信。這個定義限定了只有用于分布式系統中的此類軟件才能被稱為中間件,同時此定義還可以把中間件與支撐軟件和實用軟件區分開來。

中間件處于操作系統軟件與用戶的應用軟件的中間。中間件在操作系統、網絡和數據庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發的環境,幫助用戶靈活、高效地開發和集成復雜的應用軟件。形象地說就是上下之間的中間。

此外,中間件主要為網絡分布式計算環境提供通信服務、交換服務、語義互操作服務等系統之間的協同集成服務,解決系統之間的互連互通問題。形象地說就是所謂左右之間的中間。

要深入理解什么是中間件,形式化的定義固然重要,我們還得從概念本身去深入理解其核心特征才是最重要的。要理解一個概念,從內涵和外延兩個方面去描述是哲學上非常重要的一套方法體系。

3.1 中間件的特征(內涵)

總結分析,中間件有幾個非常重要的特征是必須具備的:

  • 平臺化

所謂平臺就是能夠獨立運行并自主存在,為其所支撐的上層系統和應用提供運行所依賴的環境。顯然,不是所有的系統或者應用都可以稱之為平臺的。中間件是一個平臺,因此中間件是必須獨立存在,是運行時刻的系統軟件,它為上層的網絡應用系統提供一個運行環境,并通過標準的接口和API來隔離其支撐的系統,實現其獨立性,也就是平臺性。

因此,目前許多的開發語言、組件庫和各種報表設計之類的軟件,很難滿足平臺性,將這類軟件叫中間件,是很不合適的。例如,JAVA是一種語言,這種語言的開發工具和開發框架,如Eclipse、JBuilder、Struts,Hibernate等等就不能稱為中間件,充其量叫中間件開發工具,而不能叫中間件本身,就如同各種建筑工程設備和機械,如吊臂、攪拌機等不能叫建筑,而只能成為建筑工具一樣。而J2EE應用服務器提供JAVA應用的運行環境,就是經典的中間件。

  • 應用支撐

中間件的最終目的是解決上層應用系統的問題,而且也是軟件技術發展到今天對應用軟件提供最完善徹底的解決方案。

高級程序設計語言的發明,使得軟件開發變成一個獨立的科學和技術體系,而操作系統平臺的出現,使得應用軟件通過標準的API接口,實現了軟件與硬件的分離。

現代面向服務的中間件在軟件的模型、結構、互操作以及開發方法等四個方面提供了更強的應用支撐能力:

模型:構件模型彈性粒度化,即通過抽象層度更高的構件模型,實現具備更高結構獨立性、內容自包含性和業務完整性的可復用構件,即服務。并且在細粒度服務基礎上,提供了更粗粒度的服務封裝方式,即業務層面的封裝,形成業務組件,就可以實現從組件模型到業務模型的全生命周期企業建模的能力。

結構:結構松散化,即,將完整分離服務描述和服務功能實現以及服務的使用者和提供者,從而避免分布式應用系統構建和集成時常見的技術、組織、時間等不良約束。

互操作:交互過程標準化,即,將與互操作相關的內容進行標準化定義,如服務封裝、描述、發布、發現、調用等契約,通信協議以及數據交換格式等等。最終實現訪問互操作、連接互操作和語義互操作。

開發集成方法:應用系統的構建方式由代碼編寫轉為主要通過服務間的快捷組合及編排,完成更為復雜的業務邏輯的按需提供和改善,從而大大簡化和加速應用系統的搭建及重構過程。

而要最終解決軟件的質量問題、效率問題、互操作問題、靈活應變問題這四大問題,需要在軟件技術的內在結構(Structure)、架構(Architecture)層面進行思考。

解決這些問題,技術的本質是復用、松耦合、互操作(標準)等軟件技術的內在機制。這也是中間件技術和產品的本質特征。

  • 軟件復用

軟件復用,即軟件的重用,也叫再用,是指同一事物不作修改或稍加改動就多次重復使用。從軟件復用技術的發展來看,就是不斷提升抽象級別,擴大復用范圍。最早的復用技術是子程序,人們發明子程序,就可以在不同系統之間進行復用了。但是,子程序是最原始的復用,因為這種復用范圍是一個可執行程序內復用,靜態開發期復用,如果子程序修改,意味著所有調用這個子程序的程序必須重新編譯、測試和發布。

復用對象復用范圍

| 復用對象 | 復用范圍 |
| 子程序 | 一個可執行程序內復用,靜態開發期 復用 |
| 組件(DLL,Com等) | 系統內復用,動態運行期復用 |
| 企業對象組件(Com+,.NET,EJB等) | 企業網絡內復用,不同系統之間復用 |
| 服務 (如WebService,SCA/SDO) | 不同企業之間,全球復用,動態可配置 |

為了解決這個問題,發明了組件(或者叫控件),如MS操作系統下的DLL組件。組件將復用提升了一個層次,因為組件可以在一個系統內復用(同一種操作系統),而且是動態、運行期復用。這樣組件可以單獨發展,組件與組件調用者之間的耦合度降低。

為解決分布式網絡計算之間的組件復用,人們發明了企業對象組件,如(COM+, .NET, EJB等),或者叫分布式組件。通過遠程對象代理,來實現企業網絡內復用,不同系統之間復用。

傳統中間件的核心是組件對象的管理。但分布式組件也是嚴重依賴其受控環境,由于構件實現和運行支撐技術之間存在著較大的異構性,不同技術設計和實現的構件之間無法直接組裝式復用。

而現代中間件的發展重要趨勢就是以服務為核心,如WebService, SCA/SDO等。通過服務,或者服務組件來實現更高層次的復用、解耦和互操作,即SOA架構中間件。

因為服務是通過標準封裝,服務組件之間的組裝、編排和重組,來實現服務的復用。而且這種復用,可以在不同企業之間,全球復用,達到復用的最高級別,并且是動態可配置的復用。

  • 耦合關系

基于SOA架構的中間件,在松耦合解耦過程也發展到了最后的境界。傳統軟件將軟件之中核心三部分——網絡連接、數據轉換、業務邏輯全部耦合在一個整體之中,形成鐵板一塊的軟件,牽一發而動全身,軟件就難以適應變化。分布式對象技術將“連接邏輯”進行分離,消息中間件將“連接邏輯”進行異步處理,增加了更大的靈活性。消息代理和一些分布式對象中間件將數據轉換也進行了分離。而SOA架構,通過服務的封裝,實現了業務邏輯與網絡連接、數據轉換等進行完全的解耦。

image

軟件技術的不斷解耦的過程

  • 互操作性

傳統軟件互操作技術也存在問題。互聯網前所未有的開放性意味著各節點可采用不同的中間件技術,對技術細節進行了私有化的約束,構件模型和架構沒有統一標準,從而導致中間件平臺自身在構件描述、發布、發現、調用、互操作協議及數據傳輸等方面呈現出巨大的異構性。各種不良技術約束的結果是軟件系統跨互聯網進行交互變得困難重重,最終導致了跨企業/部門的業務集成和重組難以靈活快速的進行。

在軟件的互操作方面,傳統中間件只是實現了訪問互操作,即通過標準化的API實現了同類系統之間的調用互操作,而連接互操作還是依賴于特定的訪問協議,如JAVA使用RMI,CORBA使用IIOP等。而SOA通過標準的、支持Internet、與操作系統無關的SOAP協議實現了連接互操作。而且,服務的封裝是采用XML協議,具有自解析和自定義的特性,這樣,基于SOA的中間件還可以實現語義互操作。

image

基于服務的中間件

總之,服務化體現的是中間件在完整業務復用、靈活業務組織方面的發展趨勢,其核心目標是提升IT基礎設施的業務敏捷性。因此,中間件將成為SOA的主要實現平臺。

3.2 中間件的分類(外延)

中間件所包括的范圍十分廣泛,針對不同的應用需求涌現出多種各具特色的中間件產品。從功能性外延來看,中間件包括交易中間件、消息中間件、集成中間件等各種功能性的中間件技術和產品。

現在,中間件已經成為網絡應用系統開發、集成、部署、運行和管理必不可少的工具。由于中間件技術涉及網絡應用的各個層面,涵蓋從基礎通訊、數據訪問到應用集成等眾多的環節,因此,中間件技術呈現出多樣化的發展特點。

根據中間件在軟件支撐和架構的定位來看,基本上可以分為三大類產品:應用服務類中間件、應用集成類中間件、業務架構類中間件。

  • 應用服務類中間件

為應用系統提供一個綜合的計算環境和支撐平臺,包括對象請求代理(ORB)中間件、事務監控交易中間件、JAVA應用服務器中間件等。

隨著對象技術與分布式計算技術的發展,兩者相互結合形成了分布對象計算,并發展為當今軟件技術的主流方向。1990年底,對象管理組織OMG首次推出對象管理結構OMA(Object Management Architecture),對象請求代理(Object Request Broker)是這個模型的核心組件。它的作用在于提供一個通信框架,透明地在異構的分布計算環境中傳遞對象請求。CORBA規范包括了ORB的所有標準接口,是對象請求代理的典型代表。

隨著分布計算技術的發展,分布應用系統對大規模的事務處理提出了需求,比如商業活動中大量的關鍵事務處理。事務處理監控界于Client和Server之間,進行事務管理與協調、負載平衡、失敗恢復等,以提高系統的整體性能。它可以被看作是事務處理應用程序的操作系統。這類被稱為交易中間件,適用于聯機交易處理系統,主要功能是管理分布于不同計算機上的數據的一致性,保障系統處理能力的效率與均衡負載。交易中間件所遵循的主要標準是X/open DTP模型,典型的產品是Tuxedo。

JAVA從2.0企業版之后,不僅僅是一種編程語言,而且演變為一個完整的計算環境和企業架構。為JAVA應用提供組件容器,用來構造Internet應用和其它分布式構件應用,是企業實施電子商務的基礎設施,這種應用服務器中間件發展到為企業應用提供數據訪問、部署、遠程對象調用、消息通信、安全服務、監控服務、集群服務等強化應用支撐的服務。使得JAVA應用服務器成為了事實上的應用服務器工業標準。由于它的開放性,使得交易中間件和對象請求代理逐漸融合到應用服務器之中。典型的應用服務器產品包括IBM Websphere Application Server、Oracle Weblogic Application Server和金蝶Apusic Application Server等。

  • 應用集成類中間件

應用集成類中間件是提供各種不同網絡應用系統之間的消息通信、服務集成和數據集成的功能,包括常見的消息中間件、企業集成EAI、企業服務總線以及相配套的適配器等。

消息中間件指的是利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統的集成。通過提供消息傳遞和消息排隊模型,它可在分布環境下擴展進程間的通信,并支持多通訊協議、語言、應用程序、硬件和軟件平臺,實現應用系統之間的可靠異步消息通信,能夠保障數據在復雜的網絡中高效、穩定、安全、可靠的傳輸,并確保傳輸的數據不錯、不重、不漏、不丟。目前流行的消息中間件產品有IBM的MQSeries、 BEA的MessageQ、金蝶Apusic MQ等。

企業應用整合,僅指企業內部不同應用系統之間的互連,以期通過應用整合實現數據在多個系統之間的同步和共享。這種類似集線器的架構模式是在基于消息的基礎上,引入了前置機-服務器的概念,使用一種集線器/插頭(hub-and-spoke)的架構,將消息路由信息的管理和維護從前置機遷移到了服務器上,巧妙的把集成邏輯和業務邏輯分離開來,大大增加了系統彈性。由于前置機和服務器之間不再直接通信,每個前置機只通過消息和服務器之間通信,將復雜的網狀結構變成了簡單的星型結構。典型的企業應用集成EAI的產品包括Tibico和Informatica等公司產品。

隨著SOA思想和技術的逐漸成熟,EAI發展到透過業務服務的概念來提供IT的各項基本應用功能,讓這些服務可以自由地被排列組合、融會貫通,以便在未來能隨時彈性配合新的需求而調整。Web Services是SOA的一種具體實現方式,SOA的世界是由服務提供者(Service Provider)、服務請求者(Service Requester) 以及服務代理者(Service Broker)所組成,目標是將所有具備價值的IT資源,不論是舊的或新的,通通都能夠透過Web Services的包裝,成為隨取即用的IT資產,并可將各種服務快速匯整,開發出組合式應用,達到整合即開發的目的。SOA的架構只是實現和解決了服務模塊間調用的互操作問題,為了更好的服務于企業應用,引入了企業服務總線的應用架構(Enterprise Service Bus,ESB)。這一構架是基于消息通信、智能路由、數據轉換等技術實現的。ESB提供了一個基于標準的松散應用耦合模式,這就是企業服務總線中間件,是一種綜合的企業集成中間件。典型的ESB產品包括IBM Websphere ESB、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等。

  • 業務架構類中間件

作為共性的凝練,中間件不僅要從底層的技術入手,將共性技術的特征抽象進中間層,還要更多地把目光投向到業務層面上來,根據業務的需要,驅動自身能力的不斷演進,即,不斷出現的新的業務需要驅動了應用模式和信息系統能力的不斷演進,進而要求中間件不斷地凝練更多的業務共性,提供針對性支撐機制。近年來,這一需求趨勢愈發明顯,越來越多的業務和應用模式被不斷地抽象進入中間件的層次,如業務流程流、業務模型、業務規則、交互應用等等,其結果是中間件凝練的共性功能越來越多,中間件的業務化和領域化的趨勢非常明顯。

業務架構類中間件包括業務流程、業務管理和業務交互等幾個業務領域的中間件。

業務流程是處理業務模型的非常重要方法。管理流程與各職能部門和業務單元有密切關系,須藉各部門間的緊密協調,以達到企業運營和管理功能的目標。在業務流程支持方面,從早期的WfMC定義的工作流,到基于服務的業務流程規范BPEL,由業務流程的支撐,逐漸形成了完整的業務流程架構模型,包括流程建模、流程引擎、流程執行、流程監控和流程分析等。有名的業務流程中間件包括基于工作流的IBM Lotus Workflow,基于BPEL的IBM Webshpere Process Server以及同時支持工作流和BPEL的金蝶Apusic BPM等。

業務管理就是對業務對象的建模和業務規則的定義、運行和監控的中間件平臺。策略管理員和開發人員將業務邏輯捕獲為業務規則。使用規則管理器可以將規則輕松地嵌入 Web、現有應用程序和后臺辦公應用程序。常見的業務管理中間件包括IBM Websphere ILOG 業務規則管理系統,金蝶BOS等。

業務交互的中間件平臺提供組織的合作伙伴、員工和客戶通過WEB和移動設備等交互工具,實現基于角色、上下文、操作、位置、偏好和團隊協作需求的個性化的用戶體驗。這種門戶服務器軟件基于標準Portlet組合的應用程序訪問框架,實現用戶集成和交互集成,構建靈活、基于 SOA 的應用架構。典型的門戶中間件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。

4. 中間件的未來

中間件是互聯網時代的IT基礎設施,提供業務的靈活性,消除信息孤島,提高IT的研發和運營效率。作為網絡計算的核心基礎設施,中間件正在呈現出服務化、自治化、業務化、一體化等諸多新的發展趨勢,中間件進入2.0時代,將極大提升互聯網統一計算平臺的敏、睿、融、和能力。

  • 中間件將變寬變厚

以互聯網為核心的多網融合產生了豐富多樣的新型網絡應用模式,作為主流的應用運行支撐環境,中間件無處不在,越來越多的應用模式被抽象到中間件層,中間件將變寬變厚。

  • 中間件將面向服務、易于集成

隨著SOA技術逐漸成為主流,以及異構系統的集成問題日益嚴峻,中間件將向面向服務、易于集成的方向發展。

  • 中間件將向一體化的方向發展

中間件產品的種類日趨多樣(如交易中間件、消息中間件、應用服務器、集成中間件、業務中間件等),但其技術架構將向一體化的方向發展,主要包括:

統一內核,易于演化:各大廠商的中間件產品將構建在統一內核之上,使其易于平臺演化。

統一編程模型,易于開發:不同中間件產品提供了不同的編程模型,這些編程模型將趨向統一,從而達到易于開發的目的。

統一管理模型,易于系統維護:不同中間件產品提供了不同的管理工具與管理手段,這些管理工具與手段將趨向統一,使其易于管理,降低運維成本。

  • 中間件產品將支持云計算,易于交付

中間件產品將成為云計算的支撐平臺,使應用易于交付。

  • 后端平臺深度融合

一個大膽的設想是:未來五年,瀏覽器將統一前端,而后端平臺(中間件、操作系統、 數據庫)走向深度融合。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容