十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
在我的這些年的開發(fā)中,我可以肯定的一點(diǎn)是,保護(hù)網(wǎng)絡(luò)請(qǐng)求是任何移動(dòng)應(yīng)用程序的基本組成部分。幾周前我的一個(gè)應(yīng)用程序停止工作,因?yàn)槲腋淖兞嗽趍ettup.com的服務(wù)器上的安全套接字層(SSL)認(rèn)證,這使我認(rèn)識(shí)到傳輸層安全(TLS)在確保應(yīng)用程序和服務(wù)器請(qǐng)求中起著重要的作用。
我在我的播客合并沖突中更詳細(xì)地討論TLS,但簡而言之,TLS提供了對(duì)稱加密技術(shù),可以防止中間人***,也可以防止移動(dòng)設(shè)備的任何通信隱私。Meetup更新了他們的認(rèn)證服務(wù)器要求在使用制作請(qǐng)求時(shí)最少要TLS1.2版本,因此我很清楚的更新了我的應(yīng)用程序并啟用TLS1.2以支持我的Xamarin.iOS和Xamarin.Android應(yīng)用,僅改變了一些構(gòu)建配置。
當(dāng)涉及到網(wǎng)絡(luò)請(qǐng)求和TLS時(shí),有兩個(gè)重要的設(shè)置我們可以修改:
HttpClient: 處理HttpMessageHandler實(shí)現(xiàn)以提供消息處理或者提供底層的本機(jī)實(shí)現(xiàn)。
TLS/SSL: 處理應(yīng)用程序使用的TLS的實(shí)現(xiàn)。
我們可以選擇的每個(gè)實(shí)現(xiàn)都提供了不同的功能、速度和兼容性,同時(shí)提供了一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)請(qǐng)求調(diào)用,并在幕后透明地表現(xiàn)。
選擇HttpClient 和TLS實(shí)現(xiàn)的設(shè)置,通過右鍵點(diǎn)擊項(xiàng)目可以發(fā)現(xiàn),通過在Windows版Visual Studio中,Properties > Android Options > Advanced或者在Xamarin Studio中Options > Build > Android Build > General 。
在Android上HttpClient 實(shí)現(xiàn)我們通過在使用new HttpClient()默認(rèn)控制,
受控的 HttpClientHandler是 HttpClient 處理完全管理的實(shí)現(xiàn), 幾年來它都是Xamarin.Android的默認(rèn)實(shí)現(xiàn)。而在功能方面最兼容的時(shí)候,折衷是一個(gè)稍大的可執(zhí)行文件大小,并且執(zhí)行速度可能比本機(jī)實(shí)現(xiàn)慢。此實(shí)現(xiàn)僅與過去的TLS 1/1.1兼容, 但是,在TLS / SSL實(shí)現(xiàn)中有一個(gè)新的選項(xiàng)來使用本地TLS 1.2 +,它將在所有的調(diào)用下使用谷歌下一個(gè)令人討厭的SSL。
本地的 AndroidClientHandler 選項(xiàng)使用本地的java.net.URLConnection來處理所有的HTTP請(qǐng)求,改進(jìn)的性能和更小的可執(zhí)行文件的大小。 AndroidClientHandler 警告雖然它將在所有版本的Android上運(yùn)行,它只會(huì)在Android 5 +設(shè)備提供支持TLS 1.2和幾個(gè)HttpClient功能可能不可用。
或者,你可以混合和匹配使用托管和一個(gè)電話呼叫的基礎(chǔ)上人HttpClient Handler。簡單地傳遞一個(gè) AndroidClientHandler 實(shí)例,在創(chuàng)建HttpClient時(shí):
點(diǎn)擊(此處)折疊或打開
using System.Net.Http;
...
// This will use the default message handler for the application; as
// set in the Project Options for the project.
var client = new HttpClient();
// Use AndroidClientHandler for all calls from this HttpClient
var client = new HttpClient(new Xamarin.Android.Net.AndroidClientHandler ());
確保這一點(diǎn)很重要,在SSL/TLS實(shí)現(xiàn)框中選擇 Native TLS 1.2+ ,如果你的應(yīng)用要求TLS 1.2+。Android的應(yīng)用程序需要運(yùn)行的版本將決定我們是否應(yīng)該選擇托管或本機(jī)HttpClient實(shí)現(xiàn)。對(duì)于Meetup網(wǎng)站經(jīng)理,我選擇了HttpClientHandler和本地托管TLS 1.2 +所以我可以支持TLS 1.2 +在所有我的電話,無論安卓版。
iOS 和macOS 在處理程序和TLS支持時(shí)更簡化。所有來自于Xamarin.iOS 10.8的iOS應(yīng)用都使用蘋果的TLS使用本地執(zhí)行的,它為所有應(yīng)用程序提供完整的TLS 1.2 +支持。還有幾個(gè)選項(xiàng),開發(fā)者可以選擇當(dāng)談到HttpClient實(shí)現(xiàn),通過在Visual Studio中右擊工程并選擇 Properties > iOS Build > Advanced 或者在Xamarin Studio選擇 Options > Build > iOS Build來找到。
有三種不同的HttpClient的處理程序,可以選擇iOS應(yīng)用。默認(rèn)管理HttpClientHandler提供HttpClient功能大的兼容性。然而,像管理Android HttpClient處理程序,它還需要更多的托管代碼,可以增加應(yīng)用程序的大小。另外兩個(gè)選項(xiàng),CFNetwork Handler(iOS 6 +)和NSURLSession Handler(iOS 7 +),包裝器是否圍繞各自的原生api,提供用于網(wǎng)絡(luò)通信和傳輸?shù)牡讓颖緳C(jī)代碼。使用這些將導(dǎo)致更小的可執(zhí)行文件,提高網(wǎng)絡(luò)性能,并使用底層的IOS隊(duì)列和線程。缺點(diǎn)是,有可能不是所有的全功能的.net HttpClient的功能和選項(xiàng)。
就像 Xamarin.Android我們可以選擇我們的應(yīng)用程序使用HttpMessageHandler務(wù)實(shí):
點(diǎn)擊(此處)折疊或打開
using System.Net.Http;
...
// This will use the default message handler for the application; as
// set in the Project Options for the project.
var client = new HttpClient();
// This will create an HttpClient that explicitly uses the CFNetworkHandler
var client = new HttpClient(new CFNetworkHandler());
// This will create an HttpClient that explicitly uses NSUrlSessionHandler
var client = new HttpClient(new NSUrlSessionHandler());
更新TLS 和HttpClient 實(shí)現(xiàn),將使我們的應(yīng)用程序能夠完全安全,并兼容我們應(yīng)用程序必須與之交互的任何后端。
一定要看我們的更新,跨平臺(tái) 傳輸層安全 文檔, 對(duì)于一個(gè)完整的,所有的TLS選項(xiàng)Xamarin開發(fā)進(jìn)行了深入的分析,其中包括額外的切換和指導(dǎo)。你也可以查看特定平臺(tái)的文檔,為 Android 和 iOS / macOS 分別頒發(fā)的。還有,一定要聽我的考驗(yàn)和磨難,在 Merge Conflict 37: TLS – How do you EVEN上。最后,學(xué)習(xí)更多Xamarin大學(xué)的 自學(xué)課程 “Consuming REST-based Web Services”, 它研究了如何在移動(dòng)應(yīng)用程序中集成和使用REST式Web服務(wù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。