Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Зачем сейчас нужен COM Interface?

519  
AlexNek патриот08.05.21 12:03
AlexNek
08.05.21 12:03 

Странная прога попалась. Гибрид шарпа и плюсов.

Ехе на плюсах видимо, вызывает винформс гуй через СОМ интерфейс.

Если бы были просто вычисления можно было думать, что хотят OLE automation, но вот какого для UI так сделано? И зачем гибрид?

Есть идеи?

#1 
Murr патриот08.05.21 17:44
Murr
NEW 08.05.21 17:44 
в ответ AlexNek 08.05.21 12:03

И зачем гибрид?

-----

А ежели по-другому не умеют? безум

#2 
Wanderer_ завсегдатай08.05.21 17:45
NEW 08.05.21 17:45 
в ответ AlexNek 08.05.21 12:03

Может это С++/CLI?

#3 
AlexNek патриот08.05.21 19:50
AlexNek
NEW 08.05.21 19:50 
в ответ Wanderer_ 08.05.21 17:45

Не думаю. У меня есть только Setup. В каталоге после установки ехе и длл-ки. В ддл-ках винформс с СОМ-ом кое где, почти все ехе нативные.

Описание на 1000 страниц, даже не успел еще посмотреть.

#4 
AlexNek патриот08.05.21 19:52
AlexNek
NEW 08.05.21 19:52 
в ответ Murr 08.05.21 17:44
А ежели по-другому не умеют

Похоже уровень нормальный. Тут или по историческим причинам, или для чего то непонятного.

#5 
Murr патриот08.05.21 20:48
Murr
NEW 08.05.21 20:48 
в ответ AlexNek 08.05.21 19:52

или для чего то непонятного

------

Один раз Я такое делал - Вин-формы имплементированные в АктивХ.

Там требовалось :

1. сделать чтобы работало

2. имплементировать для Винды

3. имплементировать для Веб.

Имплементация для Веб была простым врапером АктивеХ - благо от меня требовалось только поставить галочку в пропертяx...

#6 
AlexNek патриот08.05.21 21:09
AlexNek
NEW 08.05.21 21:09 
в ответ Murr 08.05.21 20:48

То бишь, если обвернуть винформс в АктивеХ их можно в веб странице запустить? И они будут иметь прямой доступ ко всем ресурсам компа?

Тогда может быть, надо глянуть...

#7 
Murr патриот08.05.21 22:06
Murr
NEW 08.05.21 22:06 
в ответ AlexNek 08.05.21 21:09

И они будут иметь прямой доступ ко всем ресурсам компа?

-----

А Я разве где-то об этом говорил?

У меня формы через ДКОМ работали - тогда еще про веб-сервисы ничего не знали... 2001...

#8 
AlexNek патриот08.05.21 22:16
AlexNek
NEW 08.05.21 22:16 
в ответ Murr 08.05.21 20:48

Да, очень похоже по атрибутам


[ComVisible(true)]

[ClassInterface(ClassInterfaceType.None)]

[ComSourceInterfaces(typeof(xxx))]

[Guid("6D4473CB-E3D9-4C49-BF89-E4C3763A9291")]

[ProgId("xxxxx")]

#9 
AlexNek патриот08.05.21 22:40
AlexNek
NEW 08.05.21 22:40 
в ответ Murr 08.05.21 22:06
А Я разве где-то об этом говорил?

нет, но без доступа к ресурсам это смыла не имеет. Но похоже, что это именно так.


Правда, пока не могу понять какой смысл запускать всё приложение как активеХ в браузере.

#10 
Murr патриот09.05.21 01:07
Murr
NEW 09.05.21 01:07 
в ответ AlexNek 08.05.21 22:40

не могу понять какой смысл запускать всё приложение как активеХ в браузере

------

Во первых - не все приложение, а конкретный АктивХ-компонент.

Во вторых - далеко не всякий заказчик в то время понимал разницу между Вин- и Веб-... а то, что наработанное под Вин- использовалось под Веб- это уже прорывная технология...

#11 
AlexNek патриот09.05.21 12:43
AlexNek
NEW 09.05.21 12:43 
в ответ Murr 09.05.21 01:07
Во первых - не все приложение, а конкретный АктивХ-компонент.

А если конкретный АктивХ-компонент - это Application wrapper тогда как?

#12 
Murr патриот09.05.21 19:41
Murr
NEW 09.05.21 19:41 
в ответ AlexNek 09.05.21 12:43

Я такое не тестил.

В влюбом случае - будет возможность взаимодействовать с этим из вне.

#13 
AlexNek патриот09.05.21 21:32
AlexNek
NEW 09.05.21 21:32 
в ответ Murr 09.05.21 19:41

А можно список операций глянуть смущ

    IScriptingWorkspace_CS ScriptingWorkspace { get; }

    IAnalysisWorkspace_CS AnalysisWorkspace { get; }

    IGraphicalUserInterface_CS GraphicalUserInterface { get; }

    void OpenWorkspace(string nameOfWorkspaceFile);

    void SaveWorkspaceAs(string nameOfWorkspaceFile);

    void CloseWorkspace();

    void RunAutoConfiguration();

    void RunScript(string nameOfScriptToRun);

    void Quit();

    void Hide();

    void Show();
...
#14 
uscheswoi_82 свой человек11.05.21 21:17
uscheswoi_82
NEW 11.05.21 21:17 
в ответ AlexNek 08.05.21 12:03
Зачем сейчас нужен COM Interface? Есть идеи?

Возможно чтобы программисту не мучиться... с:

using System.Runtime.InteropServices;
...
[DllImport("User32.dll")]
public static extern int MessageBox(int hwnd, String text, String caption, int type);
...


В Википедии ведь написано, что это на подобие ООП (полиморфизм и инкапсуляция), и используется допустим в DirectX. Во времена MFC 4.x помойму обращались к СУБД (ODBC) через специальную библиотеку DCOM, а по другому только через Visual Basic или FoxPro.В Википедии так-же написано:

В 2002 году была официально выпущена платформа Microsoft .NET, которая на сегодняшний день объявлена Microsoft рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в .NET включены и средства, позволяющие обращаться к компонентам COM из приложений .NET, и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и .NET являются отлично взаимодополняющими технологиями.
кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#15 
AlexNek патриот11.05.21 21:26
AlexNek
NEW 11.05.21 21:26 
в ответ uscheswoi_82 11.05.21 21:17

Они просто хотят из питона и ВБ скриптов вызывать части программ.

#16