Je suis l'une des grandes masses non innovées de développeurs .NET souhaitant essayer leurs mains au développement de Mac OS X. Pour le moment, j'essaie de comprendre les différents éléments du cacao et d'obtenir un peu sur les données de base. P>
J'ai remarqué que la majeure partie de la documentation et des ressources disponibles sur le Web impliquent un large didacticiel de bout en bout, en commençant par des modèles, générer des classes, une interface utilisateur basée sur des documents, etc., il semble suffisant de se concentrer sur chaque morceau, ou au moins pas assez d'exemples. p>
Quelqu'un peut-il me dire dans la bonne direction, que ce soit des matières ou des livres en ligne, cela peut me donner une instruction détaillée de divers bits? Peut-être que je suis coincé dans le monde .net, mais je pense toujours en termes de couche d'accès aux données, etc. J'aimerais connaître les bases de "CRUD", dans la mise en place d'un magasin persistant, créant une entité, édition, sauvegarde stocker, etc. Juste des bases, sans élaborer l'interface utilisateur. Il serait également agréable si je peux tester les différents bits. P>
Je suppose que j'essaie d'entrer dans le bon état d'esprit ici - Faites n'importe quel fichier .NET Devs Connaissez-vous de matériel de lecture approprié pour les personnes comme nous en regardant la programmation de cacao? P>
Merci beaucoup, Dany. P>
6 Réponses :
Je prendrais la route suivante: p>
lecture supplémentaire:
Comme toujours: le livre Programmation de cacao pour Mac OS X
Et enfin: un comparaison entre certains aspects du cacao et .net p>
Absolument pas. Comme les données de base, les liaisons de cacao ne sont pas une technologie d'entrée de gamme. Vous devriez prendre un itinéraire beaucoup plus long entre le début du cacao et utiliser des liaisons ou des données de base. Et vous ne devez certainement pas combiner des données de base et des liaisons de cacao jusqu'à ce que vous ayez une compréhension solide de chacun.
Pour les écrous et les boulons, vous pouvez trouver d'Apple Basics de données de base utiles - Il y a aussi un didacticiel pour la construction d'un utilitaire d'interface graphique là-bas. P>
Premièrement, la documentation d'Apple (et les commentaires récurrents des ingénieurs Apple), les données de base sont une technologie de cacao "avancée". Les données de base de Grokking nécessitent une connaissance de nombreux paradigmes de cacao et des modèles. Sérieusement, apprenez le cacao d'abord. Ensuite, écrivez un projet (ou plusieurs) sans données de base. Puis apprenez les données de base. Sérieusement.
Pour calmer votre curiosité, je vais prendre un coup de poignard à la réponse crud, bien que ce ne soit pas la réponse que vous voulez. La réponse est qu'il n'ya pas de modèle de crud pour les données de base, du moins pas comme vous le pensez. La raison en est que les données de base ne sont pas une couche d'accès aux données. C'est un cadre de gestion des graphes d'objet. Cela signifie que le travail explicite, destiné à em> les données de base consiste à gérer un graphique des instances d'objet. Ce graphique a des contraintes (telles que la cardinalité des relations ou des contraintes sur les attributs d'instance individuelles) et les règles de cascade changements (tels qu'un Supprimer) via le graphique. Les données de base gèrent ces contraintes. Parce qu'un graphique d'objet peut être trop important pour être stocké en mémoire, les données de base fournissent une interface à votre graphique de votre objet qui simule [1] un graphique d'objet entier en mémoire via la défaillance (les instances d'objet ne sont pas des "défauts" lors de la première introduction Contexte de l'objet et sont "tirés" pour peupler leurs attributs du magasin persistant paresseusement) et uniquant (une seule instance en mémoire d'une instance d'entité particulière (dans le magasin persistant) est créée dans le contexte). P> Les données de base Just arrive em> pour utiliser un magasin persistant sur disque pour implémenter l'interface d'un graphique d'objet important. Dans le cas d'un magasin SQLITE persistant, cette implémentation arrive em> pour utiliser une base de données compatible SQL. Ceci est un détail de mise en œuvre, cependant. Vous pouvez, par exemple, créer un magasin persistant en mémoire qui ne persiste rien au disque, mais permet aux données de base de gérer votre graphique d'objet comme d'habitude. Ainsi, les données de base ne sont pas vraiment une couche d'accès aux données. Penser à cela dans ces termes manquera son vrai pouvoir et conduira à la frustration. Vous ne pouvez pas utiliser de données de base avec un schéma de base de données arbitraire (c'est la raison pour laquelle tous les didacticiels de données de base commencent par la création du NSManèdeObjectModel). Vous ne devez pas utiliser de données de base comme cadre de persistance et utiliser une couche de modèle distincte; Vous devez utiliser des données de base comme couche de modèle et profiter de la capacité de la base de données à persister le graphique de l'objet du modèle sur le disque pour vous. p> qui dit, pour créer un (Notez que je suppose que vous utilisez la collection de la poubelle; ce code fuit dans un environnement de gestion de la mémoire manuelle). p> Pour ajouter une instance d'entité (en continu avec Notez que vous besoin < / em> une description d'entité pour créer un objet géré (pourquoi les tutoriels commencent par le modèle) et que vous ne pouvez pas créer d'objet géré sans contexte d'objet géré. p> à mettre à jour une instance d'entité: p> pour supprimer une instance d'entité: p> [1]: pour les magasins persistants binaires ou XML, le graphique entier est em> stocké dans la mémoire p> p> nsmanagedObjectContext code> (qui Fournit l'interface d'objet graphique que j'ai décrite ci-dessus): p> moc code> d'en haut): p>
Merci Barry - c'est une réponse fantastiquement détaillée. Merci encore d'avoir pris le temps. Maintenant, je comprends que ma mauvaise idée dans la pensée des données de base est une "dal" en tant que telle. Ayant dit que cela pose la question - "Comment va-t-elle construire une application à forte intensité de données / axée?" Cela ne me dérange pas vraiment si c'est un développement dirigé par le domaine ou dirigé par le domaine, de toute façon conviendra, mais je devrai certainement persister une quantité considérable de données dans une base de données (de préférence MySQL car elle est similaire à celle du serveur SQL I ' m habitué). Quelles sont les meilleures pratiques dans la création de telles applications dans le monde du cacao?
BTW, j'essaie simplement d'obtenir une vue générale plus large afin que je puisse potentiellement comprendre quel chemin je veux prendre. Merci...
Wow, cela ouvre une grosse bonne canette de vers. Je vais essayer de mettre vos options dans une seconde réponse.
Ne ressemble pas à quelqu'un mentionné ces livres encore: p>
Core Data est vraiment pas une couche d'accès aux données (voir mon autre réponse pour plus). Mais que faire si vous voulez em> une couche d'accès aux données pour le cacao? Quelles sont vos options? Je suis un développeur professionnel Cocoa et Qt et jusqu'à présent, je suis parvenu à éviter le monde de l'entreprise Windows ou Java, donc mon évaluation des options peuvent ne pas correspondre à la vôtre exactement. Venant d'un écosystème de l'entreprise-y, je vous attends trouverez les options un peu effrayant. Je les ai commandé dans ce que je pense sera plus au moins effrayant pour vous (à peu près plus au moins Cocoa-y, et donc aussi à peu près plus au moins familier pour moi). Trouvez la place sur la liste où s'arrête l'estomac titubant et vous avez trouvé votre solution ... p>
Bien que Core Data est un cadre très puissant pour gérer le graphe d'objet du composant de modèle d'une architecture MVC, vous n'êtes pas obligé de l'utiliser. Vous pouvez écrire votre propre couche de modèle et jouent encore dans le monde Cocoa MVC. Voici comment nous l'avons fait avant de base de données. Vous pouvez toujours utiliser le cacao BaseTen cadre est une licence commerciale de base API comme les données sur un serveur PostgreSQL. Il est vraiment plus d'un ORM qu'un cadre de gestion du graphe d'objet comme base de données, mais l'API est similaire. Je crois comprendre qu'il peut gérer le schéma existant (arbitraire) ou de faire usage de modèles d'objets gérés de base de données. Ils fournissent leur propre Le pont Python-Objective-C, appelé PyObjC, est arrivé à maturité tout à fait et livré avec OS X 10.5 depuis. L'utilisation de ce pont, vous pouvez écrire des applications complètes de cacao en Python ou écrire un hybride Python / app Objective-C. En utilisant PyObjC, vous pouvez utiliser l'un des ORM Python tels que SQLAlchemy pour mettre en œuvre votre couche de modèle. Encore une fois, non pas de travail, mais peut-être encore relativement facile pour un programmeur Python compétent et Cocoa. P> li>
Enterprise Framework Object d'Apple, une partie de WebObjects, est maintenant un Java ORM qui a un objectif-C ORM dans sa lignée. Vous pouvez, je crois, encore bureau écrire des applications en utilisant WebObjects. Je comprends que de nombreux modèles de cacao portent sur, mais c'est une bête très différente. Je ne l'ai jamais écrit le code WebObjects, donc je ne peux pas vous donner beaucoup plus de conseils sur celui-ci. P> li>
Vous pouvez utiliser une boîte à outils multi-plateforme. Qt peut produire décent regarder Mac UIs (bien que voir ci-dessous). Qt dispose également d'un cadre-couche de modèle qui inclut le support SQL pour plusieurs bases de données en le module QtSql . Qt est pas Cocoa tout em>. Les utilisateurs de Mac ne savy pas comme des applications non natives. Qt est à peu près aussi bon qu'il obtient pour multiplateforme sur OS X, mais pas parfait. Si vous pouvez rester natif, faites-le. P> li>
Toute la merde Java Swing / SWT. Encore une fois, cela est quelque chose de puissant, mais il semble que l'enfer sur le Mac et les utilisateurs ne l'aime pas. P> li>
Mono sur OS X est relativement immature et je ne sais pas ce que l'état d'un des ORM .Net sont sur Mono. Il est quelque chose à jeter un oeil à bien. En ce qui concerne l'interface utilisateur, les choses Mono-GTK semble assez mauvaise sur OS X. Il est un C # obligatoire pour Qt appelé Qyoto qui fonctionne sur Mono. P> li>
ol>
NSObjectController code>, NSArrayController code> et NSTreeController code> si vous voulez. Ainsi, vous pouvez rouler votre propre couche d'accès aux données en utilisant les API C / C ++ natif de votre fournisseur de base de données. P> li>
NSArrayController code> sous-classe que vous pouvez utiliser comme une baisse de remplacement pour le contrôleur RAID de Cocoa. Je ne l'ai jamais utilisé BaseTen personnellement, donc je ne peux pas parler à son utilité, mais je l'ai entendu de bonnes choses. Pour autant que je sais que PostgreSQL est ça. P> li>
Vous avez raison sur une chose - ça m'a certainement effrayé quelque peu! Je suppose que j'ai été un peu lavé au cerveau dans le monde des entreprises - Je devrais peut-être juste prendre quelques pilules de poussons et évaluer calmement ce que je dois travailler avec. J'ai pris un autre conseil d'ici et j'ai acheté la "Programmation de cacao pour Mac OS X", le temps d'être un véritable noob et d'apprendre tout correctement - depuis que je devais faire cela: o) merci.
Apple vend des appareils électroménagers et des produits de célébrités (Hollywood) ils n'ont absolument rien à voir avec le développement d'entreprise Le cacao a été abandonné avant même d'être fini pour le cacao opportuniste Si vous recherchez quelque chose à Delphi / VCL ou .NET NIVEAU, bonne chance à vous (ils n'ont rien de ce genre) p>
ps C'est pourquoi Apple n'a aucun dicton sur le côté du serveur et / ou du côté de l'entreprise, c'est-à-dire qu'ils n'ont aucune idée et ils ne le feront jamais. C'est-à-dire qu'ils sont dans une entreprise différente. Même leurs systèmes internes sont basés sur Linux (juste pour vous faire savoir!) P>
Comme la documentation indique clairement, les données de base ne sont pas une technologie débutante. Apprenez d'abord les bases du cacao avant de tenter la date de base.
Je vais second ce que Mike a dit. Les données de base ne sont pas où vous devriez commencer avec cacao.