2010年2月26日 星期五

SharePoint 2010 軟體開發人員技術預覽 3月份研討會

微軟在下個月(3月)有辦一場有關SharePoint 2010 軟體開發人員技術的介紹,是由曹祖聖講師所主講的一場研討會,基本上SharePoint 2010 的開發著實跟SharePoint 2007的開發上,有很多不一樣的要注意,就連SharePoint 2007開發的程式碼要運作在SharePoint 2010 都必須經過一定步驟的Upgrade,可見中間有不小的差異在。

曹祖聖在這場研討會的內容中,所列出的範圍蠻廣的,建議有興趣的開發SharePoint 2010 的朋友們,可以去報名聽聽看,報名網址在此:http://msdn.microsoft.com/zh-tw/ee869156.aspx

我先列大略的列一些他所會介紹的範圍在此(從報名網站整理過來的),給有興趣的朋友先參考一下,蠻建議先去聽一下的:

  • SharePoint 2010 簡介
  • 開發平台歷史與未來進程
  • 使用 Visual Studio 2010 開發 SharePoint 應用程式
  • SharePoint 物件模型
  • 設計與開發 SharePoint 介面
  • 清單與架構設計存取
  • 事件處理機制
  • LINQ to SharePoint
  • 工作流程
  • 服務架構
  • Business Connectivity Services (BCS)
  • 企業內容管理
  • 外部內容管理
  • SharePoint 搜尋
  • 商業智慧
  • 如何使用程式存取與設定 SharePoint 安全性
  • .NET 組件安全性與組件信任
  • 沙箱式 (Sandboxed) 解決方案
  • 應用程式安全性與 Claims-based 授權機制
  • 如何將 2007 版的程式碼升級至 2010 版
  • 應用程式生命週期管理
  • Feature Framework 與解決方案部署

看到以上這麼多的開發內容需要了解,我心裡想,真夭壽,這真不是人搞的產品,可以客製化的範圍也太廣了,其實每一個產品都一樣啦~要客製化,總是要下很多功夫的

哈哈~偏偏,唉~我看有關SharePoint 2010 開發課程規畫也差不多要開始進行了,喵~

2010年2月22日 星期一

.NET Call SAP/RFC by Visual Basic & VS2010

原本以為這輩子應該是沒什麼機會碰到這種非個人領域內的技術(SAP),孰不知資訊IT的世界果然是很小,想起以往年少輕狂,第一個工作是當個程式設計師,寫的是JSP網頁程式的部分,也有部分的JAVA開發,後來因為否些因素轉而投向比爾蓋茲的懷抱,開始寫起VB和ASP等微軟技術來,到了中菲以後,莫名奇妙又多少接觸到AS400和Oracle相關的技術,雖然沒有真正下去開發這AS400的系統,不過大致上皮毛也算是有摸到,正所謂沒吃過豬肉,也看過豬走路,到了恆逸算是個人領域技術的萬流歸宗,幾乎所有的時間就只專精在MS的技術上面。

直到前一陣子,因為答應幫忙朋友的忙,結果居然扯到的SAP,朋友要的只是很簡單的一句話,用.NET Call SAP/RFC 將資料取回在微軟相關的產品上。媽呀,這又是一個完全陌生的領域,我甚至連RFC是啥東西都不清楚(雖然後來問一下google大神就知道了),就好像一個武林高手,一腳踏入一個飄邈虛無的危險聳聳森林中,也只能憑著自身的保命技能努力的生活下來,身邊一切的環境尚待自我摸索。當然這樣說是有點誇張了點,有那種嚇死人不償命的feel,不過老實說,亞當斯以往從來沒有接觸過SAP,因此也就把這個幫忙,當作是一個自我的挑戰,嘗試看看是否可以搞點什麼東西出來。

話說,為了幫這個忙,花了我幾乎快兩個禮拜的時間,心疼阿~我的光陰~

開始進入正題吧,欲使用.NET技術與SAP溝通,有很多種方式,但是對於亞當斯來說,最簡單也是做快速的方式就是直接使用SAP的Client元件,來個直搗黃龍。因此要使用這種最簡單,也是最直接的方式來連結SAP的話,就必須有一些事先的開發環境必須要準備一下,以下亞當斯分為兩個部分來做說明,第一部分是開發環境的需求,第二部分是程式語言的撰寫。

首先先來談談開發環境的部分,我用的是Vs2010+VB

  1. 安裝SAP Client應用程式
  2. 就如同用Oracle Client 連到Oracle Server、As400 client連到As400 Server一樣,在欲開發的機器上,安裝SAP Client,並且設定一個可以連接到SAP Server的 Client Setting
    image
  3. 確定這個client可以順利連結到SAP,設定好相關的IP、ID、系統號碼和登入的帳號密碼等等。

接著打開Visual Studio開發工具,新增一個專案挑選適當的語言,開始撰寫程式:

  1. 先在專案中加入以下四個參考組件,分別為參考COM頁簽中的SAP BAPI Control、SAP Logon Control、SAP Table Factory、SAP Remote Function Call Control。
    image image image image
  2. 加入完成參考,VS專案中會將這些COM元件轉換為相對應的 .NET Interop Assembly放在Bin資料夾中
     image
  3. 在此以ASP.NET為例,新增一個網頁,開發寫程式,首先當然就是把這幾個.NET Interop Assembly相關的命名空間加入到應用程式中:
    Imports SAPBAPIControlLib
    Imports SAPLogonCtrl
    Imports SAPTableFactoryCtrl
    Imports SAPFunctionsOCX
  4. 接著撰寫相關登入SAP的功能,建立SAPLogonCtrl.SAPLogonControlClass物件,用來設定帳號密碼等相關的登入訊息,以便連結

    Dim login As New SAPLogonCtrl.SAPLogonControlClass()
    login.ApplicationServer = "192.168.10.10"
    login.Client = "888"
    login.Language = ""
    login.User = "Adams"
    login.Password = "P@ssw0rd"
    login.SystemNumber = Integer.Parse("00")
    Dim conn As SAPLogonCtrl.Connection = CType(login.NewConnection(), SAPLogonCtrl.Connection)
    If conn.Logon(0, True) Then
      ' 這邊撰寫連結SAP成功之後,.NET所要運作的事項
    Else
       lblMsg.Text = "Login Fail"
    End If

  5. 在來說說SAP/RFC的情境,在這個示範中:
    假設SAP/RFC 的模組名稱叫做:BAPISDORDER_GETDETAILEDLIST
    需要一個Structure,命名為:I_BAPI_VIEW
    以及一個Table當作參數,這個Table命名為:SALES_DOCUMENTS
    如此一來程式碼如下:
    image
  6. 當叫用SAP/RFC成功之後,接著就把所得的資料結果接收回來,假設這邊叫用了SAP/RFC之後,會有3個Table會傳回給.NET,那個就可以使用.NET的相關物件(如:DataTable…)去接收以及使用了
    image

如此一來,.NET Call SAP/RFC 的設計應該就完成了,到時候再依據不同的SAP/RFC所需要的參數,給予不同的數值即可達到動態叫用的功能,以上這幾個步驟和程式碼看起來雖然不多,但是老實說,可是把亞當斯搞得精疲力盡,原因一開始就說了,SAP是一個我從來沒有碰過的東西,又是必須在極短的時間內,也沒有其他人可以提供多餘的資源下,一步一腳印去測試出來,當然有問了一下google大神,但是得到的東西畢竟不多,例如:COM這些元件中的interface叫用的方式等等,都幾乎是一個method、一個method抓出來測試,說來真的是吐血。

不過,等到都測試完成,也搞懂一些有關整合SAP技術的時候,算是學習到一些新技術、新東西吧!當然也希望以上的經驗可以讓有需要的看倌有機會可以運用的上,這樣也算是亞當斯努力的心血中,有得到回報 ^_^y

2010年2月14日 星期日

微軟免費防毒軟體 : Microsoft Security Essentials

今天在安裝Win7完了之後,就在想到底要裝什麼防毒軟體,後來John介紹了一個免費的微軟防毒軟體,叫做 : Microsoft Security Essentials。

以下是官網的介紹內容:Microsoft Security Essentials 為您的家用電腦提供即時防護,可防範病毒、間諜軟體及其他惡意軟體。 Microsoft 免費*提供 Microsoft Security Essentials 軟體下載,不但安裝簡單、使用方便,而且讓您的電腦永遠受到最新技術的保護。您一眼就能辨別電腦是否安全 — 綠色代表狀況良好,就是這麼簡單。 Microsoft Security Essentials 可以在背景安靜且有效率地執行,因此您能夠隨意使用 Windows PC,而沒有中斷或長時間等候電腦的問題。

原本亞當斯裝的是這個Microsoft Forefront Client Security,後來想想反正兩者都是免費的,試試看也不錯! 所以就下載來裝看看囉,有關Microsoft Security Essentials這防毒軟體,有興趣的可以參考以下網址:http://www.microsoft.com/security_essentials/

image

2010年2月8日 星期一

ASP.NET 4.0 New Feature : Extensible Output Caching (ASP.NET 4.0 新功能之延伸快取)

ASP.NET 具備快取功能,可以將網頁、控制項或是HTTP responses資料快取起來記錄在記憶體,但是目前預設的ASP.NET快取功能所提供主要是儲存在Server的記憶體中,如果對非常龐大的存取流量來說,記憶體的耗費基本上是非常可觀的。ASP.NET 4.0的output caching功能提供開發者可以自訂output-cache providers,以儲存快取資料在不同的地方,而不單純只是在Server上的記憶體。

例如,開發者可以先開發一個客製化自訂的output-cache providers,命名為:DiskOutputCacheProvider來套用,建立一個class,這個類別可以繼承System.Web.Caching.OutputCacheProvider,然後改寫class其中的儲存方式,例如存到硬碟。設計完成之後,可以設定ASP.NET 4.0的web.config以改變網站的快取模式。

web.config設定如下:

<caching>
  <outputCache defaultProvider="AspNetInternalProvider">
    <providers>
      <add name="DiskCache"
          type="MyLib.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>
    </providers>

  </outputCache>
</caching>

以上的web.config設定表示ASP.NET 4.0預設的output-cache providers仍然是套用預設的AspNetInternalProvider,也就是直接儲存網站的記憶體中,但是我們新增了一個自訂的output-cache providers在這個網站中。

接著某一個網頁、使用者控制項…等等,想要套用自訂的output-cache providers的話,就只要設定網頁的OutputCache 指示詞去套用即可,如下列設定代表快取30秒,並且快取的資料式儲存在硬碟中:

<%@ OutputCache Duration="30" VaryByParam="None" providerName="DiskCache" %>

當然,除了直接在某一個網頁設定OutputCache 指示詞,讓網頁去套用自訂的快取模式之外,還可以在整個網站的Global.asax中改寫GetOutputCacheProviderName事件程序,去指定整個網站中的哪些網頁或資源想要套用客製化的output caching功能,程式設計如下:

public override string GetOutputCacheProviderName(HttpContext context)
{
    if (context.Request.Path.EndsWith("MyDemo.aspx"))
       return "DiskCache";
    else
        return base.GetOutputCacheProviderName(context);
}

2010年2月5日 星期五

ASP.NET 4.0 New Feature : All New Web Project Style (新ASP.NET網站專案樣板架構)

基本上ASP.NET 4.0在設計上整個專案類型比起ASP.NET 3.5 就整個外觀或是型式上,亞當斯覺得整體上改的蠻多的,而且是改的比較完善,這邊先來看看ASP.NET 4.0設計上時,比起3.5版的不同。首先是建立專案時的畫面,預設.NET Framework 4:

image

當建立一個實際的ASP.NET專案,再來看看整個專案的架構,真的是有夠完整的,不僅把預設的驗證方式改為From驗證模式,甚至是預設就使用MasterPage,還有script以及css的預設支援。

image

我們來看看上圖的整個架構,有Account資料夾,理面有Form驗證所需要的所有基本程式網頁,包含登入網頁、更改密碼網頁、或是註冊網頁…等等。有Script資料夾,包含支援JQuery的script檔;有Site.master預設就啟用主版頁面的設計…真的是完整多了。

除了預設相對3.5完整的架構之外,我們來看看它的web.config多了哪些預設的設定:

  • 首先,連線字串預設式啟用SQL EXPRESS的連線

<connectionStrings>
  <add name="ApplicationServices"
       connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
       providerName="System.Data.SqlClient" />
</connectionStrings>

  • 指定目標執行版本為4.0

<compilation debug="false" targetFramework="4.0" />

  • 預設啟用Form驗證方式

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>

  • 會員機制、角色管理以及個人化相關的config設定,在ASP.NET 4.0 已經設定在每一個獨立的網站專案中,而不是像之前3.5前的版本都是設定在machine.config。簡單來說,要把網站的會員機制、角色管理以及個人化設定異動的話,只需要直接修改web.config即可。

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider"
         connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider"
         type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="ApplicationServices"
         applicationName="/"/>
  </providers>
</profile>

<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>

  • 最後一個是新的模組Module設定:runAllManagedModulesForAllRequests

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

  • 而在Account下有一個針對這個資料夾所套用的web.config,主要是控管網站的安全性,在這資料夾中拒絕匿名存取者,允許所有人可以直接存取Register.aspx。

    <location path="Register.aspx">
      <system.web>
        <authorization>
          <allow users="*"/>
        </authorization>
      </system.web>
    </location>

    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>

  • 值得注意的是,以往在ASP.NET 3.5中web.config有關AJAX的設定,在ASP.NET 4.0並不再是設定在專案所隸屬的web.config,而是設定在ASP.NET 4.0專屬的config目錄機器層級的組態設定檔中,換言之就是 C:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config\machine.config 中。看到這部分各位有沒有想到什麼? 沒錯,以往ASP.NET 2.0 或是 ASP.NET 3.5都是套用同樣 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 下的設定檔,而ASP.NET 4.0 則是有專屬版本的config唷。

最後來看看預設網頁Default.aspx執行起來的畫面,這是自動套用主版頁面後的執行畫面,還蠻有感覺的。

image

2010年2月4日 星期四

Design Windows Azure by Visual Studio 2010 準備工作

欲使用Microsoft Visual Studio開發Windows Azure相關的服務,必須先安裝Windows Azure Platform Training Kit,以下的網址可以直接下載這個訓練套件,在這個Training Kit中有很多Lab以及範例程式碼可供練習。

安裝完Training Kit之後,如果要練習Lab的話,可以到C:\WindowsAzurePlatformKit\Labs\IntroductionToWindowsAzure\Source\Setup 先執行SetupLab.cmd把程式碼安裝到Visual Studio中,安裝的過程當中會做環境的檢查,等到全部確定之後就會出現以下畫面。

image

當然,檢測環境的過程當中,必須要安裝Windows Azure Tools for Microsoft Visual Studio,而以目前的開發工具而言,不同的版本所對應的Windows Azure Tools for Microsoft Visual Studio也不同,以下是目前要練習最常見的兩個Windows Azure Tools for Microsoft Visual Studio:

如果是Visual Studio 2010 Beta2 的話,可以安裝以下這個版本的Tools

如果是Visual Studio 2010 RC1 的話,可以安裝以下這個版本的Tools,以下這個版本應該是目前的最新版了

等到把Windows Azure Tools for Microsoft Visual Studio也安裝完成了,就會有以下的幾個安裝畫面出現,在此列出來方便各位對照。下圖是安裝所有的Lab Template:

image

出現下面警告視窗,按"Yes",畢竟如果是微軟官方網站下載的,基本上應該安全性還可以信任啦!

image

接下來安裝Code Snippet,因為亞當斯是要使用Visual Studio 2010來練習,所以只要挑選Visual Studio 2010 Beta2 並且把所有預設的Code Snippet都裝上來就可以了。

image

喔耶,到目前為止,基本的準備工作就算安裝完成了。^_^

image