某項目要調用現有的100多個DLL 五 自動封裝跨域調用的邏輯

上文說到了可以通過繼承的方式實現Class的可序列化那麼目前準備採用的方案如下1.為所有輸入輸出參數 實現可序列化 (原來已經序列化的就不必了)2.在本域產生一個代理類, 負責封裝所有輸入參數 並調用遠端網域的方法3.在獨立域產生一個代理類,負責接收輸入參數 調用實際的方法,並且封裝傳回值調用流程   本身代碼 -> 本地代理類 -> 封裝輸入參數 - > 跨域訪問 -> 接收輸入參數 並調用實際的DLL -> 封裝傳回值 ->

WCF 常見邏輯和代碼 1.錯誤處理和配置

這些東西都很多人寫過了.....放在這裡只是做一個備份,要用的時候找的到 - -#需要的人直接拷貝代碼就可以運行了注意只能運行在WCF 4.0中...因為為了少些點.....以下是c#代碼用於定義錯誤處理View Code public class ErrorHandler : IErrorHandler {#if DEBUGpublic static ConcurrentDictionary<DateTime, Exception> ExceptionList =

【設計原則和建議】 構造和析構對象

良好的構造和析構對象,控制對象生命週期可以較大的提高程式的效能,降低GC的壓力,減少BUG幾率。本文還是比較簡單的,主要還是經驗的總結,很多東西也許各位已經知道,也許不知道。希望大家一起討論。    1.如果可能,避免靜態建構函式 (也成為類型建構函式)效能原因

Lambda動態附加條件和排序語句 (可用於linq to sql)

一種常見的情況, 使用linq-to-sql 或者lambda(Entity framework)去資料庫取條件的時候需要附加多個條件或者排序語句以 Name="John" Age=23 為例先明確一個概念 對於Lambda來說 以下兩個運算式是等價的  1.  list.Where(p=>p.Name=="John" && p.Age==23)   2.  list.Where(p=>p.Name=="John"

WCF 常見邏輯和代碼 2.參數檢查 BeforeCall And AfterCall

這段代碼可以直接在wcf4.0中跑...需要的人就拷貝走吧...我經常也會忘記代碼..做個備份雖然.net已經內建了一些類型用於檢查輸入參數 例如DataLengthAttribute不過畢竟功能有限,實現自己的參數檢查會更強大點.有些東西是內建無法實現的, 例如在輸入的時候檢查許可權,Request還有記錄已耗用時間等以下是C#代碼(這裡只是一種實現, IParameterInspector 還可以被應用到其他的地方 例如面對EndPoint和Attribute)View Code

面試題 拿鑽石

已知一個有10層樓, 每層都有一個鑽石1.你在一個電梯裡面,電梯向上,每層只停一次 然後就到上一層2.一共只能拿一次鑽石, (不允許交換!), 當然每層你都可以觀察鑽石 問如何讓 "拿到最大鑽石" 的機率最大化假設 最大的鑽石叫D10 最小的叫D11. 假設只觀察第一層 後面的樓層中 只要有比第一層大的就拿走 2. 假設只觀察前兩層 記錄下最大的鑽石,後面的樓層中 只要有比前兩層最大的鑽石還要大的鑽石就拿走 ,那麼最高的機率是多少呢?

Quick Start – WCF 4.0 RESTful Service Setup

1.建立一個 Asp.net Website / WebApplication 2. 引用 System.ServiceModel 系列的dll3. 添加以下的類和介面View Code [ServiceContract]// define a service contract interface IPersonService { [OperationContract] Person GetPerson(string id);

繼續演算法 雜湊Hash (一) 概述

概述雜湊表是非常常用的一種資料結構和演算法其o(1)的查詢時間複雜度讓它可以傲視大部分其他演算法這裡是一些常見的資料結構的查詢複雜度冒泡o(n)  二分法o(logn)   [已經排序的資料]數組o(1)基本原理雜湊表的主要原理就是hash值的計算hash vlaue =f(key)其中f() 可以視為o(1)複雜度   (通過 映射hashvalue 和記憶體位址,就可以在o(1)時間內完成查詢)當然 hash函數要保證hash值的不重複,

Facebook 開發常用資源

Facebook .net libraryhttp://facebooksdk.codeplex.com/Facebook Javascript Libraryhttp://developers.facebook.com/docs/reference/javascript/facebook 還是提供了不少好東西。。。。不知道國內能訪問不Asp.net Web.config setting<configuration> <configSections>

.net 雖然他們catch了異常,我們還是能知道的

有的時候某些人的代碼會把異常吃掉(catch以後不rethrow....)以下代碼可以擷取所有的異常...即使他們catch以後什麼也不做 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->AppDomain.CurrentDomain.FirstChanceException += new

演算法基礎 幾個常見的比較排序

排序演算法  時間複雜度       最差時間複雜度 冒泡           O(n*n)插入           O(n*n)選擇           O(n*n)歸併           O(nLogn)堆              O(nLogn)快速           O(nLogn)      O(n*n) 一般來說 最常用的排序是快速排序 ,實現簡單 效率快,  對比對排序和歸併排序, 快速排序的係數比較小,所以都是NlogN的時候會比較快PS:

某項目要調用現有的100多個DLL 四 把不能序列化的實體類變成可以序列化的

由於跨域訪問 要求所有的輸入輸出參數 要麼是繼承MarshalByRefObject, 要麼標記為可序列化由於這些dll又是其他人開發的  我們沒法修改它們繼承與 MarshalByRefObject  , 而且很多類型已經有了繼承了...那麼只好在把類型變成可序列化上做功夫了以前有寫過一篇檔案如何想辦法把不可序列化的類 變為可序列化的不可序列化的類 聲明如下: public class InputParameter {public string Name;public int?

【不小心就會犯錯】 .NET的ConcurrentDictionary,安全執行緒集合類

ConcurrentDictionary 是.NET 4.0裡面新增的號稱安全執行緒的集合類。那麼自然,我們會預期ConcurrentDictionary 中的代碼是安全執行緒的(至少幾個關鍵方法是安全執行緒的).舉個例子,使用者可能會預期GetOrAdd中的方法當Key不存在的時候只執行一次Add的委託,第二次調用GetOrAdd就應該直接取回剛才產生的值了.參考一下以下代碼: public static void Test() {var

常見的Lambda運算式引起的閉包問題

以下代碼的原意是想找出list中滿足Name欄位包含t, Remark欄位包含mark的資料代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> //構造的搜尋條件 希望Name包含t remark中包含mark中的文本 Dictionary<string, string> forms = new

.net 哪些異常是沒法catch的?

1.StackOverFlowException  (一般來說這個不是真的堆棧不夠了,而是你的代碼出現了無線遞迴),如果你用throw new StackOverFlowException 還是可以catch的 2.OutOfMemoryException (好像只有 box newarr  newobj 才會拋出這個異常) 3.非CLS的異常(一般來源於本地代碼,這些異常不繼承於System.Exception)  在.net framework

面試題:從10G個數中找到中數

在一個檔案中有 10G 個整數,亂序排列,要求找出中位元。(中間大小的數)記憶體限制為 2G。解法:假設都是4位元組的數 (更長的也一樣)那麼一共是32個位按照前N位進行分組統計,例如000000  2個      000001 100個類推那麼可以找出中間的幾組數,  進一步分組就可以找到中間數由於記憶體是2g 那麼第一次分組前28位是最理想最快的情況演算法複雜度是O1

開源一個組件, Clover.Proxy, 請大家指正

Clover.Proxy是一個基於.net 4.0的類庫,項目地址:https://github.com/xwj90/Clover.Proxy  (MIT,隨便使用)它提供一種簡單的方式代理執行現有類庫裡面的方法和屬性,它可以用於以下情況: 1. 對現有類的方法和屬性,增加BeforeCall 和AfterCall 通過賦值delegate的方式很方便的自訂BeforeCall 和AfterCall在BeforeCall

.net 內建的日誌功能 System.IO.Log (寫入)

在.net 4.0中 framework內建了一組寫日誌的類,都位於System.IO.Log 命名空間下其中LogRecordSequence 提供了對通用記錄檔系統 (CLFS) 日誌的實現(xp不支援...)FileRecordSequence提供了對普通記錄檔的支援 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->string

查詢是哪個進程佔用了特定連接埠

有的時候幾個程式會同時使用一個連接埠 例如IIS apache skype 什麼的如果你不知道誰佔用了你的連接埠 可以使用以下命令1.先運行  netstat -anop tcp|find ":80 "會出現一個連接埠列表其中第一列是協議 第二列是本地ip和port  第三列是遠程ip和port那麼檢查第二列就行了,記錄PID (最後一列)2然後運行 tasklist /SVC /FI "PID eq 1716"這裡的1716是剛才查詢到的pid這樣就知道誰佔用了你的連接埠 幹掉他吧

OData 1-1 入門:實現一個簡單的OData服務

1.什麼是OData:開放資料協議(OData)是一個查詢和更新資料的Web協議。OData應用了web技術如HTTP、Atom發布協議(AtomPub)和JSON等來提供對不同應用程式,服務和儲存的資訊訪問 2.OData 優勢(個人看法)  1)一種通用的跨語言的協議,  2)基於.net的實現可以非常方便的實現一些功能(例如在用戶端使用lambda運算式, 使用odata 傳遞請求到server,最後伺服器返回一個結果集 , 注意

總頁數: 61357 1 .... 6747 6748 6749 6750 6751 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.