[★] C# 企業級開發案例 :

來源:互聯網
上載者:User

C#  企業級開發 :

1. 顯示登陸表單
顯示登陸表單的代碼位於主表單的Load 事件 處理函數 MainForm_Load 中,此事件會在表單顯示前觸發,通常用於分配表單使用的資源等任務..

2.國際化
如果想使Windows 表單支援國際化,設定表單的 Localizable 屬性為 True 即可,設定Localizable 屬性的目的是為該表單產生一個基於xml 的資源檔.

3.表單中 控制項的存取層級
預設情況下 private, 設定為 internal, 表明整個組件檔都是可見的

4.記住密碼
將密碼儲存到註冊表,寫入註冊表,讀取註冊表

5.將錯誤記錄儲存到Windows 系統日誌中
EventLog.WriteEntry

6.需要等待的時候,將改變滑鼠的狀態
base.Cursor = Cursors.WaitCursor;

7.到處到 Excel
匯出內容到 Excel 是通過使用 COM 組件實現的. Excel 系統中主檔案 Excel.exe 本身就是 COM 組件,通過在.NET 項目引用Excel.exe 檔可以實現對  Excel的功能控制

與 COM 組件相互操作是通過使用 "封裝類(Wrapper Class)" 和 類似 "代理"(Proxy) 的機制實現的.
封裝類使.NET 程式可以識別 COM 組件提供的介面,而代理類側提供對 COM 介面的訪問.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;

namespace CSharpPrj
{
    class ExcelExport
    {
        private object _optionValue = System.Reflection.Missing.Value;

        //如果 Excel 安裝在電腦上,側匯出表格內容到Excel
        public void ExportTesks(DataSet ds,DataView dv,DataGridView dgv)
        {
          

            //定義 Application 對象,此對象表示整個 Excel 程式
            Microsoft.Office.Interop.Excel.Application excelApp;

            //定義 Workbook 對象,此對象代表工作薄
            Microsoft.Office.Interop.Excel.Workbook wb;

            //定義Worksheet 對象,此對象表示 Excel 中的一張工作表
            Microsoft.Office.Interop.Excel.Worksheet ws;

            //定義Range 對象,此對象 代表儲存格範圍
            Microsoft.Office.Interop.Excel.Range r;

            int row = 1;
            int cell = 1;
            int priorityHeight, priorityNoraml, priorityLow;

            try
            {
                //初始化 Application 對象 excelApp
                excelApp = new Microsoft.Office.Interop.Excel.Application();
                //在工作薄的一個工作表上建立工作清單
                wb=excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

                //引用第一行第一列的

                ws = (Worksheet)wb.Worksheets[1];
            }
                   
            catch (Exception ex)
            {
                throw ex;
            }
            //命名工作表的名稱為"Task Managere"
            ws.Name = "Task Management";

            // 設定第一行第一列的值儲存格的值
            ws.Cells[row, 1] = "Tasks as of" + System.DateTime.Now.ToShortDateString();

            //引用第一行第一列的儲存格,並顯示轉換為Range 類型

            r =(Range)ws.Cells[row, 1];
           
            // 設定儲存格的字型加黑
            r.Font.Bold = true;
          
            // 遍曆資料表中的所有列 ...........
            //建立行,把資料試圖記錄輸出到對應的Excel 儲存格...

         

        }
    }
}

 ===============

 C# 企業級開發

1: 伺服器端負責承載資料庫和中介層組件,中介層完成資料訪問和交易處理等工作,而用戶端負責使用者介面與使用者的互動.

2: WEb服務  包括身分識別驗證Web服務 和 資料Web服務,離線狀態下是從本機離線檔案中讀取資料

3: 第三方免費控制項

4.非同步 Web 服務調用提高了系統的總體效能和延展性.
非同步WEB 服務調用允許調用方法的線程在返回線程池時執行其他代碼,這樣,線上程數量有限的線程池中就可以多執行一個線程,從而系統的總體效能得到提高

5.預存程序
 執行速度快
 能夠減少網路流量
 能夠在集中的位置修改而不需要重新編譯應用程式
 防止某些類似SQL 插入攻擊

6.將錯誤記錄儲存到Windows系統日誌中
public class LogError
    {
        private const string c_EventSource = "love";
        private const string c_LogName = "Application";
       
        public static void Write(string errorMessage)
        {
            try
            {
                //判斷名稱為"love" 的事件來源是否存在
                if (!EventLog.SourceExists(c_EventSource))
                {
                    //如果不存在就試圖建立
                    EventLog.CreateEventSource(c_EventSource, c_LogName);
                }
                // 已存在,寫錯誤訊息到日誌
                EventLog msg = new EventLog(c_LogName);
                msg.Source = c_EventSource;
                msg.WriteEntry(errorMessage, EventLogEntryType.Error);
            }
            catch
            { }
        }
    }
7. 獲得包括在 Windows 註冊表的使用者名稱和密碼
 RegistryKey regKey = Registry.CurrentUser.OpenSubKey("c_RegisterKey");
                if (regKey != null)
                {
                    // 擷取儲存在登錄機碼非空
                    userName = (string)regKey.GetValue("UserName");
                    //一般情況下儲存到註冊表的密碼都要加密
                    password = (string)regKey.GetValue("Password");

                    //關閉開啟的登錄機碼
                    regKey.Close();
                }
8.
RegistryKey regKey = Registry.CurrentUser.CreateSubKey("c_RegistryKey");
                if (checkBox1.Checked)
                {
                    regKey.SetValue("UserName", txtUserName.Text.Trim());
                    regKey.SetValue("PassWord", txtPasswrod.Text.Trim());
                }
                else
                {
                    regKey.DeleteValue("UserName", false);
                    regKey.DeleteValue("Password", false);
                }
                regKey.Close();
                  
9. .NET 中也有專門的類負責Data Encryption Service,這些類都在 System.Security 命名控制項中.

10. WEb 服務不屬於 .NET 架構,它是一個由多方支援的跨平台的分布式技術

11. 身分識別驗證WEB  服務中擷取加密票
       String userID=0;//  根據使用者名稱和密碼將資料庫表中對應 id 值查詢出來

       // 建立使用者票
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(userID, false, 1);
        // 加密使用者票
        string encryptedTicket = FormsAuthentication.Encrypt(ticket);

        // 擷取加密票的逾時時間
        AppSettingsReader configurationAppSettings = new AppSettingsReader();

        int timeout =(int)configurationAppSettings.GetValue("AuthenticationTicket.Timeout", typeof(int));

        //緩衝加密票
        Context.Cache.Insert(encryptedTicket, userID, null, DateTime.Now.AddMinutes(timeout), TimeSpan.Zero);

        //如果成功返回 使用者加密票
        return encryptedTicket;

12. SqlHelper 類是包含在微軟資料應用塊(Microsoft Data Application Blocks) 中的一個密封(Sealed)類,使用他可簡化訪問資料庫的編碼,並可獲得較高的速度. 該函數封裝ADO.NET 中的 SQL SERVER 操作類,無需定義參數的相關屬性,而且不需要事先開啟資料庫連接.
ExecuteSaclar 函數在資料庫 串連沒有開啟的情況下,可以自動開啟資料庫連接

13  SQL 插入式攻擊的例子 select *from admin where userName='@userName' and password='@passwrod' ;
如果第一個文字框輸入 1' or '1'='1  第二個文字框 隨便輸入.. 都能返回相應的結果.這是一個SQL 插入式攻擊.為了避免SQL 注入式攻擊,可以採用2中方法解決,一種是過濾所有的非法字元和字串,如單引號,雙引號,分號,逗號,冒號,串連號等,字串有 "net user","net localgroup administrators" 對他們進行轉換或者過濾. 但是這種方法有很大的局限性,如果輸入值中包括這些字元,也將不能輸入.第二種方法就是使用參數,SQL 參數的傳遞方式將防止攻擊者利用單引號和連字號實施攻擊.並允許輸入前一種方法總的所有的非法字元和字串

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.