RMI
ProudNetμ μ체 κ°λ°λ Remote Method Invocation(RMI) μμ€ν μΌλ‘, κΈ°μ‘΄μ ν΅μ©λλ IDL νμμ΄λ RMI μμ€ν λ³΄λ€ ν¨μ¬ λΉ λ₯΄κ³ κ°λ²Όμ°λ©° κ²μ κ°λ°μμλ 'ν¨μ νΈμΆ 리ν΄κ°'μ λΉλκΈ° RMIλ§ μ§μν©λλ€.
RMI ν¨μ κ·Έλ£Ή
0κ° μ΄μμ RMI ν¨μ μ§ν©μΌλ‘, PIDL νμΌμμλ global ꡬ문 λΈλμ ννμ λλ€.
global SimpleC2S
{
...;
}Proxyμμ RMI ν¨μλ₯Ό νΈμΆνλ©΄ μ¦μ 리ν΄ν©λλ€. κ·Έλ¦¬κ³ RMI ν¨μ μ€ν κ²°κ³Όλ₯Ό Proxy μΈ‘μμ κΈ°λ€λ Έλ€κ° λ°μ§λ λͺ»ν©λλ€.
RMI λ©μλ μΈμ μμ±
λ©μλ μΈμμλ μμ± μ μκ° λ€μ΄κ°λ©° κ° νλΌλ―Έν°λ§λ€ ν κ° μ΄μ μΈ μ μμ΅λλ€.
// μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ RMI λ©μλλ₯Ό μ μΈνλ©΄
Test([in] Proud::String a,[in] int b,[in] float c);
// λ€μκ³Ό κ°μ C++ codeκ° μμ±λ©λλ€.
Test(Proud::HostID remote, Proud::RmiContext& rmiContext, const Proud::String& a, const int& b, const float& c);
// cs νμΌλ‘ μ¬μ©ν κ²½μ°μ Proud::Stringμ System.StringμΌλ‘ λ체νλ€λ μλ―Έ
rename cs(Proud::String, System.String);
...
// μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ RMI λ©μλλ₯Ό μ μΈνλ©΄
Test([in] Proud::String a,[in] int b,[in] float c);
// λ€μκ³Ό κ°μ C# codeκ° μμ±λ©λλ€.
Test(Nettention.Proud.HostID remote,Nettention.Proud.RmiContext rmiContext, String a, int b, float c);
λλΆλΆμ κ²½μ° RMI λ©μλμ μΈμμ μμ±μ in λ§μ μ¬μ©ν©λλ€.
- byval μμ±
μΈμκ° by valueλ‘ μ λ¬λ¨μ μλ―Ένλ©° μ΄κ²μ΄ μ¬μ©λλ©΄ C++ proxy λ° stubμμ μΈμ νμμ & λΆνΈκ° μλ΅λ©λλ€. intλ float λ± μΈμ νμμ ν¬κΈ°κ° μμ νμμ μ ν©ν©λλ€.
- mutable μμ±
μΈμκ° const typeμ΄ μλμ μλ―Ένλ©° μ΄κ²μ΄ μ¬μ©λλ©΄ C++ proxy λ° stubμμ μΈμ νμμ const ν€μλκ° μλ΅λ©λλ€. RMI stubμμ λ°μ μΈμμ κ°μ λ³κ²½νκ³ μ ν λ μ ν©ν©λλ€.
μ΄μ’
μΈμ΄λ‘ λ νλ‘κ·Έλ¨ κ° ν΅μ νκΈ°
λ νλ‘κ·Έλ¨μ΄ ProudNetμΌλ‘ ν΅μ νλ μλ‘ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄λ‘ λ§λ€κ³ μΆμ λκ° μμ΅λλ€. μ΄λ¬ν κ²½μ° PIDL μ»΄νμΌλ¬λ λ κ° μ΄μμ μΈμ΄λ‘ λ proxyμ stubμ μμ±ν ν κ° νλ‘κ·Έλ¨μ νμν κ²μ κ°μ Έλ€ μ°λ©΄ λ©λλ€.
int, double, string λ± κΈ°λ³Έ νμ μ λν΄μλ ProudNetμ C++ μΈμ μΈμ΄λ₯Ό μν λν λͺ¨λμμ μ΄λ―Έ μ 곡νκ³ μμ΅λλ€. νμ§λ§ μΈμ΄κ° μλ‘ λ€λ₯΄λ©΄ μ΄λ¬ν κΈ°λ³Έ νμ μ μ΄λ¦μ΄ κΈ°λ³Έμ μΌλ‘ λ¬λΌμ§κΈ° λ§λ ¨μ λλ€. μλ₯Ό λ€μ΄ C# μ λ¬Έμμ΄ ν΄λμ€κ° System.String μΈλ°, C++μμλ std::string, std::wstring, ATL::CString, Proud::Stringμ λλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ PIDL μ»΄νμΌλ¬λ μ¬μ©μκ° μν κ²½μ° μμ±λλ proxy, stubμμ λ³μ νμ μ νΉμ μΈμ΄μ νν΄μ λ³κ²½νλ κΈ°λ₯μ μ 곡νκ³ μμ΅λλ€.
μλλ μ¬μ© μμ λλ€.
RMI λ©μμ§ λ²μ
κ° RMI ν¨μ μ μΈμ 1κ°μ λ©μμ§ νμ μ κ°μ§λλ€. ProudNetμ λ©μμ§ νμ μ 6λ§ μ΄νμ λ²μμμ μ¬μ©μκ° κ²°μ νλ©° μ΄ λ²μλ μ¬μ©μκ° .pidl νμΌμ μμ±μμ ν©λλ€.
1.7.42965-master λ―Έλ§μ λ²μ μμλ 1,300 ~ 60,000 λ²μμ κ°μ μ¬μ©νμ μΌ λ©λλ€.
κ° RMIμ λ©μμ§ νμ κ°μ μλ μλμ κ°μ΅λλ€.
κ°κ°μ ν¨μλ λ©μμ§ νμ κ°μ΄ νλμ© μ¦κ°ν©λλ€. κ·Έλ¦¬κ³ λ§μ§λ§μΌλ‘ μ μΈλ RMI ν¨μμ λ°°μ λ νμ κ°κΉμ§λ₯Ό λ©μμ§ λ²μλΌκ³ μΉνκ² μ΅λλ€. μμ μμμμ 2,000 ~ 2,003μ΄ SampleRMIλ₯Ό μν λ©μμ§ λ²μμ λλ€.
μμ±λ Proxyμ Stubμ Proud.CNetClient , Proud.CNetServer , Proud.CLanClient , Proud.CLanServer μ attach νλ©΄ κ° RMI function group λ€μ λ©μμ§ λ²μκ° Proud.CNetClient , Proud.CNetServer , Proud.CLanClient , Proud.CLanServer μ μμ½λ©λλ€.
λ§μ½ attach ν proxyμ stubλ€μ λ©μμ§ λ²μκ° κ²ΉμΉλ κ²λ€μ΄ μμΌλ©΄ AttachProxy() λ AttachStub() μ exceptionμ λ°μμν¬ κ²μ λλ€.
νμ©
RMI νμ©λ²Last updated
Was this helpful?