Hi Guys,
How are you? , please read all before start respond :)

Again, I had some time to dig in FreeRDP to use it for one of my projects,
BUT once again I frustrated due to leak of info and complex design :( .


   - *What I planed to do:*

Due to current FreeRDP & FreeRDP-WebConnect design and implementation
(codeis too Mixed), I couldn't use it in my project (winservice) as it
writing in C# (also Java could not work as well), so I have to separate the
code in FreeRDP-WebConnect (and take ONLY the FreeRDP wrap) to be able to
use it in my own existed win service. I have a win service written in C#,
and already connected to website and implement its own websocket protocols
and p2p.


   - *Why I failed*

Due to current FreeRDP & FreeRDP-WebConnect design and implementation, it
is almost IMPOSSIBLE to use it easily but have to implement and/or connect
to libraries and re implement the long and complicate initialization.

So current FreeRDP-WebConnect is USELESS since it is not designed to be
reused by other languages/implementations, the implementation is a one
piece of code and almost impossible to take of only the FreeRDP wrapper and
move it to my project.

Lack of documentation, I could not find ANY thing that explain how to use
FreeRDP, what is the initialize steps and be able to call connect and get
updates to pass to client. The Windows wfreerdp project do some long steps
and FreeRDP-WebConnect also do some initialize that are not fully same as
wfreerdp.exe which a bit confuse.

If I or any other developer have some todo or list of steps instructions,
or API description for what each API do and what it required, it would
help, but couldn't find any of such documentation, API names doesnot say
anything.

All code and example in windows which is my need to use freeRDP (the
important part, the server side) in c/cpp, and if I need to implement my
winservice in other language (C# or Java) I have to implement almost all
the structures (freerdp,context....) and almost re write everything
(structures), this is insane.
This seems by the way the reason why C# freeRDP project not maintained
since 2 years ago, TOO many changes to do, and TOO many structures to
implement.

I CAN'T compile webConnect yet in my windows, and NO instruction yet to
explain how to do it, mean impossible also to debug :(

   -
*What I suggest *

As I said, the current implementation demand me to rewrite the steps of
initialization (without documentation, so impossible to understand, what
steps is mandatory...)

So, the correct way to design and implement the freeRDP-WebConnect, is to
split it into 3 parts:
1. win service
2. Communication module (DLL) - Low priority, but will be great idea, so
anyone can implement an interface for send/receive data throw their own
implementation (WebSocket , P2P, WebRTC....)
*3. FreeRDP wrapper (DLL): the most important part, that implement all need
and provide very simple API:*

HANDLE bellow can be int

3.1. HANDLE Init (setting) :
Initialize the instance if need (may not need this API).
return NULL if failed, otherwise the freeRDP handle or index of the
instance in dictionary (handle the FreeRDP/Context instance) -> for multi
session support

3.1. int InitAsync (setting) :
Same as above but in this case do not wait until all done, it return action
ID ,then need to add callback such as void OnNotify (ID, enum status) to
inform the winservice or caller that the init action done.

3.2. int Login (HANDLE ,username,password,domain);
maybe return sessionID or 0 if pass otherwise if failed

3.3. int logout(HANDLE and/or username or sessionID)
3.4. Destroy(HANDLE);

3.5. OnXXXXX(HANDLE,xxxxx)  : Callbacks for Update/events

I can provide more info, but what I think is that since win service may run
in server, and may need to connect to multi users, so need to implement a
sessions dictionary inside this wrraper to be able to create multi
instances, and each session will create new instance of freeRDP/Context...
Do I miss anything?


   -
*What the benefit of my suggestion *

1. multi session support
2. modulearity -> maintanace -> reusable: can replace/maintain each module
easily, in diff language, and easily compile separate parts/modules
3. Reuse
4. Add support: implement and improve network protocols, someone expert on
WebRTC for example (or any other network protocol including maybe improving
such as CRC, compression....), can help and implement the interface and add
new support to Communication module *without NEED* to understand or know
how freeRDP implemented/work.


   -
*Your opening / Suggestions / How you can help me to do that *

Again, I can't and have no idea how to compile webConnect, I can't debug
and use it, I even think as I saw it is NOT support multi session so
basically if this is true, it is USELESS (and So bad, i would be huge use,
especially during the mobile and web workforce need, this would be a killer
open source)


   1. Do I missed anything?
   2. Anyone think I'm not correct?, why?
   3. Anyone can help me to wrapper the freeRDP to create *A SEAMLESS EASY
   TO USE* library (especially without need to implement all the complex
   structures such as context, freerdp ... that each pull the need to
   implement few others, and without the long initialization steps that no
   need to RE IMPLEMENT each time in each project... *all we needed is
   Login / Logout / OnUpdate / or maybe other OnEvent *
   4. Instructions to compile only this wrapper using the freeRDP dlls/libs
   binaries, so ANY one can easily help debug, fix and reuse it.
   5. Then we can define the Communication module interface and implement
   it separately I can implement Websocket and P2P (WebRTC)
   6. And finally the general easy, clean, simple win service that anyone
   can easily change or replace.


I really appreciate your great and amazing work, but I deeply believe that
making things easy and seamless, would take this useful project to the next
level, especially on those days where visualization combining the mobile
workforce is in growth.


Cheers,
Joseph
------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
FreeRDP-devel mailing list
FreeRDP-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to