Make the Cannoli Shells: Pulse the flour, sugar, salt, cinnamon, and baking soda in a food processor until combined, 5 to 6 times. Add the butter, and pulse until thoroughly combined, 3 to 4 times. Add the Marsala and egg yolk; process until the dough can be gently pressed into a ball, about 10 seconds. Turn the dough out onto a piece of plastic wrap, and shape into a flat disk. Let stand at room temperature for 1 hour.
Pour the oil to a depth of 2 inches into a large Dutch oven. Heat over medium to 350°F.
Meanwhile, roll half of the dough into a very thin circle on a lightly floured surface. Cut the dough with a 31/2-inch round cutter; reroll the dough scraps once, and cut as many more circles as possible. Discard any remaining dough scraps. Repeat with remaining half of the dough.
Wrap 1 dough circle around each cannoli tube. Lightly moisten 1 edge with water, and press the edges together very firmly to seal. (If it is not well sealed, it will open during frying.) Fry the dough and cannoli tubes in the hot oil until golden brown, about 45 seconds. Using tongs, carefully remove from the hot oil. Remove the tubes from the shells, and place the shells on a paper towel-lined baking sheet to drain. Transfer to a wire rack, and cool completely, about 10 minutes. Repeat with remaining dough circles.
Make the Filling: Drain the ricotta in a fine wire-mesh strainer forabout 30minutes. Combine the drained ricotta, 3/4 cup powdered sugar, orange zest, vanilla, and almond extract in a bowl; stir until smooth. Stir in the chocolate.
Spoon the ricotta mixture into a pastry bag fitted with a 1/4-inch round tip. Pipe the ricotta mixture into the cannoli shells; arrange on a platter, and dust with the powdered sugar. Serve immediately.