Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
¸ßÐÔÄÜWeb ServiceÊý¾Ý¿â±à³Ì
 
×÷Õߣº·´ÕýÎÒÐÅÁË À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ£º2014-12-25
  2142  次浏览      27
 

¼ò½é£º

ATL ServerÊÇÐÔÄܸܺߵÄWeb ApplicationºÍWeb ServiceµÄ¿ª·¢Àà¿â¡£µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÈÏΪÈç¹ûÓ¦ÓóÌÐòÒªºÍÊý¾Ý¿â½»»¥£¬ÐÔÄÜ×î¸ßµÄ°ì·¨ÊÇʹÓÃOLE DB£¬Í¬Ê±ÒªÆôÓÃATL ServerµÄData Source Cache¡£

ÆôÓÃATL ServerµÄData Source CacheÖ§³Ö

ÏÈÀ´´´½¨Ò»¸öÃûΪHighPerformanceµÄ¹¤³Ì£¬¸Ã¹¤³Ì½«·ÃÎÊSQL ServerÊý¾Ý¿â¡£ÔÚ·þÎñÆ÷Ñ¡ÏîÖУ¬Ñ¡Ôñ¡°Êý¾ÝÔ´»º´æ¡±¡£Ïòµ¼ÎªÎÒÃÇ´´½¨ÁËÁ½¸ö¹¤³Ì£¬Ò»¸öÊÇHighPerformance£¬Ò»¸öÊÇHighPerformanceIsapi¡£HighPerformanceÊÇÎÒÃǵÄÓ¦ÓóÌÐòÂß¼­ËùÔÚÖ®´¦£¬ÎÒÃÇËùÓеÄWeb ServiceµÄ¿É¹«¿ªº¯Êý¶¼ÔÚÕâÀï¡£HighPerformanceIsapiÊÇÎÒÃǵÄISAPÀ©Õ¹·þÎñ¹¤³Ì£¬IIS½«ÔÚµÚÒ»´ÎWeb Service±»µ÷ÓÃÆÚ¼ä¼ÓÔØËü£¬²¢ÇÒÒ»Ö±»º´æ£¬Ö±µ½ºÜ³¤Ò»¶Îʱ¼äûÓÐÈËʹÓÃÎÒÃǵÄWeb Service²ÅÊÍ·Å¡£Òò´ËÎÒÃÇ¿ÉÒÔÀûÓÃÕâ¸öÌØÐÔ½«ÐèÒª»º´æµÄÈ«¾Ö±äÁ¿±£´æµ½HighPerformanceIsapi¹¤³ÌÖУ¬È»ºóÿ¸öÓ¦ÓóÌÐòỊ̈߳¨HighPerformance¹¤³Ì£©¿ÉÒÔͨ¹ýµ÷ÓÃQueryServiceÀ´»ñµÃ»º´æµÄÈ«¾Ö±äÁ¿£¬²¢ÇÒµ÷ÓÃÈ«¾Ö±äÁ¿µÄ³ÉÔ±º¯Êý¡£

HighPerformanceIsapi¹¤³ÌÄÚ²¿Î¬»¤ÁËÒ»¸öÏ̳߳أ¬Ã¿¸öÏ̶߳ÔÏóÄÚ²¿¶¼ÓµÓÐ×Ô¼ºµÄÊý¾ÝÔ´»º´æ¶ÔÏó£¬Çë¿´´úÂ룺

typedef CDataSourceCache<> ds_cache_type;
     CComObjectGlobal m_dsCache;

CComObjectGlobalÓÃÓÚ±£´æÔÚm_dsCache¶ÔÏóµÄÉú´æÆÚÄÚ£¬HighPerformanceIsapi·þÎñÆ÷²»»á±»Ð¶Ôصô¡£CDataSourceCacheÀàʵÏÖÁËIDataSourceCache½Ó¿Ú¡£

µ±HighPerformance¹¤³ÌÖеÄÓ¦ÓóÌÐòÂß¼­Í¨¹ýQueryServiceÇëÇóÈ«¾Ö¶ÔÏóʱ£¬Ö»Òª´«µÝ

__uuidof(IDataSourceCache)¼´¿É¡£QueryServiceµÄʵÏÖ´úÂëÈçÏ£º

HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, 

              REFIID riid, void** ppvObject)

     {

         if (InlineIsEqualGUID(guidService, __uuidof(IDataSourceCache)))

         {

              CIsapiWorker *pWorker = GetThreadWorker();

              if (pWorker)

              {

                   CDataSourceCache<> *pCache = NULL;
                   if (pWorker->GetWorkerData(_DATASOURCE_CACHE, (void **)&pCache))
                   {
                       *ppvObject = static_cast(pCache);
                       return S_OK;
                   }
              }
         }
         return baseISAPI::QueryService(guidService, riid, ppvObject);
     }

ʵÏÖÊý¾Ý¿âµÄ½»»¥

´´½¨ATL OLEDBʹÓÃÕßÀà

ÎÒÃÇʹÓÃÏòµ¼Á¬½ÓSQL SERVER £¨·þÎñÆ÷ÃûΪGAO¡¢Óû§ÃûºÍÃÜÂëΪsa¡¢Êý¾Ý¿âÃûΪ²âÊÔÊý¾Ý¿â¡¢Êý¾Ý±íΪѧÉú±í£©£¬²¢Ö§³ÖÊôÐÔ»¯£¬Éú³ÉÖ§³Öд²Ù×÷µÄOLE DBÃüÁîÀà¡£¾ßÌåÏòµ¼Ê¹ÓÃÕâÀï²»ÐðÊö£¬Çë²Î¿¼MSDN¡£

ÎÒÃǵÄOLE DBÀàÃûΪCDataRowset¡£ÊôÐÔdb_sourceÊÇ´ú±íÁËÁ¬½ÓÐÅÏ¢£¬ºóÃæÎÒ½«Í¨¹ýudlÎļþÌæ´úÖ®¡£db_commandÊôÐÔÖеÄSQLÓï¾ä´ú±íÁ˲éѯ±íµÄ²Ù×÷£¬ÎÒÃÇÒ²¿ÉÒÔʹÓÃUpdate»òÕßinsertÓï¾ä´úÌæÖ®¡£

×¢Ò⣬ÎÒÃǵÄCDataRowsetÀà´´½¨ÔÚHighPerformance¹¤³ÌÖУ¬HighPerformanceIsapi¹¤³ÌÖÐÓ¦¸Ã±£´æÎÒÃǵÄÈ«¾ÖÊý¾ÝÔ´¶ÔÏó¡£

Ìṩ²åÈë¼Ç¼µÄÄÜÁ¦

ÎÒÃÇÐèÒªÐÞ¸Ädb_commandÊôÐÔÖа󶨵ÄSQLÓï¾ä£¬ÒÔ±ãÎÒÃDzåÈëÒ»ÌõÓï¾ä¡£db_command(L"INSERT INTO [ѧÉú±í] ([ÐÕÃû],[ÄêÁä],[ÐÔ±ð],[µØÖ·]) VALUES (?,?,?,?)")

½«db_columnÊôÐÔÐÞ¸ÄΪdb_paramÊôÐÔ£¬Ë³ÐòÇë¶ÔÓ¦INSERTÓï¾äµÄËĸö?ºÅ¡£

ΪÁËʹÎÒÃǵÄWeb ServiceÓиüºÃµÄÐÔÄÜ£¬ÎÒÔÚ¹¤³ÌÖÐÉèÖÃÁËʹÓÃUNICODE±àÂë¡£

<!DOCTYPE HTML>[
     db_command(L"INSERT INTO [ѧÉú±í] ([ÐÕÃû],[ÄêÁä],[ÐÔ±ð],[µØÖ·]) VALUES (?,?,?,?)")
]
class CDataRowset
{
public:
     [ db_param(1,DBPARAMIO_INPUT)] TCHAR m_column0[20];
     [ db_param(2,DBPARAMIO_INPUT)] TCHAR m_column1[20];
     [ db_param(3,DBPARAMIO_INPUT)] TCHAR m_column2[20];
     [ db_param(4,DBPARAMIO_INPUT)] TCHAR m_column3[20];
     void GetRowsetProperties(CDBPropSet* pPropSet)
     {
         pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
         pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
         pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);
         pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE 
| DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
     }
};

±àдCAddRecordÀ࣬¸ÃÀà´ÓCDataRowsetÀàÅÉÉú£¬ÕâÀïÖ»ÄÜʹÓü̳жø²»ÊÇÖ±½ÓÐÞ¸ÄCDataRowsetÀ࣬ÊÇÒòΪdb_commandÊôÐÔµ¼ÖÂÁËCDataRowsetÀàÒýÈëÁËһЩÒþ²ØÀ࣬ÕâЩÒþ²ØÀà»áµ¼ÖÂһЩÒâÍâÐÐΪ¡£

CAddRecordÀཫÌṩÉèÖóÉÔ±±äÁ¿ºÍÇå³ý³ÉÔ±±äÁ¿µÄ·½·¨¡£´úÂëÈçÏ£º

void CAddRecord::Clear(void)

{

     //set member to zero

     m_column0[0]=0;

     m_column1[0]=0;

     m_column2[0]=0;

     m_column3[0]=0;

}
 

void CAddRecord::SetStudentInfo(BSTR Name,BSTR Age,BSTR Gender,BSTR Address)

{

     wcscpy(m_column0,Name);

     wcscpy(m_column1,Age);

     wcscpy(m_column2,Gender);

     wcscpy(m_column3,Address);

}

´´½¨Êý¾ÝÔ´Á¬½Ó¶ÔÏó

ɾ³ýCDataRowsetÀàµÄdb_sourceÊôÐÔ£¬¸ÃÊôÐÔ°ïÖúÎÒÃÇ´´½¨CDataSource¶ÔÏó£¬ÎÒÃÇÕâÀï²»ÐèÒª¡£

¶¨ÒåÁ¬½Ó×Ö·û´®ºê

#define CONN_STRINGW L"Provider=SQLOLEDB.1;Password=sa;
Persist Security Info=True;User ID=sa;Initial Catalog=
/x6d4b/x8bd5/x6570/x636e/x5e93;Data Source
=GAO;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;
Workstation ID=FREEBIRD;Use Encryption for Data=False;Tag with column collation when possible=False"

ÐÞ¸ÄCHighPerformanceÀàµÄ´úÂ룺

HTTP_CODE InitializeHandler(AtlServerRequest *pRequestInfo, IServiceProvider *pProvider)

{

         if (HTTP_SUCCESS != CSoapHandler::InitializeHandler(pRequestInfo, pProvider))
              return HTTP_FAIL;
         if (S_OK != GetDataSource(  pProvider, 
                                          CONN_STRINGW,
                                          CONN_STRINGW, &m_dc ))
              return HTTP_FAIL;
         return HTTP_SUCCESS;
}    

m_dcÊǸÃÀàµÄ˽ÓгÉÔ±±äÁ¿£¬ÀàÐÍΪCDataConnection¡£

[ soap_method ]

     HRESULT AddNewStudent(BSTR Name,BSTR Age,BSTR Gender,BSTR Address)

     {

         m_rec.SetStudentInfo(Name,Age,Gender,Address);

         HRESULT hr=m_rec.OpenRowset(m_dc);

         return hr;

     }

     m_rec¶¨ÒåΪCAddRecord m_rec;

ʹÓÃUDLÎļþ´úÌæÁ¬½Ó×Ö·û´®

´ÓUDLÎļþÖлñÈ¡Á¬½Ó×Ö·û´®£¬ÐèÒª´´½¨MSDAINITIALIZE¶ÔÏ󣬲¢µ÷ÓÃIDataInitialize½Ó¿ÚµÄLoadStringFromStorage·½·¨²ÅÐС£ÕâÖÖ¶¯×÷ÎÒ²¢²»Ïë·Åµ½InitializeHandlerº¯ÊýÖз´¸´×ö¡£Î¨Ò»µÄ°ì·¨ÊǷŵ½ISAPIÀ©Õ¹DLLÖС£

ÎÒÃÇÓ¦¸ÃÔÚÀàCHighPerformanceExtensionÖÐά»¤Ò»¸ö³ÉÔ±±äÁ¿£¬µ±ÎÒÃÇÔÚÓ¦ÓóÌÐòDLLÖÐͨ¹ýQueryService²éѯij¸ö½Ó¿Ú£¨ÕâÀïÃû½ÐIUdl£©Ê±£¬ÎÒÃÇ¿ÉÒÔ»ñµÃ¸Ã±äÁ¿µÄʵÏÖµÄIUdl½Ó¿Ú£¬Í¨¹ýIUdlµÄ·½·¨GetConnectString»ñÈ¡Á¬½Ó×Ö·û´®¡£ÕâÑùÎÒÃǾͿÉÒÔ½«¸ÃÁ¬½Ó×Ö·û´®×÷Ϊ²ÎÊý´«µÝ¸øGetDataSourceº¯Êý£¬´Ó¶øÈ¡´úºê¡£

ʵÏÖIUdl½Ó¿ÚµÄ¶ÔÏó½«ÔÚ´´½¨Ê±¶ÁÈ¡c:/gao.udlÎļþ£¬²¢½«Á¬½Ó×Ö·û´®±£´æ£¬IUdl::GetConnectString·½·¨½«·µ»ØÁ¬½Ó×Ö·û´®¡£

ÕâÀïÉæ¼°µ½¼¸¸ö֪ʶµã£¬ÈçºÎÔÚATL SERVERÖпª·¢Ò»¸öCOM-LIKE ½Ó¿Ú£¬²¢ÇÒ½«½Ó¿Ú±©Â¶Îª·þÎñ£»Èçͨ¹ýOLE DB×é¼þ¶ÁÈ¡UDLÎļþ¡£Ô´´úÂëÈçÏ£¬Çë²Î¿¼£º

#pragma once

//interface IUdl

__interface __declspec(uuid("F4FA35D6-D26D-4b5a-9544-A69F66E927B8"))
IUdl:public IUnknown
{
     HRESULT GetConnectString(BSTR* pConString);
};
#pragma once
//#include 
#include "../CommonServiceDefinition.h"
#include 
using namespace std;
class CUdl :
     public IUdl
{
public: 
     CUdl()
     {
         CComPtr spDataInitialize;
        HRESULT hr = spDataInitialize.CoCreateInstance( __uuidof(MSDAINITIALIZE));
        if (SUCCEEDED(hr))
              hr=spDataInitialize->LoadStringFromStorage(CComBSTR("c://gao.udl"), &m_ConnString);
     }
     ULONG        STDMETHODCALLTYPE  AddRef()        {return 1;} 
     ULONG        STDMETHODCALLTYPE Release()        {return 1;} 
     HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) 
     { 
         if( !ppvObject ) 
              return E_POINTER; 
         if( IsEqualIID( riid, IID_IUnknown)) 
*ppvObject = static_cast<IUnknown*>(this); 
         else if( IsEqualIID( riid, __uuidof(IUdl))) 
*ppvObject = static_cast<IUdl*>(this); 
         else 
              return E_NOINTERFACE; 
         AddRef(); 
         return S_OK; 
     }
     HRESULT GetConnectString(BSTR* pConString)
     { 
         if( pConString==NULL) 
         {
              return E_INVALIDARG;
         }
         CComBSTR bstr(m_ConnString);
         *pConString=bstr.Detach();
         return S_OK;
     } 
private:
     CComHeapPtr m_ConnString;
};

ÀàCHighPerformanceExtensionÖÐÉùÃ÷±äÁ¿CUdl m_udl;²¢ÇÒ¸ÄдQueryService·½·¨

HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, 
REFIID riid, void** ppvObject)

     {

         if (InlineIsEqualGUID(guidService, __uuidof(IDataSourceCache)))

         {

              CIsapiWorker *pWorker = GetThreadWorker();

              if (pWorker)

              {

                   CDataSourceCache<> *pCache = NULL;
                   if (pWorker->GetWorkerData(_DATASOURCE_CACHE, (void **)&pCache))
                   {
                       *ppvObject = static_cast(pCache);
                       return S_OK;
                   }
              }
         }
         if(InlineIsEqualGUID(guidService,__uuidof(IUdl)) && 
              InlineIsEqualGUID(riid,__uuidof(IUdl)) )
         {
              return m_udl.QueryInterface(riid,ppvObject);
         }
         return baseISAPI::QueryService(guidService, riid, ppvObject);
}

ÎÒÃǵÄÓ¦ÓóÌÐòdllÖеĴúÂëÈçÏ£º

// HighPerformance.h : ¶¨Òå ATL Server ÇëÇó´¦Àí³ÌÐòÀà

//

#pragma once

#include "addrecord.h"
#include "../CommonServiceDefinition.h"
namespace HighPerformanceService
{
// webservice µÄËùÓÐ struct¡¢enum ºÍ typedefs Ó¦½øÈëÃüÃû¿Õ¼ä
// IHighPerformanceService - Web ·þÎñ½Ó¿ÚÉùÃ÷
//
[
     uuid("EECB2E3E-9CA8-4E07-8DE9-81A21E99E707"), 
     object
]
__interface IHighPerformanceService
{
     [id(1)] HRESULT AddNewStudent([in]BSTR Name,[in]BSTR Age,[in]BSTR Gender,[in]BSTR Address);
};
// HighPerformanceService - Web ·þÎñʵÏÖ
//
[
    request_handler(name="Default", sdl="GenHighPerformanceWSDL"),
     soap_handler(
         name="HighPerformanceService", 
         namespace="urn:HighPerformanceService",
         protocol="soap"
     )
]

class CHighPerformanceService :
     public IHighPerformanceService
{
public
     HTTP_CODE InitializeHandler(AtlServerRequest *pRequestInfo, IServiceProvider *pProvider)
     {
         if (HTTP_SUCCESS != CSoapHandler::InitializeHandler(pRequestInfo, pProvider))
              return HTTP_FAIL;
         CComPtr spUdl;
         HRESULT hr=pProvider->QueryService(__uuidof(IUdl),&spUdl);
         if(hr!=S_OK)
              return HTTP_FAIL;
         CComBSTR connectstring;
         hr=spUdl->GetConnectString(&connectstring);
         if(hr!=S_OK)
         {
              return HTTP_FAIL;
         }
         if (S_OK != GetDataSource(  pProvider, 
                                          connectstring,
                                          connectstring, &m_dc ))
         {
              return HTTP_FAIL;
         }
         return HTTP_SUCCESS;
     }    
     [ soap_method ]
     HRESULT AddNewStudent(BSTR Name,BSTR Age,BSTR Gender,BSTR Address)
     {
         m_rec.SetStudentInfo(Name,Age,Gender,Address);
         HRESULT hr=m_rec.OpenRowset(m_dc);
         return hr;
     }
private:
     CDataConnection m_dc;
     CAddRecord m_rec;
     // TODO: ÔÚ´ËÌí¼ÓÆäËû Web ·þÎñ·½·¨
}; // Àà CHighPerformanceService
} // ÃüÃû¿Õ¼ä HighPerformanceService

Web Serviceµ÷ÊÔ

MSDNÌṩһ¸öÀý×Ó---SOAPDebugApp ʾÀý£ºÔÚ¿Í»§¶ËÄÚ´æ¿Õ¼äÖе÷ÊÔ XML Web services

µØÖ·£ºms-help://MS.MSDNQTR.2003FEB.2052/vcsample/html/vcsamsoapdebugappsample.htm

ÕâÖÖ·½Ê½²»Í¬ÕæÕýµÄWEBµ÷Ó㬶øÊÇͨ¹ýÖ±½Óµ÷ÓÃÓ¦ÓóÌÐòDLL£¬ÕâÖÖ·½Ê½ºÜºÃ£¬µ«ÊÇÓоÖÏÞÐÔ£¬ÓÉÓÚÎÒÃǵÄInitializeHandlerÒªÔÚÿ´Îµ÷ÓÃWEB·½·¨Ö®Ç°Ö´ÐУ¬²¢ÇÒÿ´Î¶¼Òª´ÓISAPIÀ©Õ¹DLLÏ̳߳ØÖдò½»µÀ£¬¶øÕâÖÖÄ£Äâµ÷Óò»»áµ¼ÖÂIIS¼ÓÔØISAPIÀ©Õ¹DLL¡£ËùÒÔ£¬InitializeHandler»áʧ°Ü£¬ÎÒÃǾÍûÓа취¶ÔWEB ·½·¨½øÐжϵã¸ú×Ù¡£½â¾öÖ®µÀÓÐÁ½ÖÖ£¬Ò»ÊÇÓÃÎļþÊä³öµÄ·½Ê½£¬¶øÊÇÏȲ»ÓÃÀ©Õ¹DLL»º´æ£¬µ±È·ÐÅÓ¦ÓóÌÐòDLLÒѾ­Ã»ÓÐÎÊÌâºó£¬ÔÙ½øÐÐÐ޸ġ£µ«ÕâÁ½ÖÖ·½·¨¶¼±È½ÏÂé·³£¬²»ÖªµÀ»¹ÓÐûÓиúºÃµÄ°ì·¨£¿

ÁíÍ⣬µ÷ÊÔµÄʱºòIISÈÝÒ׳öÏÖ²»Õý³££¬ÇëÓÃiisresetÃüÁîÖØÆô¡£

ÐÔÄÜÆÀ²â

ÎÒ±àд¿Í»§¶Ëµ÷ÓÃAddNewSutdent·½·¨£¬Ò»Çгɹ¦¡£Èý¸ö¿Í»§¶Ëͬʱ¸÷×ÔдÈë2Íò±Ê¼Í¼£¬×ÜÊý6Íò£¬ºÃ¼«ÁË¡£ÐÔÄܸоõ·Ç³£ºÃ¡£

   
2142 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ


²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí


GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí