好菜都得花功夫做

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  平常下班時間太緊張,炒菜從洗菜到上桌也就十幾分鐘,味道自然就一般般了。到了周末,終于能花點時間做“大餐”了。這“大餐”之所以好吃,我覺得主要原因是食材入味深,火候勻,有時還需要經過多種烹調方法。例如這紅燒豬蹄,就先得把豬蹄剁塊兒;鍋內燒好了開水,把豬蹄放進去焯。焯過的豬蹄要及時放在涼水中泡十分鐘,這樣做出來的豬蹄雖然軟但又有“筋道”的口感。然后炒鍋里放一點點油,將冰糖熬化,放入豬蹄上色。將上色的豬蹄放入高壓鍋,放入醬油,料酒,蔥姜蒜大料。壓30分鐘。而后將豬蹄連湯取出,放入炒鍋,大火收汁裝盤。(如果喜歡清甜的味道還可以在高壓鍋入鍋的時候放一顆丁香)

  我這是不是發錯地方了呢,大家說我是干嘛的。實際上我是實打實在代碼里勞作的老農(論年頭不少了,還好年紀尚輕)。工作中的一個項目,已經進入了第三個年頭,發布了兩次版本,積累了很多教訓。但是最近這段時間卻非常沒有干勁兒。原來我以為我決不會淪為拼命追逐技術的變化最后筋疲力盡退出歷史舞臺的人,但是現在卻發現這種趨勢越來越明顯。這個月終于看到了Visual Studio 2012 RC的發布,但是卻沒有足夠的動力去下載安裝爭當“小白鼠”。

  但是我終究還是下載了,果然我看到了很多很多的改進,不論從界面響應還是Framework的變化。例如:MVC已經升級到了4,WCF 的 REST 已經成為了 MVC Web API,Metro Style 支持,EF 的升級,等等……各類博客又出現了MVC4+EF組合,Web API構造REST服務,等等的各類文章。我沒精打采的看著,突然覺得,這種思路進入的是一種惡性循環狀態。以 Web 應用為例,從 ASP.NET -> ASP.NET MVC,這實際上僅僅是更有利于界面與邏輯分離,但是這進步犯得著你重新書寫你的后臺嗎?當然不用,因為MVC對你的后臺邏輯沒有影響。我們的程序之所以能夠去賣,能夠獲得成功或者失敗,不在于你使用的是 ASP.NET MVC 還是 Web Form,或者是其他什么東西,而是你的業務實現,你的用戶體驗。這才是程序的價值。如果僅僅是由于架構的變化就思考業務是不是要重新來過,未免舍本趨末。實際上,好多項目并沒有一個相對穩定的Code Base,自保尚且不及,更別論進化了。

  另一個問題是——生活永遠不像博客中舉的例子那樣簡單。ASP.NET Form Authentication,是干什么的?ASP.NET Role Based Authorization 能靈活配置滿足你應用的 Access Control 需求嗎?很遺憾,Authorization 實際上是一個很復雜的問題,但是我們不能因為這個,就覺得需求過于復雜,或者 Form Authentication / Authorization 太弱。另一個問題集中體現在了 Entity Framework 上。我看到了不計其數的 Repository 寫成了 Database 的 Gateway(我當然不會笑話別人,我自己就寫成了這樣)。我也怨 Entity Framework 太弱,怎么處理外鍵?怎么處理Nested Object?為什么Enum映射這種看似“非常簡單”的功能就是遲遲出不來。但是我為什么沒有想過,Repository 是誰的 Repository?到底是 Data Set 還是 Domain Model。當然,應該是 Domain Model。Domain Model 和數據庫的表的對應關系難道就是直接“拖動”這么簡單嗎?當然不是,那么這種復雜的映射就是你智慧的結晶,是你對業務的理解。EF很好,但是這并不是說你一定要使用EF的ObjectContext來實現 Unit Of Work,實現 Object Mapping。也不是說你僅僅靠輕輕的拖動“鼠標”就可以搞定一切領域模型的映射。問題都處在我們自己的懶惰和浮躁上,而不是 EF 太弱。

  我錯就錯在了將精力集中在了芝麻而不是西瓜上,這么多的 Framework,如此多的 DSL,讓原本一些復雜的功能得到了簡化。但是這些 Framework 并不想讓你把精力集中在他們身上,而希望解放你的生產力,讓你把精力集中在具體的業務上。去用心的設計你的業務,在業務上盡情的展現你對各種方法論的理解。悲哀的是,我們并沒有領他們的情,我們把聚光燈全都用在了他們身上,讓真正的業務邏輯穿的破破爛爛在角落里哭泣。

  就拿 Authorization 來說吧,假設一個系統要求一種“具體”的 Role Based Access Control,我如何實現這個需求。別誤會,這不是 ASP.NET Authorization 能搞定的。我明白相關的理論嗎?我能夠知道認證需要那些要素嗎?這些要素將如何從 Base 上影響 Domain Model 的設計?實際上,每一個系統都需要的功能,往往是最具技術含量的。放下浮華,我還是回到業務邏輯上來吧,Framework就像是時下流行的網絡用語,過幾年也許沒人記得他們。但是 Code Base 將永遠發光,養活你和你的家,甚至養活大家。

  就像炒菜,好菜,是要耗功夫的,沒有什么捷徑。


夏天可是個好季節 2012-12-13 12:27:51

[新一篇] 科目三考試要點及技巧

[舊一篇] 回歸初心止拖延
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表